zoukankan      html  css  js  c++  java
  • 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会拦截到所有的资源,导致一个问题就是静态资源(imgcssjs)也会被拦截到,从而

    不能被使用。解决问题就是需要配置静态资源不进行拦截,在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对象互相转换的过程中,需要使用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;
    }
      
  • 相关阅读:
    企业如何搭建数据分析平台
    如何查看Android设备上的分区信息
    从传统企业谈大数据的战略意义
    金融行业的BI应用分析
    Android 5.x 权限问题解决方法
    unity使用ugui自制调色面板
    手机模式及分区
    高通8x12平台开机画面制作工具
    Unity插件
    Android开发小问题集
  • 原文地址:https://www.cnblogs.com/zhaoyunlong/p/10920321.html
Copyright © 2011-2022 走看看