springmvc配置拦截器

来源:互联网 发布:mysql logbin日志查看 编辑:程序博客网 时间:2024/05/14 10:30

参考:http://elim.iteye.com/blog/1750680


1、spring中配置

<!-- springmvc配置拦截器 --><!-- mvc:mapping path 需拦截的目录 --><!-- mvc:exclude-mapping path 需排除拦截的目录 --><mvc:interceptors>      <!-- 使用bean定义一个Interceptor,直接定义在mvc:interceptors根下面的Interceptor将拦截所有的请求  -->     <bean class="com.host.app.web.interceptor.AllInterceptor"/>      <mvc:interceptor>          <mvc:mapping path="/test/number.do"/>          <!-- 定义在mvc:interceptor下面的表示是对特定的请求才进行拦截的   -->        <bean class="com.host.app.web.interceptor.LoginInterceptor"/>      </mvc:interceptor>  </mvc:interceptors>
记得添加scheme

xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd


2、定义实现类,继承HandlerInterceptorAdapter

public class IpInterceptor extends HandlerInterceptorAdapter {private static final String[] allowHosts = { "127.0.0.1" };@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {if ("post".equalsIgnoreCase(request.getMethod())) {String ip =getIpAddr(request);/*for (String allowHost : allowHosts) {if (ip.contains(allowHost)) {return true;}}throw new Exception("请求来源不正确");*/return true;}return super.preHandle(request, response, handler);}/** * 获取ip * @param request * @return * @throws Exception */public static String getIpAddr(HttpServletRequest request) throws Exception {String ip = request.getHeader("X-Real-IP");if (ip != null && !"unknown".equalsIgnoreCase(ip)) {return ip;}ip = request.getHeader("X-Forwarded-For");if (ip != null && !"unknown".equalsIgnoreCase(ip)) {// 多次反向代理后会有多个IP值,第一个为真实IP。int index = ip.indexOf(',');if (index != -1) {return ip.substring(0, index);} else {return ip;}} else {return request.getRemoteAddr();}}}







原创粉丝点击