spring MVC 返回值信息和ResponseBody的响应json数据

 

 

spring mvc的界面返回:javascript

若是咱们定义的返回类型是String 那么咱们返回的时候直接写入 咱们的界面的名字就能够了  springmvc会自动去找到咱们的界面,若是是void类型的返回那么 是没有返回值的,若是没有返回值这个时候咱们定义了 请求信息可是没有返回 跳出去那么 就会报错  就须要自定义界面返回css

 

    /**
     * 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;
}

 

还能够进行界面重定向html

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

 

 

ModelAndViewjava

返回值也能够直接定义是ModelAndView 的类型而不是字符串web

 

    @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数据
ajax

 

1. DispatcherServlet会拦截到全部的资源,致使一个问题就是静态资源(imgcssjs)也会被拦截到,从而 spring

不能被使用。解决问题就是须要配置静态资源不进行拦截,在springmvc.xml配置文件添加以下配置 1. mvc:resources标签配置不过滤 json

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对象互相转换的过程当中,须要使用jacksonjar

 
<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;
}
  
相关文章
相关标签/搜索