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