来源:https://www.bilibili.com/video/BV1GE411d7KE?p=6
上一节:https://blog.csdn.net/qq_40893824/article/details/107154193
下一节:https://blog.csdn.net/qq_40893824/article/details/107279867
目录
JSP 4大作用域 对应内置对象:pageContext、request、session、application。
模型数据绑定由 ViewResolver 完成,实际开发中,需要先添加模型数据,再交给 ViewResolver 绑定
Spring MVC 添加模型数据的方式:
Map:模型数据直接加到 request 里
Model:模型数据直接加到 request 里
ModelAndView:模型数据直接加到 request 里
@SessionAttribute:模型数据直接加到 session 里
@ModelAttribute
绑定到 request 对象
Map
1 webapp 中,新建 view.jsp,加入代码:
<%@ page isELIgnored="false" %>
是否忽略表达式,不忽略,就是去解析
${requestScope.user}
2 controller 中,新建实现类 ViewHandler,加入代码:
package com.southwind.controller;
import com.southwind.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.Map;
@Controller
@RequestMapping("/view")
public class ViewHandler {
@RequestMapping("/map")
public String map(Map<String, User> map){
User user = new User();
user.setId(1L);
user.setName("张三");
map.put("user",user);
return "view";
}
}
![](https://img-blog.csdnimg.cn/20200709154030465.png)
3 启动 tomcat,进入 http://localhost:8080/view/map
Model
1 ViewHandler 中,添加代码:
@RequestMapping("/model")
public String model(Model model){
User user = new User();
user.setId(1L);
user.setName("张三");
model.addAttribute("user",user);
return "view";
}
![](https://img-blog.csdnimg.cn/20200709154611839.png)
2 启动 tomcat,进入 http://localhost:8080/view/model
ModelAndView
法1
1 ViewHandler 中,添加代码:
@RequestMapping("/modelAndView")
public ModelAndView modelAndView(){
User user = new User();
user.setId(1L);
user.setName("张三");
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("user", user);
modelAndView.setViewName("view");
return modelAndView;
}
![](https://img-blog.csdnimg.cn/20200709195852351.png)
2 启动 tomcat,进入 http://localhost:8080/view/modelAndView
法2
1 ViewHandler 中,添加代码:
@RequestMapping("/modelAndView2")
public ModelAndView modelAndView2(){
User user = new User();
user.setId(1L);
user.setName("张三");
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("user", user);
View view = new InternalResourceView("/view.jsp");
modelAndView.setView(view);
return modelAndView;
}
![](https://img-blog.csdnimg.cn/20200710083202849.png)
2 启动 tomcat,进入 http://localhost:8080/view/modelAndView2
法3
1 ViewHandler 中,添加代码:
@RequestMapping("/modelAndView3")
public ModelAndView modelAndView3(){
User user = new User();
user.setId(1L);
user.setName("张三");
ModelAndView modelAndView = new ModelAndView("view");
modelAndView.addObject("user", user);
return modelAndView;
}
![](https://img-blog.csdnimg.cn/20200710083858362.png)
2 启动 tomcat,进入 http://localhost:8080/view/modelAndView3
法4
1 ViewHandler 中,添加代码:
@RequestMapping("/modelAndView4")
public ModelAndView modelAndView4(){
User user = new User();
user.setId(1L);
user.setName("张三");
View view = new InternalResourceView("/view.jsp");
ModelAndView modelAndView = new ModelAndView(view);
modelAndView.addObject("user", user);
return modelAndView;
}
![](https://img-blog.csdnimg.cn/20200710084226860.png)
2 启动 tomcat,进入 http://localhost:8080/view/modelAndView4
法5
1 ViewHandler 中,添加代码:
@RequestMapping("/modelAndView5")
public ModelAndView modelAndView5(){
User user = new User();
user.setId(1L);
user.setName("张三");
Map<String,User> map = new HashMap<>();
map.put("user", user);
ModelAndView modelAndView = new ModelAndView("view",map);
return modelAndView;
}
![](https://img-blog.csdnimg.cn/2020071008460792.png)
2 启动 tomcat,进入 http://localhost:8080/view/modelAndView5
法6
1 ViewHandler 中,添加代码:
@RequestMapping("/modelAndView6")
public ModelAndView modelAndView6(){
User user = new User();
user.setId(1L);
user.setName("张三");
Map<String,User> map = new HashMap<>();
map.put("user", user);
View view = new InternalResourceView("/view.jsp");
ModelAndView modelAndView = new ModelAndView(view,map);
return modelAndView;
}
![](https://img-blog.csdnimg.cn/20200710085028910.png)
2 启动 tomcat,进入 http://localhost:8080/view/modelAndView6
法7
1 ViewHandler 中,添加代码:
@RequestMapping("/modelAndView7")
public ModelAndView modelAndView7(){
User user = new User();
user.setId(1L);
user.setName("张三");
ModelAndView modelAndView = new ModelAndView("view","user",user);
return modelAndView;
}
![](https://img-blog.csdnimg.cn/20200710085505386.png)
2 启动 tomcat,进入 http://localhost:8080/view/modelAndView7
法8
1 ViewHandler 中,添加代码:
@RequestMapping("/modelAndView8")
public ModelAndView modelAndView8(){
User user = new User();
user.setId(1L);
user.setName("张三");
View view = new InternalResourceView("/view.jsp");
ModelAndView modelAndView = new ModelAndView(view,"user",user);
return modelAndView;
}
![](https://img-blog.csdnimg.cn/20200710085707458.png)
2 启动 tomcat,进入 http://localhost:8080/view/modelAndView8
HttpServletRequest
1 ViewHandler 中,添加代码:
@RequestMapping("/request")
public String request(HttpServletRequest request){
User user = new User();
user.setId(1L);
user.setName("张三");
request.setAttribute("user", user);
return "view";
}
![](https://img-blog.csdnimg.cn/20200710092213474.png)
2 启动 tomcat,进入 http://localhost:8080/view/request
@ModelAttribute
放在 实现类中,方法实现之前,先去运行带有 @ModelAttribute
注解的类
法1
1 ViewHandler 中,添加代码:
@ModelAttribute
public User getUser(){
User user = new User();
user.setId(1L);
user.setName("张三");
return user;
}
@RequestMapping("/modelAttribute")
public String modelAttribute(){
return "view";
}
![](https://img-blog.csdnimg.cn/20200710183317276.png)
2 启动 tomcat,进入 http://localhost:8080/view/modelAttribute
法2
1 ViewHandler 中,注释、添加代码:
@ModelAttribute
public void getUser(Map<String, User> map){
User user = new User();
user.setId(1L);
user.setName("张三");
map.put("user", user);
}
![](https://img-blog.csdnimg.cn/20200710183816738.png)
2 启动 tomcat,进入 http://localhost:8080/view/modelAttribute
法3
1 ViewHandler 中,注释、添加代码:
@ModelAttribute
public void getUser(Model model){
User user = new User();
user.setId(1L);
user.setName("张三");
model.addAttribute("user", user);
}
![](https://img-blog.csdnimg.cn/202007101841404.png)
2 启动 tomcat,进入 http://localhost:8080/view/modelAttribute
绑定到 session 对象
原生 Servlet API
法1
1 ViewHandler 中,注释、添加代码:
@RequestMapping("/session")
public String session(HttpServletRequest request){
HttpSession session = request.getSession();
User user = new User();
user.setId(1L);
user.setName("张三");
session.setAttribute("user", user);
return "view";
}
![](https://img-blog.csdnimg.cn/20200710192658193.png)
2 在 view.jsp 中,添加代码:
<hr/>
${sessionScope.user}
![](https://img-blog.csdnimg.cn/20200710193108296.png)
3 启动 tomcat,进入 http://localhost:8080/view/session
法2
1 ViewHandler 中,注释、添加代码:
@RequestMapping("/session2")
public String session2(HttpSession session){
User user = new User();
user.setId(1L);
user.setName("张三");
session.setAttribute("user", user);
return "view";
}
![](https://img-blog.csdnimg.cn/20200710193756168.png)
2 启动 tomcat,进入 http://localhost:8080/view/session
@SessionAttribute
它是全局的,尽量不用
数据添加到 session
法1
1 实现类前面加 @SessionAttributes(value = "user")
2 启动 tomcat,进入 http://localhost:8080/view/map
法2
1 实现类前面加 @SessionAttributes(types = User.class)
2 启动 tomcat,进入 http://localhost:8080/view/map
绑定多个:
@SessionAttributes(value = {"user","address"})
@SessionAttributes(types = {User.class,Address.class})
绑定 application 对象
1 ViewHandler 中,加入代码
前一个 session 可以直接构造
它不能直接构造 public String application(ServletContext application){}
因为 它没有无参构造的方法
@RequestMapping("/application")
public String application(HttpServletRequest request){
ServletContext application = request.getServletContext();
User user = new User();
user.setId(1L);
user.setName("张三");
application.setAttribute("user", user);
return "view";
}
![](https://img-blog.csdnimg.cn/20200711091546320.png)
2 view.jsp 中,加入代码:
<hr/>
${applicationScope.user}
![](https://img-blog.csdnimg.cn/20200711091622393.png)
3 启动 tomcat,进入 http://localhost:8080/view/application
上一节:https://blog.csdn.net/qq_40893824/article/details/107154193
下一节:https://blog.csdn.net/qq_40893824/article/details/107279867