Spring MVC响应数据方式

  • 返回值分类

    • String类型:是将控制器的相关的Sting类型的值在视图中展示。可以使用关键字跳转页面:forward或redirect关键字加上冒号页面完整路径地址

      <a href="user/selectById">查询用户</a>
      import org.springframework.ui.Model;
      ​
      @Controller
      @RequestMapping(value="user")
      public class UserController{
          @RequestMapping(value="selectById")
          public String selectById(Model model){
              User user = new User();
              user.setUsername("胡先森");
              user.setPassword("12345");
              model.addAttribute("user", user);
              return "user"
          }
      }
      <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
      <html>
      <head>
          <title>用户</title>
      </head>
      <body>
          <h3>用户界面</h3>
          <ul>
              <li>用户信息</li>
              <li>用户名称:${user.username}</li>
              <li>用户密码:${user.password}</li>
          </ul>
          <a href="back">返回</a>
      </body>
      </html>
    • void类型:jsp页面的地址需要写全

      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      ​
      @Controller
      @RequestMapping(value="user")
      public class UserController{
          @RequestMapping(value="back")
          public void back(HttpServletRequest request, HttpServletResponse response) throw Exception{
              //请求转发编程,像这样的话,一般只能使用一次,建议不使用
              //request.getRequestDispatcher("/index.jsp").forword(request, response);
              
              //重定向,这个就可以使用,
              //response.sendRedirect(request.getContextPath()+"/index.jsp");
              
              //以上两种都是返回页面,下面这种是直接作出反应
              //设置中文乱码
              response.setCharacterEncoding("UTF-8");
              response.setContentType("text/html;charset=UTF-8");
              response.getWriter().print("Hello World!");
          }
      }
    • ModelAndView类型:返回这种数据类型是和第一种方式的功能一样的

      import org.springframework.web.servlet.ModelAndView;
      @Controller
      @RequestMapping("user")
      public class UserController{
          @RequestMapping("selectById")
          public ModelAndView selectById(){
              ModelAndView modelAndView =  new ModelAndView();
              User user = new User();
              user.setUsername("胡先森");
              user.setPassword("12345");
              modelAndView.addObject("user", user);
              
              //设置即将要跳转的页面
              modelAndView.setViewName("user");
              return modelAndView;
          }
      }
  • 响应json数据

    • 过滤静态资源

      • 创建静态资源目录,一般是在webapp目录下创建js、css、images等目录

      • 导入前端传来的参数封装成JavaBean对象所需的依赖包

        <!-- 前端参数转换JavaBean的封装 -->
            <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>
      • 在springmvc.xml配置文件配置前端控制器过滤静态资源

        <mvc:resources mapping="/js/**" location="/js/" />
      • 导入js文件,编写简单的ajax事件,像这种传值(前端的data)只能是以下的方式,才能前后台不报错

        <script src="js/jquery.min.js"></script>
        <script>
        $(function(){
            $("#btn").click(function(event){
                event.preventDefault();
                $.ajax({
                    url: "user/save",
                    type: "POST",
                    contentType: "application/json;charset=UTF-8",
                    dataType: "json",
                    data: '{"username":"胡先森", "password": "12345"}',
                    success: function(data){
                        console.log(data); //{"username":"胡先森", "password": "12345"}
                    }
                })
            })
        })
        </script>
        <form action="" method="">
            <input type="text" name="username" />
            <input type="text" name="password" />
            <input id="btn" type="submit" value="提交" />
        </form>
      • 控制器的方法实现

        @RequestMapping("save")
        public @Response User save(@RequestBody User user){
            System.out.println(user); //User{"username":"胡先森", "password": "12345"}
            return user;
        }
原文地址:https://www.cnblogs.com/aitiknowledge/p/12796498.html