• SpringMVC学习02:响应数据和结果视图


    通过控制器方法返回值指定返回视图

    返回值为String

    返回值为String时转发到指定的url

    	/**
         * 返回值是String
         * @param model
         * @return
         */
        @RequestMapping(path = "/testString")
        public String testString(Model model){
            System.out.println("testString执行了");
            User user = new User();
            user.setUsername("cc");
            user.setPassword("666");
            user.setAge(20);
            model.addAttribute("user",user);
            return "success";
        }
    

    返回值为void

    返回值为void时,执行程序会报404的异常,因为默认jsp页面没有找到,也可以使用请求转发或者重定向跳转到指定的页面或者直接在页面上输出

    	/**
         * 返回值是Void
         * @param request
         * @param response
         * @throws Exception
         */
        @RequestMapping(path = "/testVoid")
        public void testVoid(HttpServletRequest request, HttpServletResponse response) throws Exception{
            System.out.println("testVoid执行了");
            //1.请求转发
            //request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);
            //2.重定向
            //response.sendRedirect(request.getContextPath()+"/index.jsp");
            //3.直接进行响应
            //设置解决中文乱码
            response.setCharacterEncoding("UTF-8");
            response.setContentType("text/html;charset=UTF-8");
            response.getWriter().println("你好");
        }
    

    返回值为ModelView

    ModelView是SpringMVC提供的一个对象,可以用来调整具体的jsp页面

    	/**
         * 返回值是ModelAndView
         * @return
         */
        @RequestMapping(path = "/testModelAndView")
        public ModelAndView testModelAndView(){
            ModelAndView mv = new ModelAndView();
            User user = new User();
            user.setUsername("cc");
            user.setPassword("888");
            user.setAge(20);
            //1.把user对象存储到mv中,mv会存到request域中
            mv.addObject("user",user);
            //2.跳转页面
            mv.setViewName("success");
            return mv;
        }
    

    利用SpringMVC提供的关键字进行请求转发或者重定向

    	/**
         * 利用关键字进行请求转发或者重定向
         * @return
         */
        @RequestMapping(path = "/testForwardOrRedirect")
        public String testForwardOrRedirect(){
            System.out.println("testForwardOrRedirect执行了");
            //1.请求转发
            //return "forward:/WEB-INF/pages/success.jsp";
            //2.重定向
            return "redirect:/index.jsp";
        }
    

    ResponseBody响应json数据

    项目准备

    1. 利用ajax向服务器发送json数据,需要在jsp页面上引入JQuery,而DispatcherServlet会拦截所有的资源,静态资源(js、css、imsges)也会被拦截到,导致不能使用,解决办法是配置静态资源不进行拦截,在resources目录下的SpringMVC.xml中添加配置

      <!--配置前端控制器,哪些静态资源不拦截-->
          <mvc:resources location="/js/" mapping="/js/**"/>
          <mvc:resources mapping="/css/" location="/css/**"/>
          <mvc:resources mapping="/images/" location="/images/**"/>
      
    2. 要将json字符串与实体类对象进行转换,需要导入jackson的jar包,在pom.xml中添加依赖坐标

      <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-annotations</artifactId>
          <version>2.9.0</version>
      </dependency>
      <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>
      

    在jsp页面利用ajax发送json数据

    <script src="js/jquery-3.4.1.min.js"></script>
        <script>
            $(function () {
               $('#btn').click(function () {
                  //发送ajax请求
                   $.ajax({
                       url:"user/testAjax",
                       contentType:"application/json;charset=UTF-8",//文件上传类型
                       data:'{"username":"chenpeng","password":"666","age":20}',//json数据
                       dataType:"json",//返回的数据类型
                       type:"post",//请求的方式
                       success:function (data) {//成功后的自调函数
                           //data服务器端响应的json的数据,进行解析
                           alert(data);
                           alert(data.username);
                           alert(data.password);
                           alert(data.age);
                       }
                   });
               });
            });
    </script>
    

    在控制器类中使用@ResponseBody注解将json字符串转换成实体类对象

    @RequestMapping(path = "/testAjax")
        public @ResponseBody User testAjax(@RequestBody User user){
            System.out.println("testAjax执行了");
            System.out.println(user);
            user.setUsername("cc");
            user.setPassword("123456");
            return user;
        }
    
  • 相关阅读:
    Objective-C中 Self和 Super详解
    OC类方法和实例方法中的self区别
    Objective-C----MRC内存管理 、 自动释放池 、 面向对象三大特性及封装 、 继承 、 组合与聚合
    Objective-C对象初始化 、 实例方法和参数 、 类方法 、 工厂方法 、 单例模式
    Objective-C语言介绍 、 Objc与C语言 、 面向对象编程 、 类和对象 、 属性和方法 、 属性和实例变量
    联合与枚举 、 高级指针 、 C语言标准库(一)
    C语言--- 字符串数组 、 预处理器和预处理指令 、 多文件编程 、 结构体
    C语言----变量及作用域 、 指针 、 指针和数组 、 进程空间 、 字符串
    iOS开发环境C语言基础 数组 函数
    ios开发环境 分支语句 、 循环结构(for) 、 循环结构
  • 原文地址:https://www.cnblogs.com/codeDD/p/12699115.html
Copyright © 2020-2023  润新知