filter java exclude_filter配置多个url-pattern和排除个别servlet

转载自:https://blog.csdn.net/hanghangde/article/details/51298221

侵删

最近做项目遇到一个Filter需要配置多个url-pattern,上网查了下资料,经测试,现总结下一、完全错误的方式

Java代码  a6aa19542d2c604e263d4c1094f30ade.png

authority

com.util.AuthorityFilter

authority

/pages/cmm/*;/pages/genbill/*

二、有一定作用,但不能实现需要的效果,只会过滤最下面配置的url-pattern。

Java代码  a6aa19542d2c604e263d4c1094f30ade.png

authority

com.util.AuthorityFilter

authority

/pages/cmm/*

/pages/genbill/*

三、现在给出正确的配置方式

Java代码  a6aa19542d2c604e263d4c1094f30ade.png

authority

com.util.AuthorityFilter

authority

/pages/genbill/*

authority

/pages/cmm/*

在web.xml声明的一个filter中:

SessionFilter

com.iqbon.jcms.web.util.SessionFilter

excludedPages

/admin/login.do

SessionFilter

/admin/*

可以看到url-pattern的设置里面过滤的url规则是/admin/*,如果要把/admin/login.do排除在过滤url之外。

可以结合init-param的初始化参数和HttpServletRequest的getServletPath()方法来判断。

excludedPages

/admin/login.do

其次在filter的java代码中加上判断:

importjava.io.IOException;

importjavax.servlet.Filter;

importjavax.servlet.FilterChain;

importjavax.servlet.FilterConfig;

importjavax.servlet.ServletException;

importjavax.servlet.ServletRequest;

importjavax.servlet.ServletResponse;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importjavax.servlet.http.HttpSession;

importorg.apache.commons.lang3.StringUtils;

importcom.iqbon.jcms.util.KeyConstant;

/**

* session过滤器

*/

publicclassSessionFilterimplementsFilter {

/**

* 需要排除的页面

*/

privateString excludedPages;

privateString[] excludedPageArray;

/**

* @see Filter#destroy()

*/

publicvoiddestroy() {

return;

}

/**

* 对session进行判断当前访问是否有登录

*/

publicvoiddoFilter(ServletRequest request, ServletResponse response, FilterChain chain)throwsIOException, ServletException {

booleanisExcludedPage =false;

for(String page : excludedPageArray) {//判断是否在过滤url之外

if(((HttpServletRequest) request).getServletPath().equals(page)){

isExcludedPage = true;

break;

}

}

if(isExcludedPage) {//在过滤url之外

chain.doFilter(request, response);

} else{//不在过滤url之外,判断session是否存在

HttpSession session = ((HttpServletRequest) request).getSession();

if(session ==null|| session.getAttribute(KeyConstant.SESSION_KEY_USER) ==null) {

((HttpServletResponse) response).sendRedirect(“/login.htm”);

} else{

chain.doFilter(request, response);

}

}

}

/**

* 初始化函数,获取需要排除在外的url

*/

publicvoidinit(FilterConfig fConfig)throwsServletException {

excludedPages = fConfig.getInitParameter(“excludedPages”);

if(StringUtils.isNotEmpty(excludedPages)) {

excludedPageArray = excludedPages.split(“,”);

}

return;

}

}

最近做项目遇到一个Filter需要配置多个url-pattern,上网查了下资料,经测试,现总结下一、完全错误的方式

Java代码  a6aa19542d2c604e263d4c1094f30ade.png

authority

com.util.AuthorityFilter

authority

