实现:用户登陆之后才能进入主页,注销之后就不能进入主页
1、用户登录后,向Session中存入用户数据。
2、进入主页的时候要判断用户是否已经登录。

例:

先编写主页.jsp,即用户登录后的页面

%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>主页</title><style>h1{color: cadetblue;}</style>
</head>
<body>
<h1>这是主页,欢迎登录!</h1>
<hr>
<a href="/servlet/Logout">注销</a>
</body>
</html>

然后是登陆界面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>欢迎登录</title>
</head>
<body>
<form action="/servlet/Login" method="post"><input type="text" name="username" ><input type="submit" value="登录">
</form>
<hr>
</body>
</html>

**
**
还有一个错误页面,作用是当作当用户错误输入信息或被拦截后的页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>错误页面</title>
</head>
<body>
<h1>很抱歉,你输入的密码不太对!</h1><hr>
<a href="/Login.jsp">返回登陆页面</a>
</body>
</html>

编写LoginServlet类处理登录事件

public class LoginServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获得前端传过来的参数String username = req.getParameter("username");if (username.equals("admin")){//登陆成功将登录信息放在Session中req.getSession().setAttribute(Constant.USER_SESSION,req.getSession().getId());resp.sendRedirect("/sys/success.jsp");}else{resp.sendRedirect("/Error.jsp");}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}

上述代码是将前端传统过来的参数username做比对,当比对成功时,将用户信息存到Session中,然后servlet重定向到登陆成功界面Success.jsp,当比对失败时,返回到错误界面。

然后是编写一个Logout类实现注销,用户注销后,清除Session,回到登陆界面

public class Logout extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {Object user_session = req.getSession().getAttribute(Constant.USER_SESSION);if (user_session!=null){req.getSession().removeAttribute(Constant.USER_SESSION);resp.sendRedirect("/Login.jsp");}else{resp.sendRedirect("/Login.jsp");}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}

接下来编写SysFilter过滤器,原理是要访问Success.jsp时,必须要经过该过滤器。在用户点击注销时,Session被清空,所以经过过滤器时会被拦截下来,回到错误页面。

public class SysFilter implements Filter {@Overridepublic void doFilter(ServletRequest req, ServletResponse resp, FilterChain filterChain) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) req;HttpServletResponse response = (HttpServletResponse) resp;if (request.getSession().getAttribute(Constant.USER_SESSION)==null){response.sendRedirect("/Error.jsp");}filterChain.doFilter(req,resp);}@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void destroy() {}
}

别忘了配置web.xml

<servlet><servlet-name>LoginServlet</servlet-name><servlet-class>com.tt.servlet.LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>LoginServlet</servlet-name><url-pattern>/servlet/Login</url-pattern></servlet-mapping><servlet><servlet-name>Logout</servlet-name><servlet-class>com.tt.servlet.Logout</servlet-class></servlet><servlet-mapping><servlet-name>Logout</servlet-name><url-pattern>/servlet/Logout</url-pattern></servlet-mapping><filter><filter-name>SysFilter</filter-name><filter-class>com.tt.filter.SysFilter</filter-class></filter><filter-mapping><filter-name>SysFilter</filter-name><url-pattern>/sys/*</url-pattern></filter-mapping>

Filter过滤器实现登录权限拦截相关推荐

  1. Spring Boot Filter过滤器 实现登录

    Spring Boot Filter过滤器 实现登录 Filter类 package com.citi.test;import java.io.IOException;import javax.ser ...

  2. Filter 过滤器 自动登录

                                                        Filter 过滤器 : 其实就是对客户端发出来的请求进行过滤. 浏览器发出, 然后服务器派se ...

  3. PHP笔记-用户登录权限拦截说明

    这里给出的是一个很常用的权限拦截例子,也是目前主流的方法,但存在cookie劫持,有安全风险.后面有博文说如何去解决. 对应的权限登录的类是这样的: class PrivilegeController ...

  4. 使用Filter过滤器自动登录功能

    实现思路 1.首先判断是否勾选了自动登录按钮(LoginServlet文件中进行判断) 2.在LoginServlet 创建一个cookie 将用户的登录账号与密码保存到其中 ,存到客户端 3.返回到 ...

  5. Filter过滤器实现登录验证

    对该项目进行补充,当客户端发送请求时,验证用户是否登录 需求: 未登录状态下请求服务器端,请求将被拦截,跳转至登录页面,并提示账户未登录 对登录请求以及页面资源加载请求进行放行 实现: 使用注解拦截所 ...

  6. filter 过滤器用户登录并判断是否属于电脑端或者手机端访问

    package com.probiz.estorepf.authorityInterceptor; import javax.servlet.http.HttpServletRequest; publ ...

  7. JavaWeb入门篇(6) 实现字符过滤器 解决全局字符乱码 实现模拟权限拦截

    JavaWeb 入门篇(6.1) 过滤器 实现字符过滤器 实现模拟权限拦截 Filter(过滤器) 概述 过滤器是一个对象,它对对资源(Servlet或静态内容)的请求或对资源的响应或两者都执行过滤任 ...

  8. Filter过滤器拦截方式

    Filter过滤器有五种拦截方式,用注解配置dispatcherTypes属性 REQUEST:默认值,浏览器直接请求的资源会被过滤器拦截 FORWARD:转发访问资源会被过滤器拦截 INCLUDE: ...

  9. filter[过滤器]使用大全

    一.页面编码过滤器 1.开发EncodingFilter.java文件,继承自javax.servlet.Filter: package bluemoon.crm.systemmanage.strut ...

  10. Filter 过滤器和 Listener 监听器,java面试必问底层

    一.Filter 过滤器 1.概述 2.开发步骤 3.过滤器执行流程 4.过滤器生命周期 5.过滤器配置问题 6.过滤器链(配置多个过滤器) [二.Listener 监听器]( <一线大厂Jav ...

最新文章

  1. python 如何查看模块所有方法-如何查看python的模块
  2. 组织可以最大限度提高数据中心性能的五个步骤
  3. Ubuntu18.04的vim和ifconfig的安装
  4. Hangfire入门(任务调度)
  5. 【转载】java InputStream读取数据问题
  6. 一头盔一电极,MIT机器人读心完毕
  7. 8.1 Zend_View
  8. 常用网盘资源搜索网站
  9. matlab2016对硬件要求,matlab2016b配置libsvm的各中坑及解决办法
  10. 二叉树非递归遍历(前序遍历)
  11. 金蝶专业版怎么反过账当月_金蝶KIS专业版怎么反过账
  12. 我读《非暴力沟通》- 马歇尔 *卢森堡 - 让爱融入生活
  13. 交换机端口详细配置Trunk
  14. 进程隐藏技术系列之简介
  15. 寻仙手游维护公告服务器停服更新,寻仙手游6月7日停服更新公告
  16. 计算机插补,第三章计算机数控装置的插补原理.doc
  17. Siamese Network (应用篇5) :孪生网络用于跟踪 CVPR2016
  18. MMC、EMMC、MCP、EMCP区别
  19. Redis 基础 - 优惠券秒杀《分布式锁(初级)》
  20. PMP考试冲刺敏捷专题

热门文章

  1. Java获取汉字对应的拼音(全拼或首字母)
  2. Hibernate(四)
  3. Linux相关配置VMware安装
  4. html+js经纬度输入框值的范围限制和输入限制
  5. SQL数据库置疑问题的处理方法
  6. JavaScript学习手册八:JS函数
  7. QTableView 常用功能总结
  8. 如何下载安装weka包
  9. as几个常用模拟器连接命令
  10. 排列组合思维导图_图形推理 思维导图 百度文库