Spring MVC中@ModelAttribute注解起什么作用呢?

Java-框架王 SpringMVC 发布时间:2021-05-14 09:09:25 阅读数:15650 1 @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” 验证权限的存在性
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/SpringMVC/2021-05-14/435.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者