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


    转自:

    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” 验证权限的存在性

  • 相关阅读:
    论文数据去哪找?
    J2EE基础:MySQL01
    【动手学深度学习PyTorch版】19 网络中的网络 NiN
    成集云 | 1药城对接英克ERP | 解决方案
    CentOS8 安装Yapi
    Python语言例题集(006)
    语音信号的采集与处理
    C#结合JS实现HtmlTable动态添加行并保存到数据库
    基本初等函数
    C# 移除链表元素
  • 原文地址:https://blog.csdn.net/qq_25073223/article/details/127859891