spring MVC 返回值信息和ResponseBody的响应json数据
spring mvc的界面返回:
如果我们定义的返回类型是String 那么我们返回的时候直接写入 我们的界面的名字就可以了 springmvc会自动去找到我们的界面,如果是void类型的返回那么 是没有返回值的,如果没有返回值这个时候我们定义了 请求信息但是没有返回 跳出去那么 就会报错 就需要自定义界面返回
/** * void定义的方法是没有返回值的 如果我们想要定义返回值就需要 使用request和respone信息来进行定义 * @param request * @param response */ @RequestMapping("void") //controller请求 public void testvoid(HttpServletRequest request, HttpServletResponse response) throws Exception{ request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response); //你想要跳转的界面
return;
}
还可以进行界面重定向
response.sendRedirect(request.getContextPath()+"/index.jsp"); //因为不定直接请求到WEB-INF下的界面我们只能请求webapp下的了
界面直接输出:
@RequestMapping("/void")
public void testvoid(HttpServletRequest request, HttpServletResponse response) throws Exception{
// request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response); //你想要跳转的界面
//因为不定直接请求到WEB-INF下的界面我们只能请求webapp下的了
// response.sendRedirect(request.getContextPath()+"/index.jsp");
//设置中文乱码
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
//直接请求进行的响应
response.getWriter().print("hello"); //界面直接输出的是hello
return;
}
ModelAndView
返回值也可以直接定义是ModelAndView 的类型而不是字符串
@RequestMapping("/model") public ModelAndView testmodelandView(){ ModelAndView mv = new ModelAndView(); // modeladnView有两个我们常用的属性 User user = new User(); user.setUsername("老王"); user.setU_password("123456"); //addObject把一个对象传递到mv中然后添加到界面 mv.addObject("user",user); //设置跳转的界面 mv.setViewName("user"); return mv; }
ResponseBody响应json数据
1. DispatcherServlet会拦截到所有的资源,导致一个问题就是静态资源(img、css、js)也会被拦截到,从而
不能被使用。解决问题就是需要配置静态资源不进行拦截,在springmvc.xml配置文件添加如下配置 1. mvc:resources标签配置不过滤
1. location元素表示webapp目录下的包下的所有文件
2. mapping元素表示以/static开头的所有请求路径,如/static/a 或者/static/a/b
<!-- 设置静态资源不过滤 --> <mvc:resources location="/css/" mapping="/css/**"/><!-- 样式 -->
<mvc:resources location="/images/" mapping="/images/**"/> <!-- 图片 -->
<mvc:resources location="/js/" mapping="/js/**"/> <!-- javascript -->
使用@RequestBody获取请求体数据
// 页面加载 // 页面加载 $(function(){ // 绑定点击事件 $("#btn").click(function(){ $.ajax({ url:"user/testJson", contentType:"application/json;charset=UTF-8", data:'{"addressName":"aa","addressNum":100}', dataType:"json", type:"post", success:function(data){ alert(data); alert(data.addressName); } }); }); }); /**
上面是前端往后端发送数据那么是 json的 我们需要其余的包导入来进行转化
json字符串和JavaBean对象互相转换的过程中,需要使用jackson的jar包
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
controller获得请求体中的数据
* 获取请求体的数据 * @param body */ @RequestMapping("/testJson") public void testJson(@RequestBody String body) { // 利用RequestBody的信息来进行前端json信息的获取 System.out.println(body); // }
使用@RequestBody注解把json的字符串转换成JavaBean的对象
上面是取出数据 那么我们传递的数据怎么把它转化为 json呢 这个时候就要用到 @ResponseBody
@RequestMapping("/testJson")
public @ResponseBody Address testJson(@RequestBody Address address) {
System.out.println(address);
address.setAddressName("上海");
return address;
}

浙公网安备 33010602011771号