拦截器_登录验证

大体思路步骤:

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>
发布了213 篇原创文章 · 获赞 104 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42363032/article/details/104178893