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);

}

});

});

})

结果:

以上是 SpringMvc响应数据及结果视图实现代码 的全部内容, 来源链接: utcz.com/z/352806.html

回到顶部