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的过滤相关推荐

  1. 在 Java CAPS 中使用 LDAP

    http://docs.oracle.com/cd/E19509-01/820-5624/ggfpv/index.html http://docs.oracle.com/cd/E19509-01/82 ...

  2. Java Web中的Filter和Interceptor的区别

    2019独角兽企业重金招聘Python工程师标准>>> 1.问题的来源 项目中使用了Filter,进行白名单的控制,同时使用了Filter进行了跨域请求的控制,使用了Intercep ...

  3. 过滤器过滤特定的url_如何从过滤器中排除URL

    过滤器过滤特定的url 默认情况下,过滤器不支持排除特定的URL模式,每当您为过滤器定义URL模式时,任何与该模式匹配的请求都将由过滤器无例外处理. 从过滤器中排除URL的最简单方法是将过滤器映射到非 ...

  4. 如何从过滤器中排除URL

    默认情况下,过滤器不支持排除特定的URL模式,每当您为过滤器定义URL模式时,任何与该模式匹配的请求都将由过滤器无例外处理. 从过滤器中排除URL的最简单方法是将过滤器映射到非常特定的模式. 在早期开 ...

  5. Java实现向指定URL用POST方法发送Json格式字符串参数请求的工具类

    场景 SpringBoot项目中通过后台Controller向某服务接口发送POST请求. 实现 在项目pom.xml中添加依赖 <dependency><groupId>co ...

  6. java io 文件路径_如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径...

    如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径 我有一个包含2个包的项目: ListStopWords.txt ListStopWords.txt 在包(2)中我有 ...

  7. avascript怎么获取指定url网页中的内容

    目录 一.总结 一句话总结:推荐jquery中ajax,简单方便. 1.js能跨域操作么? 二.用php获取 三.jquery中ajax获取 四.通过node.js获取 回到顶部 >  一.总结 ...

  8. java获取url中参数_获取url参数(java / js)

    (1)js // 获取url参数 function getQueryString(url, name) { console.log("url = " + url) console. ...

  9. 利用python获取指定url在ATS中缓存对象的信息

    业务需求 给定url,如何查询指定的ATS中是否有该url的缓存对象信息?如果缓存了的话,希望提供该缓存对象的大小,缓存时间,缓存文件名,缓存份数(document alternative)等等信息 ...

最新文章

  1. python中不能使用索引运算的是_Python数据分析之Pandas库(笔记)
  2. 学好python工资一般多少钱-Python工资多少?就业发展前景怎么样?
  3. Python主要智能优化算法库汇总
  4. 零基础如何快速上手高精度AI模型开发?
  5. SpringBoot的配置文件-通过@ConfigurationProperties映射数据
  6. SAP CRM里的settype和relationship有什么区别
  7. redis 笔记06 发布与订阅、事务、慢查询日志、监视器
  8. c语言行列式源代码,新手作品:行列式计算C语言版
  9. android listview使用自定义的adapter没有了OnItemClickListener事件解决办法
  10. JDK Executor执行器的应用
  11. 计算机组成 交换的目的,计算机组成原理试卷.docx
  12. php文件通常包含和一些,php函数导入与文件包含:include() 和 require() 语句的区别...
  13. Openresty 学习笔记(三)扩展库之neturl
  14. 2021牛客寒假算法基础集训营6,签到题ACDFGIJ
  15. 软件测试算是后端吗,软件测试--前后端数据交互
  16. XenCenter导出和导入模板
  17. 设置JAVA-HOME的用处
  18. Java与模式.pdf
  19. [GBA ROM列表]不断补完中……
  20. 不同光栅的结构特点、优缺点以及光栅的选择

热门文章

  1. SKUA-GOCAD建模常见问题汇总
  2. 《别让这种习惯毁掉你的一生,改变他!》
  3. 12306python源码抢票(亲测可用)
  4. 【嵌入式蓝桥杯】解决LED和LCD引脚冲突的方法
  5. Tableau学习(一)
  6. Tableau创建计算字段
  7. 【R语言文本挖掘】:情感分析与词云图绘制
  8. 达人评测 小米笔记本pro14和联想yoga14s 选哪个好
  9. 5oSf6KeJ5Lul5ZCO5Y+v5Lul55SoYmFzZTY05Yqg5a+G6ZqP56yU
  10. 打造高效的项目团队,促进项目进度管理