首页 > 其他分享 >SpingMVC:如何设置一个拦截器?

SpingMVC:如何设置一个拦截器?

时间:2023-03-05 18:55:30浏览次数:34  
标签:控制器 拦截器 http SpingMVC 设置 modelAndView servlet javax

(interceptors) 拦截器类似于spring aop和tomcat中过滤器,但是作用域不同。

AOP:针对特点方法前后进行扩充,一般对serviceimpl进行

拦截器:针对控制器方法进行控制。

 


一、步骤

1、在springmvc配置中声明一个拦截器。

    <!--拦截器:拦截对于控制器的访问-->
    <mvc:interceptors>
        <!--拦截所有的控制器-->
        <bean class="com.lurenjia.interceptor.DemoInterceptor"></bean>

        <!--指定拦截的控制器-->
        <mvc:interceptor>
            <mvc:mapping path="/login"/>
            <mvc:mapping path="/main"/>
            <bean class="com.lurenjia.interceptor.DemoInterceptor"></bean>
        </mvc:interceptor>
    </mvc:interceptors>

2、编写拦截器实现类

  实现HandlerInterceptor接口,重写方法。

public class DemoInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Object handler) throws Exception {
        //进入控制器之前执行

        Object user = request.getSession().getAttribute("user");
        if(user!=null){
            //如果用户登录了,可以访问其它控制器
            return true;
        }else {
            //如果用户没登录,则不允许访问其它控制器
            response.sendRedirect("login.jsp");
            return false;
        }
    }

    @Override
    public void postHandle(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        //控制器执行完成,跳转之前

        //数据流转
        modelAndView.addObject("data","guaguagau");

        //过滤敏感词
        String word = modelAndView.getModel().get("data").toString();
        String newWord = word.replace("敏感词","***");
        modelAndView.getModel().put("data",newWord);

        //改变跳转路径
        modelAndView.setViewName("error.jsp");
    }

    @Override
    public void afterCompletion(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, Object handler, Exception ex) throws Exception {
        //跳转之后执行:用于记录执行过程中的异常
        if(ex!=null){
            System.out.println("存在异常");
        }
    }
}

 

标签:控制器,拦截器,http,SpingMVC,设置,modelAndView,servlet,javax
From: https://www.cnblogs.com/lurenjia-bky/p/17181297.html

相关文章

  • ubuntu 防火墙ufw常用设置
    1.开放服务ufwallow'NginxFull'#添加策略ufwdeleteallow'NginxFull'#删除策略2.开放端口ufwallow80ufwdeleteallow803.只开放ipv4/tcp端口......
  • Win10怎么设置有线网络和WiFi网络优先级?
    这个名词可能会让某些用户感到陌生,所谓“跃点”,即路由。一个路由为一个跃点。数据传输过程中需要经过多个网络,每个被经过的网络设备点(有能力路由的)叫做一个跃点,地址就是它......
  • win10 双网卡设置内网和外网同时访问
    当前环境是内网使用固定ip用有线连接外网自动获取使用wifi模块连接wificmd窗口下运行routeprint-4打印路由信息首先删除所有0.0.0.0的路由,也就是默认设置route......
  • QT QTableWidget 设置每一列的宽度(大概可以实现)
    //第一个参数代表:第几列,第二个参数:代表要进行的操作(对内容进行调整,或者,添加拉伸达到拉长表格的效果)ui->tableWidget->horizontalHeader()->setSectionResizeMode(......
  • CSS设置了属性,但不管事的解决方法之一
    设置一个:<metaname="viewport"content="width=device-width,user-scalable=no,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,viewport-fit=cover">  ......
  • 虚拟机(设置快照&虚拟网卡不显示)
    1:设置快照1.1:快照管理1.2:设置快照1.3:创建快照完成2:虚拟网卡不显示希望效果:拥有VMnet1和VMnet82个虚拟网卡步骤2:以管理员运行VMware......
  • 简单介绍Python中如何给字典设置默认值
    这篇文章主要介绍了Python中如何给字典设置默认值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教Python字典设置默认值我们都知道,在Pyt......
  • Chrome浏览器的跨域设置
    做前后端分离的开发的时候,出于一些原因往往需要将浏览器设置成支持跨域的模式,而且chrome浏览器支持可跨域的设置,但是新版本的chrome浏览器提高了跨域设置的门槛,原来的方法......
  • Windows设置暂停更新天数为2000年
    新建bat文件,内容如下regadd"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings"/vFlightSettingsMaxPauseDays/treg_dword/d730000/fpause......
  • Pspice 设置电容电感初始状态
    Pspice中的capacitor与inductor的IC值它们的IC值很重要,含义是初值。也就是电感(电容)的初始电流(电压)。因为Pspice在模拟时它不会把电感、电容的初始值默认当作0,而是会根......