springMVC 拦截器 登录管理

来源:互联网 发布:mac搜狗输入法不显示 编辑:程序博客网 时间:2024/05/29 02:24

一、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";@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object obj, Exception ex) throws Exception {}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object obj, ModelAndView mav) throws Exception {}@Overridepublic 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;}}


0 0
原创粉丝点击