filter java exclude_Filter中排除对指定URL的过滤
1. 我们可以在web.xml中配置filter来对指定的URL进行过滤,进行一些特殊操作如权限验证等。
SessionFilter
com.xm.chris.SessionFilter
SessionFilter
/resources/*
public class SessionFilter implementsFilter {private static final String CONTENT_TYPE = "text/html; charset=UTF-8";private FilterConfig _filterConfig = null;public void init(FilterConfig filterConfig) throwsServletException {
_filterConfig=filterConfig;
}public voiddestroy() {
_filterConfig= null;
}public voiddoFilter(ServletRequest request, ServletResponse response,
FilterChain chain)throwsIOException,
ServletException {
HttpServletRequest rq=(HttpServletRequest) request;
HttpSession httpSession=rq.getSession();
Long userId= (Long) httpSession.getAttribute("userId");if (userId == null) {
response.setContentType(CONTENT_TYPE);
PrintWriter out=response.getWriter();
out.println("");
out.println("
Error");
out.println("
");
out.println("
错误.
");
out.println("");
out.close();
}else{
chain.doFilter(request, response);
}
}
}
这时所有请求了contextPath/resources/*路径的request都会被SessionFilter验证是否登录。
2. 但是我们有一些特定的url不想验证登录,想要直接能够访问,怎么办呢?
这时可以配置一个参数,告诉Filter哪些url不想验证。
SecurityFilter
com.oracle.ccsc.jcs.sx.filter.SecurityFilter
excludedPages
/xm/portal/notice
然后在Filter中就可以根据参数判断是否需要过滤。
public class SecurityFilter implementsFilter {private static final String CONTENT_TYPE = "text/html; charset=UTF-8";private FilterConfig _filterConfig = null;privateString excludedPages;privateString[] excludedPageArray;public void init(FilterConfig filterConfig) throwsServletException {
_filterConfig=filterConfig;
excludedPages= filterConfig.getInitParameter("excludedPages");if(StringUtils.isNotEmpty(excludedPages)) {
excludedPageArray= excludedPages.split(",");
}
}public voiddestroy() {
_filterConfig= null;
}public voiddoFilter(ServletRequest request, ServletResponse response,
FilterChain chain)throwsIOException,
ServletException {
HttpServletRequest rq=(HttpServletRequest) request;boolean isExcludedPage = false;for (String page : excludedPageArray) { //判断是否在过滤url之外if(rq.getPathInfo().equals(page)) {
isExcludedPage= true;break;
}
}if (isExcludedPage) { //在过滤url之外
chain.doFilter(request, response);
}else { //不在过滤url之外,判断登录
HttpSession httpSession =rq.getSession();
Long userId= (Long) httpSession.getAttribute("userId");if (userId == null) {
response.setContentType(CONTENT_TYPE);
PrintWriter out=response.getWriter();
out.println("");
out.println("
Error");
out.println("
");
out.println("
错误.
");
out.println("");
out.close();
}else{
chain.doFilter(request, response);
}
}
}
}
3. 关于用Servlet获取URL地址。
在HttpServletRequest类里,有以下六个取URL的函数
getContextPath 取得项目名
getServletPath 取得Servlet名
getPathInfo 取得Servlet后的URL名,不包括URL参数
getRequestURL 取得不包括参数的URL
getRequestURI 取得不包括参数的URI,即去掉协议和服务器名的URL
具体如下图:
相对应的函数的值如下:
getContextPath:/ServletTest
getServletPath:/main
getPathInfo:/index/testpage/test
getRequestURL:http://localhost:8080/ServletTest/main/index/testpage/test
getRequestURI:/ServletTest/main/index/testpage/test
filter java exclude_Filter中排除对指定URL的过滤相关推荐
- 在 Java CAPS 中使用 LDAP
http://docs.oracle.com/cd/E19509-01/820-5624/ggfpv/index.html http://docs.oracle.com/cd/E19509-01/82 ...
- Java Web中的Filter和Interceptor的区别
2019独角兽企业重金招聘Python工程师标准>>> 1.问题的来源 项目中使用了Filter,进行白名单的控制,同时使用了Filter进行了跨域请求的控制,使用了Intercep ...
- 过滤器过滤特定的url_如何从过滤器中排除URL
过滤器过滤特定的url 默认情况下,过滤器不支持排除特定的URL模式,每当您为过滤器定义URL模式时,任何与该模式匹配的请求都将由过滤器无例外处理. 从过滤器中排除URL的最简单方法是将过滤器映射到非 ...
- 如何从过滤器中排除URL
默认情况下,过滤器不支持排除特定的URL模式,每当您为过滤器定义URL模式时,任何与该模式匹配的请求都将由过滤器无例外处理. 从过滤器中排除URL的最简单方法是将过滤器映射到非常特定的模式. 在早期开 ...
- Java实现向指定URL用POST方法发送Json格式字符串参数请求的工具类
场景 SpringBoot项目中通过后台Controller向某服务接口发送POST请求. 实现 在项目pom.xml中添加依赖 <dependency><groupId>co ...
- java io 文件路径_如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径...
如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径 我有一个包含2个包的项目: ListStopWords.txt ListStopWords.txt 在包(2)中我有 ...
- avascript怎么获取指定url网页中的内容
目录 一.总结 一句话总结:推荐jquery中ajax,简单方便. 1.js能跨域操作么? 二.用php获取 三.jquery中ajax获取 四.通过node.js获取 回到顶部 > 一.总结 ...
- java获取url中参数_获取url参数(java / js)
(1)js // 获取url参数 function getQueryString(url, name) { console.log("url = " + url) console. ...
- 利用python获取指定url在ATS中缓存对象的信息
业务需求 给定url,如何查询指定的ATS中是否有该url的缓存对象信息?如果缓存了的话,希望提供该缓存对象的大小,缓存时间,缓存文件名,缓存份数(document alternative)等等信息 ...
最新文章
- python中不能使用索引运算的是_Python数据分析之Pandas库(笔记)
- 学好python工资一般多少钱-Python工资多少?就业发展前景怎么样?
- Python主要智能优化算法库汇总
- 零基础如何快速上手高精度AI模型开发?
- SpringBoot的配置文件-通过@ConfigurationProperties映射数据
- SAP CRM里的settype和relationship有什么区别
- redis 笔记06 发布与订阅、事务、慢查询日志、监视器
- c语言行列式源代码,新手作品:行列式计算C语言版
- android listview使用自定义的adapter没有了OnItemClickListener事件解决办法
- JDK Executor执行器的应用
- 计算机组成 交换的目的,计算机组成原理试卷.docx
- php文件通常包含和一些,php函数导入与文件包含:include() 和 require() 语句的区别...
- Openresty 学习笔记(三)扩展库之neturl
- 2021牛客寒假算法基础集训营6,签到题ACDFGIJ
- 软件测试算是后端吗,软件测试--前后端数据交互
- XenCenter导出和导入模板
- 设置JAVA-HOME的用处
- Java与模式.pdf
- [GBA ROM列表]不断补完中……
- 不同光栅的结构特点、优缺点以及光栅的选择