在没有登录之前,访问其他页面都会被拦截,然后跳转到登录页面。
一. 编写拦截器类
package com.server.interceptor;
import com.server.common.Constants;
import com.server.pojo.User;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class LoginInterceptor implements HandlerInterceptor {
@Override //该方法在控制器方法执行之前执行
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//如果用户还没有登录,则跳转到登录页面
HttpSession session = request.getSession();
User user = (User) session.getAttribute(Constants.SESSION_USER);
if(user == null){
response.sendRedirect(request.getContextPath() + "/loginPage");
return false;
}
return true;
}
}
二. 配置拦截器
在spring-mvc.xml内配置拦截器
<!-- 配置拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/> <!-- 拦截所有页面 -->
<mvc:exclude-mapping path="/"/> <!-- 排除拦截index页面 -->
<mvc:exclude-mapping path="/loginPage"/> <!-- 排除拦截login页面 -->
<mvc:exclude-mapping path="/login"/> <!-- 排除拦截login请求 -->
<mvc:exclude-mapping path="/registerPage"/> <!-- 排除拦截register页面 -->
<mvc:exclude-mapping path="/register"/> <!-- 排除拦截register请求 -->
<bean class="com.server.interceptor.LoginInterceptor"></bean> <!-- 添加拦截器类 -->
</mvc:interceptor>
</mvc:interceptors>
三. 测试
@RequestMapping("/managerPage")
public String goToManager(){
return "limit/manager";
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>首页</title>
<% //获取当前工程的路径
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";
%>
<base href="<%=basePath%>">
</head>
<body>
<%-- 如果用户还没有登录,显示登录和注册菜单--%>
<c:if test="${empty sessionScope.sessionUser}">
<a href="loginPage"><input type="button" value="登录"/></a>
<a href="registerPage"><input type="button" value="注册"/></a>
</c:if>
<%-- 如果用户已经登录,显示欢迎用户和注销--%>
<c:if test="${not empty sessionScope.sessionUser}">
欢迎${sessionScope.sessionUser.username}
<a href="logout"><input type="button" value="退出"/></a>
</c:if>
<a href="managerPage"><input type="button" value="管理"/></a>
</body>
</html>
在没有登录之前,点击管理按钮,会跳转到登录页面,当登录完成之后,点击管理按钮,才会跳到管理页面。