一、web.xml
<servlet>
<servlet-name>spring-mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
二、springmvc.xml
<mvc:interceptors>
<!-- 使用bean定义一个Interceptor,直接定义在mvc:interceptors根下面的Interceptor将拦截所有的请求 -->
<!-- <bean class="cn.picclife.mwx.activity.util.AuthInterceptor"/> -->
<!-- 拦截器配置项 -->
<mvc:interceptor>
<!-- 匹配的是url路径, 如果不配置或/**,将拦截所有的Controller -->
<mvc:mapping path="/customer_insert_reg"/>
<!-- 不被拦截范围(路径);例如:后台登录页面 -->
<mvc:exclude-mapping path="/agent_login"/>
<!-- 定义在mvc:interceptor下面的表示是对特定的请求才进行拦截的 -->
<bean class="cn.picclife.mwx.activity.util.LoginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
三、java类
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
/**
*
* @ClassName: AuthInterceptor
* @Description: 登陆判断
* @date 2016年11月9日 下午8:05:10
*
*/
public class LoginInterceptor extends HandlerInterceptorAdapter {
// 登陆页面
private static final String loginPage = "/public/agent_login.html";
// 微信绑定页
// private static final String wxBindingPage = "/user/wxbind.jhtml";
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception ex) throws Exception {
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView mav) throws Exception {
}
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object obj) throws Exception {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
// session管理和登陆判断
Boolean isLogin = false;
Agent agent = (Agent) request.getSession().getAttribute("Agent");
if (agent != null) {
isLogin = true;
}
String openId = (String) request.getSession().getAttribute("openId");
// String openId = "oO6scvxfO0py5wFlHTRTI8J0JLyc";
if (!isLogin) {
String requestType = request.getHeader("x-requested-with");
boolean isAjax = false;
if ("XMLHttpRequest".equals(requestType)) {
isAjax = true;
}
// 判断是否是ajax请求
if (isAjax) {
PrintWriter out = response.getWriter();
out.print("{\"code\":\"20000\",\"msg\":\"用户尚未登陆\"}");
out.flush();
out.close();
} else {
String ctx = request.getContextPath();
if (StringUtils.isBlank(openId)) {
// 未登录
PrintWriter out = response.getWriter();
StringBuilder builder = new StringBuilder();
builder.append("<script type=\"text/javascript\" charset=\"UTF-8\">");
builder.append("alert(\"页面过期,请重新登录\");");
builder.append("window.top.location.href=\"");
builder.append(ctx + loginPage);
builder.append("\";");
builder.append("</script>");
out.print(builder.toString());
out.close();
} else {
response.sendRedirect(ctx + loginPage);
}
}
return false;
}
return true;
}
}