大体思路步骤:
1.建立包Interceptor
2.创建拦截器,此类要实现HandlerInterceptor
3.在springmvc中配置拦截器
4.模拟登录验证:直接访问商品展现页面会进行拦截,拦截到登陆页面
直接访问商品展现页面,拦截器会拦截,判断是否合理,不合理就转向登录,合理则放行
拦截器LoginInterceptor,需要实现HandlerInterceptor
public class LoginInterceptor implements HandlerInterceptor {
/*
* 进入handler(controler)方法之前进行验证
* 用于身份认证,身份授权
* 比如身份验证,如果认证通过表示当前用户登录,方行
*/
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
//获取请求的url
String url = request.getRequestURI();
//判断url是否是公开地址,这里是判断登录地址
if(url.indexOf("login.action")>=0){
//如果进行登录,放行
return true;
}
//判断session
HttpSession session = request.getSession();
String username = (String) session.getAttribute("username");
if(username != null){
//身份存在,放行
return true;
}
//执行到这表示身份需要验证,跳转到登陆页面
request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response);
return false;
}
/*
* 执行handler之后,返回ModelAndView之前
*/
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception {
// TODO Auto-generated method stub
}
/*
* 可用于统一异常处理,和日志管理
*/
public void afterCompletion(HttpServletRequest request, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
}
}
springmvc.xml中配置拦截器
<!-- 拦截器 -->
<mvc:interceptors>
<!-- 多个拦截器,执行顺序 -->
<!-- 登录认证拦截器 -->
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="com.xuezhi.www.interceptor.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
controller,里面有登录和退出功能
//登录
@RequestMapping("/login")
public String login(HttpSession session,String username,String password){
//调用业务层的登录验证方法
//保存用户名
session.setAttribute("username", username);
//redirect
return "redirect:getitems.action";
}
//退出
@RequestMapping("/tuichu")
public String tuichu(HttpSession session){
//清除session
session.invalidate();
return "redirect:login";
}
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>系统登陆</title>
</head>
<body>
<form action="${pageContext.request.contextPath }/login.action" method="post">
用户账号:<input type="text" name="username" /><br/>
用户密码 :<input type="password" name="password" /><br/>
<input type="submit" value="登陆"/>
</form>
</body>
</html>
items.jsp
用户名:${username }
<c:if test="${username != null}">
<a href="${pageContext.request.contextPath }/tuichu.action">退出</a>
</c:if>
来源:CSDN
作者:Dr_W
链接:https://blog.csdn.net/qq_42363032/article/details/104178893