Interceptor的简单使用

本文介绍如何在Struts2框架中创建并配置自定义拦截器,通过示例演示了实现过程及其在权限控制方面的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.写一个类,TestInterceptor 实现了Interceptor的接口,在这里我们可以做任何事情,通常我做的是权限的拦截,可以根据你想要实现的功能来命名你的Interceptor,比如权限的拦截器,可以取名CheckPrivilegeInterceptor。下面是拦截器类的代码

TestInterceptor


package com.ssh.interceptor;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

public class TestInterceptor implements Interceptor {

    public void destroy() {
        System.out.println("---->> TestInterceptor ---->> destory()");
    }

    public void init() {
        System.out.println("---->> TestInterceptor ---->> init()");
    }

    public String intercept(ActionInvocation invocation) throws Exception {
        System.out.println("---->> TestInterceptor ---->> before()");
        invocation.invoke();
        System.out.println("---->> TestInterceptor ---->> after()");
        return "test";
    }
    
}


2.在你的struts.xml的配置文件里面配置刚刚的拦截器类就行了


struts.xml:

    <package name="default" namespace="/" extends="struts-default">
    
        
        <!-- 配置拦截器栈 默认的拦截器栈名为defaultStack -->
        <interceptors>
            <interceptor name="testInterceptor" class="com.ssh.interceptor.TestInterceptor">
            </interceptor>
            
            <interceptor-stack name="defaultStack">
                <interceptor-ref name="testInterceptor"></interceptor-ref>
                  <interceptor-ref name="defaultStack"></interceptor-ref>
            </interceptor-stack>
        </interceptors>

   </package>


3.重新部署一下项目,查看控制台,如果没什么exception就没什么问题。











Interceptor(拦截器)是一个常用的Spring框架中的组件,用于在请求进入控制器之前或者响应返回到浏览器之前进行一些处理,比如校验用户登录状态、记录请求日志等。 在Spring中使用Interceptor非常简单,主要包括以下几个步骤: 1. 创建一个Interceptor类,实现HandlerInterceptor接口,并重写其中的三个方法:preHandle、postHandle和afterCompletion。preHandle在请求进入控制器之前执行,postHandle在控制器处理完请求后执行,afterCompletion在视图渲染完毕之后执行。 2. 在Spring的配置文件中配置Interceptor,可以通过<mvc:interceptors>标签配置全局的Interceptor,也可以通过实现WebMvcConfigurer接口来进行局部的Interceptor配置。 3. 配置完成后,Interceptor会自动拦截所有符合条件的请求,并按照preHandle、postHandle和afterCompletion的顺序执行。 下面是一个简单Interceptor示例: ```java public class LoginInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 校验用户登录状态 User user = (User) request.getSession().getAttribute("user"); if (user == null) { response.sendRedirect("/login"); return false; } return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // 记录请求日志 System.out.println(request.getRequestURI() + " executed."); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 清理资源等操作 } } ``` 在Spring的配置文件中配置Interceptor: ```xml <mvc:interceptors> <bean class="com.example.interceptor.LoginInterceptor" /> </mvc:interceptors> ``` 这样就可以实现一个简单Interceptor拦截器了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值