SpringMvc登陆拦截器的基本使用

来源:互联网 发布:网络推编辑 编辑:程序博客网 时间:2024/04/30 06:10

步骤一:编写一个拦截器类

import java.io.PrintWriter;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.apache.log4j.Logger;import org.springframework.stereotype.Repository;import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;import com.base.utils.SessionName;@Repositorypublic class SystemInterceptor extends HandlerInterceptorAdapter {//在配置文件中配置要放行的URLprivate List<String> paramList;Logger log = Logger.getLogger(SystemInterceptor.class);@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=UTF-8");HttpSession session = request.getSession();// 请求的虚拟目录String basePath = request.getContextPath();String requestPath = request.getServletPath();try {if (!requestPath.contains(".")) {log.info(">>" + requestPath);// 判断当前页是否是重定向以后的登录页面页面,如果是就不做session的判断,防止出现死循环if (session == null || session.getAttribute(SessionName.ADMIN_USER_ID) == null) {// 未登录//放心的连接if (paramList.contains(requestPath)) {return super.preHandle(request, response, handler);} else {// 未登录                      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(basePath);                      builder.append("/manageAdminUser/toLogin\";</script>");                      out.print(builder.toString());                      out.close();                      return false;  //    response.sendRedirect(basePath + "/manageAdminUser/toLogin");// 登陆页面}} else {// 已登录request.setAttribute("requestPath", requestPath);return super.preHandle(request, response, handler);}} else {return super.preHandle(request, response, handler);}} catch (Exception e) {e.printStackTrace();}return false;}//设置放行的URLpublic void setParamList(List<String> paramList) {this.paramList = paramList;}}


步骤二:在spring-servlet.xml中配置拦截器

<!-- 拦截器 -->    <mvc:interceptors>          <bean class="com.base.interceptor.SystemInterceptor">        <!-- 配置不拦截的URL  --><property name="paramList"><list><value>/manageAdminUser/toLogin</value><value>/manageAdminUser/login</value><value>/manageAdminUser/pcrimg</value><value>/api/client/login</value><value>/api/client/loginDirect</value><value>/api/client/loginDemo</value><value>/api/client/loginDemoAjax</value><value>/api/client/uploadDoc</value><value>/api/client/mvdoc</value><value>/api/client/docs</value></list></property>        </bean>      </mvc:interceptors>


步骤三:在web.xml文件中配置SpringMVC的核心控制器

<span style="white-space:pre"></span><servlet><servlet-name>spring3</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/spring3-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>spring3</servlet-name><url-pattern>/</url-pattern></servlet-mapping>



0 0