JavaWeb Filter 检查登录
来源:互联网 发布:淘宝账号怎么升级心 编辑:程序博客网 时间:2024/06/05 22:43
原作者:尚硅谷-佟刚
检查登录的过滤器
程序目录结构
web.xml
<!-- 存放到session中的键 --> <context-param> <param-name>sessionKey</param-name> <param-value>SESSIONKEY</param-value> </context-param> <!-- 重定向的页面 --> <context-param> <param-name>redirectPage</param-name> <param-value>/checklist/login.jsp</param-value> </context-param> <!-- 不需要拦截的列表 --> <context-param> <param-name>unCheckedUrls</param-name> <param-value>/checklist/login.jsp,/checklist/doLogin.jsp,/checklist/list.jsp,/checklist/a.jsp</param-value> </context-param> <filter> <filter-name>loginFilter</filter-name> <filter-class>com.atweihai.javaweb.filter.LoginFilter</filter-class> </filter> <!-- Filter过滤器 拦截的列表 --> <filter-mapping> <filter-name>loginFilter</filter-name> <url-pattern>/checklist/*</url-pattern> </filter-mapping>
login.jsp
doLogin.jsp
list.jsp
a.jsp(b.jsp,c.jsp等类似)
自定义实现Filter接口的HttpFilter类
package com.atweihai.javaweb.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** *自定义实现Filter接口的HttpFilter类 */public abstract class HttpFilter implements Filter{ private FilterConfig filterConfig; public FilterConfig getFilterConfig() { return filterConfig; } @Override public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig=filterConfig; init(); } //供子类初始化 protected void init() throws ServletException {} @Override public void doFilter(ServletRequest req, ServletResponse resp, FilterChain filterChain) throws IOException, ServletException { try { HttpServletRequest request=(HttpServletRequest) req; HttpServletResponse response=(HttpServletResponse) resp; doFilter(request, response, filterChain); } catch (Exception e) { e.printStackTrace(); } } //供子类进行重写 protected abstract void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws IOException, ServletException; @Override public void destroy() {}}
LoginFilter.java
package com.atweihai.javaweb.filter;import java.io.IOException;import java.util.Arrays;import java.util.List;import javax.servlet.FilterChain;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class LoginFilter extends HttpFilter{ String sessionKey; String redirectPage; String unCheckedUrls; //从web.xml中获取对应的值 @Override protected void init() throws ServletException { ServletContext servletContext=getFilterConfig().getServletContext(); sessionKey=servletContext.getInitParameter("sessionKey"); redirectPage=servletContext.getInitParameter("redirectPage"); unCheckedUrls=servletContext.getInitParameter("unCheckedUrls"); } @Override public void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws IOException, ServletException { String servletPath=request.getServletPath(); //获取不需要检查的页面列表 List<String> unUrls=Arrays.asList(unCheckedUrls.split(",")); //判断不需要检查的页面 if(unUrls.contains(servletPath)){ filterChain.doFilter(request, response); return; } //判断是否登陆 HttpSession session=request.getSession(); Object sessionValue=session.getAttribute(sessionKey); if(sessionValue!=null){ filterChain.doFilter(request, response); return; } //重定向到登录页面 response.sendRedirect(request.getContextPath()+redirectPage); }}
页面运行效果
login.jsp
list.jsp
d.jsp
阅读全文
0 0
- JavaWeb Filter 检查登录
- Javaweb验证登录 Filter
- Filter实际应用--检查用户是否登录的过滤器
- javaWeb-filter
- JavaWeb-Filter
- javaweb登录
- JavaWeb-过滤器Filter学习(三)实现用户的自动登录与IP黑名单过滤
- JavaWeb--Servlet过滤器Filter和SpringMVC的HandlerInterceptor(Session和Cookie登录认证)
- java Filter之拦截jsp页面检查用户是否已经登录
- javaweb之Filter详解
- javaweb之Filter详解
- javaweb之Filter详解
- javaweb之Filter详解
- JavaWeb开发过滤器Filter
- javaweb之Filter详解
- javaweb之Filter详解
- JavaWeb -- Servlet Filter 过滤器
- javaweb之Filter详解
- C++文件读写详解(ofstream,ifstream,fstream)
- 二叉树3中遍历方法的迭代实现
- c++类的二阶构造
- 第二周—C/C++语言中函数参数传递的三种方式
- Google官方刷题资源
- JavaWeb Filter 检查登录
- Android 中图标的尺寸要求
- Tomcat WebappClassLoader 类加载机制源码分析
- 数据结构上机实践第二周项目1
- OpenGL3.0常用函数详解
- POJ 2318(计算几何 )
- MVC与三层结构的差别
- Android init.rc启动服务
- UVA 12563 劲歌金曲(0-1背包变形~)