Spring MVC中@ModelAttribute注解起什么作用呢?
@ModelAttribute注解的功能:
1.将请求参数绑定到实体对象上2.将一个方法注解为非请求方法
注意事项:
ModelAttribute注解需引入org.springframework.web.bind.annotation.ModelAttribute
下文将通过示例的方式讲述ModelAttribute的功能
1.绑定请求参数到实体对象(表单的命令对象)
@RequestMapping("/register") public String register(@ModelAttribute("user") UserForm user) { if ("java265user".equals(uname) && "pwd888".equals(upass)) { logger.info("login success"); return "login"; } else { logger.info("login fail"); return "register"; }上面的代码通过使用@ModelAttribute("user")UserForm user”注解 将请求参数封装到user对象中,并创建一个UserForm实例 并将值放入user 这个Model对象中 此方法效果类似于 model.addAttribute("user",user)
2.注解一个非请求处理方法
将@ModelAttribute 注解放入方法前每次调用控制此方法时,注解将被调用,常用于权限控制,拦截器,过滤器
例:
package controller; import javax.servlet.http.HttpSession; import org.springframework.web.bind.annotation.ModelAttribute; public class BaseController { @ModelAttribute public void isLogin(HttpSession session) throws Exception { if (session.getAttribute("user") == null) { throw new Exception("无权限操作"); } } }
创建 ModelAttributeController ,代码如下所示:
package controller; import org.springframework.web.bind.annotation.RequestMapping; @RequestMapping("/admin") public class ModelAttributeController extends BaseController { @RequestMapping("/add") public String add() { return "addSuccess"; } @RequestMapping("/update") public String update() { return "updateSuccess"; } @RequestMapping("/delete") public String delete() { return "deleteSuccess"; } }
当ModelAttributeController 类中
add、update、delete 请求处理方法运行时,
将先运行父类 BaseController 中的 isLogin 方法判断登录权限
“http://localhost:8080/springMVCtest/admin/add” 验证权限的存在性
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。