SpringMvc响应数据及结果视图实现代码
响应数据和结果视图
返回值分类
controller 方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。
//指定逻辑视图名,经过视图解析器解析为 jsp 物理路径:/web-inf/pages/success.jsp
@requestmapping("/testreturnstring")
public string testreturnstring() {
system.out.println("accountcontroller 的 testreturnstring 方法执行了。。。。");
return "success"; }
运行结果:
@requestmapping("/testreturnvoid")
public void testreturnvoid(httpservletrequest request,httpservletresponse response)
throws exception {
}在 controller 方法形参上可以定义 request 和 response,使用 request 或 response 指定响应结果:
1、使用 request 转向页面,如下:
request.getrequestdispatcher("/web-inf/pages/success.jsp").forward(request,
response);
2、也可以通过 response 页面重定向:
response.sendredirect("testretrunstring") 3、也可以通过 response 指定响应结果,例如响应 json 数据:
response.setcharacterencoding("utf-8");
response.setcontenttype("application/json;charset=utf-8");
response.getwriter().write("json 串");
modelandview 是 springmvc 为我们提供的一个对象,该对象也可以用作控制器方法的返回值。
该对象中有两个方法:
实例代码:
//返回值为modelandview @requestmapping("/test01") public modelandview test01(){ user user = new user(); // user.setuname("张三"); user.setage(12); modelandview mv=new modelandview(); mv.addobject("user",user); mv.setviewname("ok"); return mv; } ok.jsp代码: <%@ page contenttype="text/html;charset=utf-8" language="java" iselignored="false" %> <html> <head> <title>title</title> </head> <body> <h1>入门成功</h1> ${user.uname} ${user.age} </body> </html>
forward转发
//forward转发方式 @requestmapping("/test02") public string test02(){ system.out.println("forward"); return "forward:/web-inf/pages/ok.jsp"; }
需要注意的是,如果用了 formward:则路径必须写成实际视图 url,不能写逻辑视图。它相当于“request.getrequestdispatcher("url").forward(request,response)”。使用请求转发,既可以转发到 jsp,也可以转发到其他的控制器方法。
redirect 重定向
@requestmapping("/test03") public string test03(){ system.out.println("redirect"); return "redirect:/index.jsp"; }
它相当于“response.sendredirect(url)”。需要注意的是,如果是重定向到 jsp 页面,则 jsp 页面不能写在 web-inf 目录中,否则无法找到。
responsebody 响应json 数据
作用:
该注解用于将 controller 的方法返回的对象,通过 httpmessageconverter 接口转换为指定格式的
数据如:json,xml 等,通过 response 响应给客户端
需求:
使用@responsebody 注解实现将 controller 方法返回对象转换为 json 响应给客户端。
前置知识点:
springmvc 默认用 mappingjacksonhttpmessageconverter 对 json 数据进行转换,需要加入jackson 的包。
@requestmapping("/test04") public @responsebody user test04(@requestbody user user){ system.out.println("运行"); user.setage(13); user.setusername("张三"); user.setpassword("12346845"); return user; } jsp中的代码: <script src="${pagecontext.request.contextpath}/js/jquery.min.js"></script> <script type="text/javascript"> $(function () { $("#open").click(function () { $.ajax({ url:"${pagecontext.request.contextpath}/user/test04", contenttype:"application/json;charset=utf-8", data:'{"username":"hehe","password":"123456","age":12}', type:"post", datatype:"json", success:function (data) { alert(data); alert(data.username); alert(data.password); alert(data.age); } }); }); })
结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。