目录
先创建一个jsp页面用于演示
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <html>
- <head>
- <title>展示数据title>
- head>
- <body>
- <h1>后端返回的信息:${message}h1>>
- body>
- html>
然后创建一个方法,返回该页面的路径
- public String showModel() {
- return "/WEB-INF/pages/showModel.jsp";
- }
在开发过程中,我们可以将数据放入request域中,然后再前端进行使用(如JSP)
第一种方式就是通过原生的servletAPI进行设置
- @RequestMapping("/f1")
- public String f1(HttpServletRequest request) {
- request.setAttribute("message", "Hello World!!!");
- return showModel();
- }
运行tomcat,访问该方法,成功设置域属性
我们在方法参数列表写上一个Map参数,我们只需要将数据放入map,该map的数据会自动放入request域
- @RequestMapping("/f2")
- public String f2(Map
map) { - map.put("message", "这是通过map设置数据");
- return showModel();
- }
前端成功显示数据
下面来解释下原理,还是直接看源码,可以发现,我们返回的
在反射方法结束之后便会返回一个ModelAndView,下面再来看看getModelAndView方法
defaultModel是通过put方法进行设置的,我们获取的Map是springmvc给我们提供的特殊Map,该map的put方法就会给defaultModel进行添加数据
我们直接返回一个MdoelAndView,直接在ModelAndView添加值即可。
- @RequestMapping("/f3")
- public ModelAndView f3() {
- ModelAndView modelAndView = new ModelAndView();
- modelAndView.setViewName(showModel());
- modelAndView.addObject("message", "通过返回ModelAndView进行设置数据");
- return modelAndView;
- }
这种方式就十分简单了,原理就是springmvc我们返回的ModelAndView,将视图名称和model设置到最终的ModelAndViewContainer容器中,下面直接看源码
这个很简单,就是通过HttpSession来进行的,先创建一个jsp页面进行展示
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <html>
- <head>
- <title>展示数据title>
- head>
- <body>
- <h1>后端返回的信息--request域:${requestScope.message}h1>
- <h1>后端返回的信息--session域:${sessionScope.message}h1>
- body>
- html>
通过session来进行设置
- @RequestMapping("/f4")
- public String f4(HttpSession session){
- session.setAttribute("message","通过session设置的值");
- return showModel();
- }
我们通过@ModelAttribute可以标识一个方法,该方法会在本类的handler调用前进行调用,执行一些预处理。
- @ModelAttribute
- public void prepare(){
- System.out.println("执行了prepare方法");
- }
只要我们访问该类的handler,那么就会先执行该方法
由于前后端分离,个人感觉使用不是很多了,了解即可