理解@ModelAttribute注解的作用

package com.ch.ebusiness.controller.admin;

import com.ch.ebusiness.NoLoginException;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;

import javax.servlet.http.HttpSession;

@Controller
public class AdminBaseController {
    /**
     * 登录权限控制,处理方法执行前执行该方法
     */
    @ModelAttribute
    public void isLogin(HttpSession session) throws NoLoginException {
        if (session.getAttribute("auser") == null) {
            System.out.println("管理员账号还没有登录");
            throw new NoLoginException("没有登录");
        }
    }
}

代码学习解释

这段代码是一个Java类,属于Spring框架中的控制器(Controller)类,用于实现管理员后台管理系统的登录权限控制。它包含了一个AdminBaseController类,该类使用@Controller注解标记为一个Spring控制器,并定义了一个isLogin方法,该方法用于检查管理员是否已经登录。

下面是代码中的主要部分的功能解释:

  1. @Controller注解:这个注解告诉Spring框架这个类是一个控制器类,负责处理HTTP请求。

  2. isLogin方法:这是一个公共方法,使用了@ModelAttribute注解,表示它将在每次处理请求的方法执行前都会执行。

  3. 参数HttpSession sessionisLogin方法接收一个HttpSession参数,用于获取当前会话的session对象。

  4. 判断是否登录:isLogin方法通过检查session中是否存在名为"auser"的属性来判断管理员是否已经登录。如果该属性不存在,说明管理员还没有登录,会抛出NoLoginException异常,表示没有登录。

总结起来,该AdminBaseController控制器类中的isLogin方法用于进行登录权限控制。在其他管理员后台管理系统的控制器方法执行前,会先调用这个方法,检查管理员是否已经登录。如果管理员没有登录,会抛出NoLoginException异常,然后由全局异常处理器捕获该异常,执行相应的处理逻辑,例如跳转到登录页面或返回错误信息。这样可以确保只有已登录的管理员可以访问受保护的后台管理功能。

@ModelAttribute是Spring框架中的一个注解,用于将方法的返回值或参数绑定到模型中。它在控制器中的方法上使用,以便在处理HTTP请求时,自动将方法返回的数据或参数传递给视图进行展示或处理。

在您提供的代码中,@ModelAttribute注解被用于标记一个方法,即isLogin方法。由于它被标记为@ModelAttribute,因此在其他控制器方法被调用之前,会自动执行这个方法,并将返回的数据(或参数)绑定到模型中。

在这个特定的例子中,isLogin方法的目的是检查管理员是否已经登录。如果管理员没有登录,它会抛出NoLoginException异常,表示没有登录。但是请注意,@ModelAttribute注解实际上并不是用来处理登录逻辑的,它只是在每次处理请求的方法执行前都会被调用,用于进行登录权限控制。

在更一般的用法中,@ModelAttribute可以用于多种场景,包括但不限于:

  1. 将方法的返回值传递给视图展示:控制器方法返回的数据会被自动绑定到模型中,然后传递给相应的视图展示。

  2. 将请求参数绑定到方法参数:当控制器方法有参数时,@ModelAttribute可以将HTTP请求中的数据绑定到这些参数上,方便获取用户提交的数据。

  3. 在每次请求前执行一些预处理逻辑:与您提供的例子相似,可以在@ModelAttribute标记的方法中执行一些预处理逻辑,然后将结果传递给控制器方法。

总的来说,@ModelAttribute是Spring框架中非常有用的注解,用于处理数据绑定、预处理逻辑和请求参数的处理,从而简化控制器的编写和数据传递。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王摇摆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值