您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
03-Filter-案例-登录验证
发布时间:2024-12-09 14:53:59编辑:雪饮阅读()
-
其实这里讲师的意思是定义一个相对url数组,该数组包含一些相对url的一些关键字符/字符串,例如可以允许访问的css、图片静态路径,以及一些其它可以允许访问的不用登录的相对路径。
而我则是基于该理论取反,我则是仅仅限制哪些需要登录的相对url。
那么这里也不新建项目,直接基于原来的如http://www.gaojiupan.cn/manshenghuo/chengxurensheng/5784.html
里面的项目直接在web这个package中新建filter这个package
然后建立假如名为LoginFilter的拦截类,并实现以/*进行匹配的url的拦截,则如:
package com.web.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebFilter("/*")
public class LoginFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest httpServletRequest=(HttpServletRequest) servletRequest;
HttpSession httpSession= httpServletRequest.getSession();
Object user=httpSession.getAttribute("user");
/*
假定:查询所有的品牌的servlet,品牌修改的servlet,以及各自对应的独立的jsp页面都是需要登录后访问的
*/
String[] urls={"ServletQueryAll","BrandUpdateById","update.jsp","brand.jsp"};
String currentUrl=httpServletRequest.getRequestURL().toString();
for(String url:urls){
if(currentUrl.contains(url)){
if(user==null){
httpServletRequest.setAttribute("msg","清先登录");
httpServletRequest.getRequestDispatcher("/login.jsp").forward(httpServletRequest,servletResponse);
return;
}
}
}
//没有找到需要限定的则放行
filterChain.doFilter(servletRequest,servletResponse);
}
public void destroy() {
}
}
那么此时同步到tomcat的运行中环境中,则访问如
localhost:8080/zeroEightUserLoginCaseModule/
你到首页自然正常访问。
顺便一提的就是这里对应的index.jsp需要修改如:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<head>
<meta charset="utf-8">
</head>
<body>
<a href="${pageContext.request.contextPath}/ServletQueryAll">查询所有</a>
</body>
</html>
因为之前href里面是写的固定的contextPath,那么接下来就是如果你访问“查询所有”在你没有登录过的情况下,自然会跳转到登录页面了。
关键字词:Filter
相关文章
- 02-Filter-拦截路径配置&过滤器链(放行前后遵循先进后
- 01-Filter-概述&快速入门&执行流程
- OpenCart 如何配置商品筛选功能 (filter)?
- 14_Filter_案例2_过滤敏感词汇_实现(动态代理设计模式
- 10_Filter_案例1_登录验证_代码实现(过滤器中过滤请求
- 8_Filter_细节_过滤器链(多个过滤器)(相同拦截规则时候
- 7_Filter_细节_过滤器拦截方式配置(区分拦截浏览器直接
- 6_Filter_细节_过滤器拦截路径配置(servlet拦截与目录
- 5_Filter_细节_执行流程&生命周期(filter创建模板与生
- 4_Filter_细节_web.xml配置方式