😀前言
本文详细讲解了模型数据处理-数据放入 session和@ModelAttribute 实现 prepare 方法详细讲解
🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉😉
💗模型数据处理-数据放入 session和@ModelAttribute 实现 prepare 方法详细讲解
💞模型数据处理-数据放入 session
🤔● 说明
开发中, 控制器/处理器中获取的数据如何放入 session 域,然后在前端(VUE/JSP/…)取出显示
修改 model_data.jsp, 增加代码
<h1>添加主人信息[测试session]</h1> <form action="vote/vote08" method="post"> 主人号:<input type="text" name="id"><br> 主人名:<input type="text" name="name"><br> 宠物号:<input type="text" name="pet.id"><br> 宠物名:<input type="text" name="pet.name"><br> <input type="submit" value="添加主人和宠物"> </form>
修改 VoteHandler.java 增加方法
@RequestMapping("/vote") @Controller public class VoteHandler { @RequestMapping(value = "/vote08") public String test08(Master master, HttpSession httpSession) { System.out.println("----test08----"); //master对象是默认放在request域 //我们将master对象放入到session域 httpSession.setAttribute("master", master); httpSession.setAttribute("address", "guangzhou"); return "vote_ok";//请求转发 } }
修改vote_ok.jsp增加代码
<hr> 取出 session域的数据 <br> address: ${sessionScope.address}<br> 主人名字= ${sessionScope.master.name} 主人信息= ${sessionScope.master}
完成测试(Postman 测试)
🐤@ModelAttribute 实现 prepare 方法
🤔● 基本说明
开发中,有时需要使用某个前置方法(比如 prepareXxx(), 方法名由程序员定)给目标方法准备一个模型对象
- @ModelAttribute 注解可以实现 这样的需求
- 在某个方法上,增加了@ModelAttribute 注解后
- 那么在调用该 Handler 的任何一个方法时,都会先调用这个方法
修改 VoteHandler 增加方法 并测试
@RequestMapping("/vote") @Controller public class VoteHandler { @ModelAttribute public void prepareModel(){ System.out.println("prepareModel()-----完成准备工作-----"); } }
@ModelAttribute 最佳实践
● 修改用户信息(就是经典的使用这种机制的应用),流程如下:
- 在修改前,在前置方法中从数据库查出这个用户
- 在修改方法(目标方法)中,可以使用前置方法从数据库查询的用户
- 如果表单中对用户的某个属性修改了,则以新的数据为准,如果没有修改,则以数据库的信息为准,比如,用户的某个属性不能修改,就保持原来的值
😄总结
文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论😁
希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞



