100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 拦截器实现网页用户登陆

拦截器实现网页用户登陆

时间:2021-04-17 09:24:13

相关推荐

拦截器实现网页用户登陆

拦截器实现网页用户登陆

实现思路

1.有一个登陆页面,需要写一个controller访问页面。

2. 登陆页面有一提交表单的动作。需要在controller中处理。判断用户名密码是否正确。如果正确,向session中写入用户信息。返回登陆成功。

3. 拦截用户请求,判断用户是否登陆。如果用户已经登陆。放行, 如果用户未登陆,跳转到登陆页面

1.编写一个登陆页面login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Title</title></head><h1>登陆页面</h1><hr><body><form action="${pageContext.request.contextPath}/user/login">用户名:<input type="text" name="username"><br>密码:<input type="password" name="pwd"><br><input type="submit" value="提交"></form></body></html>

2.编写一个Controller处理请求

@Controller@RequestMapping("/user")public class UserController {//跳转到登陆页面@RequestMapping("/jumplogin")public String jumpLogin(){return "login";}//跳转到成功页面@RequestMapping("/jumpSuccess")public String jumpSuccess(){return "success";}//登陆提交@RequestMapping("/login")public String login(HttpSession session, String username, String pwd){//向session记录用户身份信息System.out.println("接收前端==="+username);session.setAttribute("user",username);return "success";}//退出登陆@RequestMapping("logout")public String logout(HttpSession session){//session过期session.invalidate();return "login";}}

3.编写一个登陆成功的页面success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Title</title></head><body><h1>登陆成功页面</h1><hr>${user}<a href="${pageContext.request.contextPath}/user/logout">注销</a></body></html>

4.在 index 页面上测试跳转!启动Tomcat 测试,未登录也可以进入主页!

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>$Title$</title></head><body><h1>首页</h1><hr><%-- 登陆--%><a href="${pageContext.request.contextPath}/user/jumplogin">登陆</a><a href="${pageContext.request.contextPath}/user/jumpSuccess">成功页面</a></body></html>

5.编写用户登陆拦截器

public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//如果是登陆页面则放行System.out.println("uri: "+request.getRequestURI());if(request.getRequestURI().contains("login")){return true;}HttpSession session=request.getSession();//如果用户已登陆也放行if(session.getAttribute("user")!=null){return true;}//用户没有登陆跳转到登陆页面request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request,response);return false;}}

在springmvc文件中配置拦截器

<!-- 拦截器配置--><mvc:interceptors><mvc:interceptor><!-- /**包括路径及其子路径--><!-- /adimin/* 拦截的是/admin/add等等这种,/admin/add/user不会被拦截--><!-- /admin/** 拦截的是/admin/下的所有--><mvc:mapping path="/**"/><bean class="com.lding.config.MyInterceptor"></bean></mvc:interceptor><mvc:interceptor><mvc:mapping path="/user/**"/><bean id="loginInterceptor" class="com.lding.config.LoginInterceptor"></bean></mvc:interceptor></mvc:interceptors>

直接点击成功页面进不去,会自动跳转到登陆页面,登陆后才能进入成功页面

如果对您有帮助,免费的赞点一个~~~感谢🙏

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。