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” 验证权限的存在性
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