/pages/cmm/*;/pages/genbill/*

二、有一定作用,但不能实现需要的效果,只会过滤最下面配置的url-pattern。

Java代码  a6aa19542d2c604e263d4c1094f30ade.png

authority

com.util.AuthorityFilter

authority

/pages/cmm/*

/pages/genbill/*

三、现在给出正确的配置方式

Java代码  a6aa19542d2c604e263d4c1094f30ade.png

authority

com.util.AuthorityFilter

authority

/pages/genbill/*

authority

/pages/cmm/*

在web.xml声明的一个filter中:

SessionFilter

com.iqbon.jcms.web.util.SessionFilter

excludedPages

/admin/login.do

SessionFilter

/admin/*

可以看到url-pattern的设置里面过滤的url规则是/admin/*,如果要把/admin/login.do排除在过滤url之外。

可以结合init-param的初始化参数和HttpServletRequest的getServletPath()方法来判断。

excludedPages

/admin/login.do

其次在filter的java代码中加上判断:

importjava.io.IOException;

importjavax.servlet.Filter;

importjavax.servlet.FilterChain;

importjavax.servlet.FilterConfig;

importjavax.servlet.ServletException;

importjavax.servlet.ServletRequest;

importjavax.servlet.ServletResponse;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importjavax.servlet.http.HttpSession;

importorg.apache.commons.lang3.StringUtils;

importcom.iqbon.jcms.util.KeyConstant;

/**

* session过滤器

*/

publicclassSessionFilterimplementsFilter {

/**

* 需要排除的页面

*/

privateString excludedPages;

privateString[] excludedPageArray;

/**

* @see Filter#destroy()

*/

publicvoiddestroy() {

return;

}

/**

* 对session进行判断当前访问是否有登录

*/

publicvoiddoFilter(ServletRequest request, ServletResponse response, FilterChain chain)throwsIOException, ServletException {

booleanisExcludedPage =false;

for(String page : excludedPageArray) {//判断是否在过滤url之外

if(((HttpServletRequest) request).getServletPath().equals(page)){

isExcludedPage = true;

break;

}

}

if(isExcludedPage) {//在过滤url之外

chain.doFilter(request, response);

} else{//不在过滤url之外,判断session是否存在

HttpSession session = ((HttpServletRequest) request).getSession();

if(session ==null|| session.getAttribute(KeyConstant.SESSION_KEY_USER) ==null) {

((HttpServletResponse) response).sendRedirect(“/login.htm”);

} else{

chain.doFilter(request, response);

}

}

}

/**

* 初始化函数,获取需要排除在外的url

*/

publicvoidinit(FilterConfig fConfig)throwsServletException {

excludedPages = fConfig.getInitParameter(“excludedPages”);

if(StringUtils.isNotEmpty(excludedPages)) {

excludedPageArray = excludedPages.split(“,”);

}

return;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
set_level_shifter strategy_name -domain domain_name [-elements port_pin_list] [-exclude_elements exclude_list] [-applies_to inputs | outputs | both] [-applies_to_boundary upper | lower | both] [-threshold float] [-rule low_to_high | high_to_low | both] [-location self | parent | fanout | automatic] [-no_shift] [-force_shift] [-name_prefix prefix_string] [-name_suffix suffix_string] [-update] set_level_shifter –domain domain_name –elements ... [–applies_to ...] set_level_shifter –domain domain_name –applies_to [inputs | outputs] set_level_shifter –domain domain_name map_level_shifter_cell strategy_name -domain power_domain_name -lib_cells list use_interface_cell interface_implementation_name -domain domain_name -lib_cells lib_cell_list -strategy list_of_one_level_shifter_and_or_one_isolation set_isolation isolation_strategy_name -domain power_domain [-elements objects] [-exclude_elements exclude_list] [-applies_to inputs | outputs | both] [-applies_to_boundary upper | lower | both] [-clamp_value 0 | 1 | latch] [-isolation_power_net isolation_power_net] [-isolation_ground_net isolation_ground_net] [-isolation_supply isolation_supply_set] [-source source_supply_set_name] [-sink sink_supply_set_name] [-diff_supply_only true | false] [-no_isolation] [-force_isolation] [-name_prefix prefix_string] set_isolation_control isolation_strategy_name -domain power_domain -isolation_signal isolation_signal load_upf upf_file_name [-supplemental supf_file_name] [-scope string] [-noecho] save_upf upf_file_name [-supplemental supf_file_name] [-include_supply_exceptions] [-full_upf] 解释每一句命令什么意思
07-22
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值