SpringMVC学习笔记--拦截器拦截Request请求

SpringMVC可以通过拦截器拦截你所需要拦截的request请求

拦截器也是属于handler mapping的一种机制而且拦截器必须实现org.springframework.web.servlet包的HandlerInterceptor接口, 但是为了方便使用, 一般继承HandlerInterceptor的适配器(HandlerInterceptorAdapter)就可以了;

拦截器

下面是一个简单的拦截器的例子(是Spring官方例子小修改而成的):

package com.wenj.interceptors;

import java.util.Calendar;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class WorkTimeInterceptor extends HandlerInterceptorAdapter {

private int openingTime;
private int closingTime;
public void setOpeningTime(int openingTime) {
this.openingTime = openingTime;
}

public void setClosingTime(int closingTime) {
this.closingTime = closingTime;
}

@Override

public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
Calendar cl = Calendar.getInstance();
int hour = cl.get(Calendar.HOUR_OF_DAY);
if(hour<openingTime || hour>=closingTime){
response.sendRedirect("http://www.baidu.com");
return false;
}
return true;
}

}


以上例子很简单主要是实现工作时间的控制只有在工作时间(8~18)才能进行操作

 

拦截器配置

xml配置如下:

<!-- 配置mvc注解解析器 --> 

<mvc:default-servlet-handler />
<mvc:annotation-driven />
<!-- 配置自动扫描controller注解 -->
<context:component-scan base-package="com.wenj.controller" />
<bean id="workTimeInterceptor" class="com.wenj.interceptors.WorkTimeInterceptor">
<property name="openingTime" value="8" />
<property name="closingTime" value="18" />
</bean>
<mvc:interceptors>
<ref bean="workTimeInterceptor"/>
</mvc:interceptors>
<!-- 配置视图 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>

这样一个简单的拦截器就实现了在非工作时间内访问网站时会直接跳转到百度这个网站并且终止当前的请求执行链

 

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值