springmvc处理模型数据
springmvc处理模型数据
很多情况下页面上需要很多数据,单单返回页面是不行的,那么springmvc如何将数据返回到该页面呢
springmvc提供了四种方式来输出模型数据
- ModelAndView: 处理返回值为ModelAndView时,可以将该对象中添加数据模型
- Map及Model:入参为Model、ModelMap或Map时,处理方法返回时,Map中的数据会自动添加到模型中
- @SessionAttributes: 将模型中的某个属性暂存到HttpSession中,以便多个请求之间共享数据
- @ModelAttribute: 方法入参标注该注解后,入参的对象就会放到数据模型中
ModelAndView
主要有两个重要的变量
// 视图 可以传字符串(视图名字)也可以传View对象
private Object view;
// 数据模型 本质是一个map
private ModelMap model;
视图相关的方法
// 设置视图
public void setViewName(String viewName) {
this.view = viewName;
}
// 获取视图
public String getViewName() {
return this.view instanceof String ? (String)this.view : null;
}
数据模型相关方法
// 获取数据模型
protected Map<String, Object> getModelInternal() {
return this.model;
}
public ModelMap getModelMap() {
if (this.model == null) {
this.model = new ModelMap();
}
return this.model;
}
public Map<String, Object> getModel() {
return this.getModelMap();
}
// 添加视图模型
public ModelAndView addObject(String attributeName, Object attributeValue) {
this.getModelMap().addAttribute(attributeName, attributeValue);
return this;
}
springmvc底层使用request.setAttribute(name,value)来将数据放入到请求中
示例:
@RequestMapping("/modelAndViewTest")
public ModelAndView modelAndViewTest(){
// 视图名
ModelAndView modelAndView = new ModelAndView("modelAndViewTest");
// 包含的数据
modelAndView.addObject("dateTime",new Date());
return modelAndView;
}
Map及Model
@RequestMapping("/mapTest")
public String mapTest(Map<String,String> map){
System.out.println(map.getClass()); //class org.springframework.validation.support.BindingAwareModelMap
map.put("name","张三");
return "hello";
}
@SessionAttributes
在类上添加@SessionAttributes可以使该类所代表的路径下的session共享
@Controller
@RequestMapping("helloWorld")
// 设置name属性共享
@SessionAttributes(value={"name"})
public class HelloWorldController {
@RequestMapping("/mapTest")
public String mapTest(Map<String,String> map){
System.out.println(map.getClass()); //class org.springframework.validation.support.BindingAwareModelMap
map.put("name","张三");
return "hello";
}
// 可以在该方法中获取到name值为张三
@RequestMapping("/sessionAttributes")
public String sessionAttributes(HttpSession session){
System.out.println(session.getAttribute("name"));
return "hello";
}
}
由于本身的博客百度没有收录,博客地址http://zhhll.icu
本文来自博客园,作者:拾光师,转载请注明原文链接:https://www.cnblogs.com/life-time/p/14472506.html 个人博客-> https://zhhll.icu
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~