spring-intercept.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- 配置spring拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/api/*"/>
<bean class="com.xibo.uuline.web.app.intercept.ServerInfoInterceptor"/>
</mvc:interceptor>
<!--一个拦截器多个拦截器的微站配置-->
<mvc:interceptor>
<!-- 用户中心 -->
<mvc:mapping path="/weizhan/member/**" /> <!-- 这里配置微站拦截的/weizhan/member/ -->
<mvc:mapping path="/weizhan/orderConfirm.htm" />
<bean class="com.xibo.uuline.web.app.intercept.WeizhanLoginInterceptor" />
</mvc:interceptor>
<!--一个拦截器多个拦截器的网站配置-->
<mvc:interceptor>
<!-- 用户中心 -->
<mvc:mapping path="/member/**" />
<!-- 点击立即预定拦截 -->
<mvc:mapping path="/saveOrder.htm" />
<!-- 需排除拦截的地址 -->
<mvc:exclude-mapping path="/member/registerShow.htm"/>
<mvc:exclude-mapping path="/member/loginShow.htm"/>
<mvc:exclude-mapping path="/member/registerDo.htm"/>
<mvc:exclude-mapping path="/member/loginDo.htm"/>
<mvc:exclude-mapping path="/member/getCodeDo.htm"/>
<bean class="com.xibo.uuline.web.app.intercept.WebLoginInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
</beans>
拦截器的写法
package com.xibo.uuline.web.app.intercept;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import com.xibo.uuline.alipay.wap.StringUtil;
import com.xibo.uuline.commons.constant.UserConstant;
import com.xibo.uuline.commons.constant.ticketConstant;
import com.xibo.uuline.domain.user.UserBean;
public class WeizhanLoginInterceptor extends HandlerInterceptorAdapter {
private static Logger LOGGER = LoggerFactory.getLogger(WebLoginInterceptor.class);
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object obj, Exception err)
throws Exception {
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView model)throws Exception {
//这里遇到的问题很多 1.没有正常过滤 2.request.getSession()为null 3.重定向报的错误java.lang.IllegalStateException at org.apache.catalina.connector.ResponseFacade.sendRedirect
//一开始拦截写到这里 ,其实是错误的 因为他的执行顺序是preHandle——>controller——>postHandle——>afterCompletion
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object handler) throws Exception {
if(request.getSession()!=null){
UserBean user = (UserBean) request.getSession().getAttribute(UserConstant.WEIZHANLOGINUSER);
String ticketId = request.getParameter("ticketId");
if(!StringUtil.isBlank(ticketId)){
//票的id
request.getSession().setAttribute(ticketConstant.TICKETID, ticketId);
}
if(user==null || StringUtil.isBlank(user.getUsername())){
response.sendRedirect("/weizhan/wzLoginShow.htm");
return false;
}
else{
return super.preHandle(request, response, handler);
}
}
else{
LOGGER.info("网站登录拦截器request.getSession()为空");
}
return super.preHandle(request, response, handler);
}
}