拦截器简单实现

拦截器类

//继承AbstractInterceptor类

public class MyTimerInterceptor extends AbstractInterceptor{ 

//重写intercept方法

  publicString intercept(ActionInvocation invocation)

  throwsException {

  //预处理工作

  long startTime = System.currentTimeMillis();

              //执行后续拦截器或Action

  String result = invocation.invoke();

              //后续处理工作

         longexecTime= System.currentTimeMillis() - startTime;

             System.out.println("The interval time is "+execTime+"ms");

  //返回结果字符串

              return result;

  }

}

配置文件中

<package name="default"namespace="/" extends="struts-default">

  <interceptors>

//定义拦截器

  <interceptorname="myTimer"

  class="com.pb.interceptor.MyTimerInterceptor">

  </interceptor>

  </interceptors>

  <actionname="action" class="com.pb.action.MyTimerAction">

  <result>/index.jsp</result>

//引用拦截器

  <interceptor-refname="myTimer"></interceptor-ref>

  <interceptor-refname="defaultStack"></interceptor-ref>

  </action>

</package>

配置多个拦截器

<package name="packName"extends="struts-default" namespace="/manage">

  <interceptors>

  <!--定义拦截器 -->

  <interceptor name="interceptorName" class="interceptorClass" />

  <!--定义拦截器栈 -->

  <interceptor-stack name="interceptorStackName">

  <!--指定引用的拦截器-->

  <interceptor-ref name="interceptorName|interceptorStackName" />

  </interceptor-stack>

  </interceptors>

  <!--定义默认的拦截器引用-->

  <default-interceptor-refname="interceptorName|interceptorStackName" />

  <actionname="actionName" class="actionClass">

    <!—为Action指定拦截器引用-->

  <interceptor-ref name="interceptorName|interceptorStackName" />

  <!--省略其他配置-->

  </action>

</package>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring MVC 拦截器是在请求进入控制器之前或之后进行拦截处理的组件,可以用来做一些公共的业务处理或者权限控制等。 实现 Spring MVC 拦截器需要按照以下步骤: 1. 创建一个拦截器类,实现 HandlerInterceptor 接口,该接口定义了三个方法:preHandle()、postHandle()、afterCompletion()。 2. 在 Spring 配置文件中配置拦截器,可以通过<mvc:interceptors>标签配置全局拦截器,也可以通过在控制器类上使用 @Interceptor 注解配置局部拦截器。 3. 在拦截器的 preHandle() 方法中编写拦截逻辑,如果需要拦截请求,可以返回 false,否则返回 true。 4. 在拦截器的 postHandle() 方法中编写对响应结果的处理逻辑。 5. 在拦截器的 afterCompletion() 方法中编写对请求完成后的处理逻辑。 下面是一个简单实现示例: ```java public class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 在请求处理之前进行拦截处理 return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // 在请求处理之后进行拦截处理 } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 在请求完成后进行拦截处理 } } ``` 配置拦截器: ```xml <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <bean class="com.example.MyInterceptor"/> </mvc:interceptor> </mvc:interceptors> ``` 以上是一个全局拦截器的配置示例,该拦截器会对所有请求进行拦截处理。如果需要局部拦截器,可以在控制器类上使用 @Interceptor 注解进行配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值