首页编程filterconfig,怎么为filter-mapping中的#设置例外

filterconfig,怎么为filter-mapping中的#设置例外

编程之家 2023-11-01 197次浏览

大家好,今天给各位分享filterconfig的一些知识,其中也会对怎么为filter-mapping中的/*设置例外进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!

filterconfig,怎么为filter-mapping中的#设置例外

怎么为filter-mapping中的/*设置例外

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

<!– session过滤filter–>

<filter>

<filter-name>SessionFilter</filter-name>

<filter-class>

com.iqbon.jcms.web.util.SessionFilter

filterconfig,怎么为filter-mapping中的#设置例外

</filter-class>

<init-param>

<param-name>excludedPages</param-name>

<param-value>/admin/login.do</param-value>

</init-param>

</filter>

filterconfig,怎么为filter-mapping中的#设置例外

<filter-mapping>

<filter-name>SessionFilter</filter-name>

<url-pattern>/admin/*</url-pattern>

</filter-mapping>

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

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

首先加上初始化参数:

<init-param>

<param-name>excludedPages</param-name>

<param-value>/admin/login.do</param-value>

</init-param>

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;

import javax.servlet.http.HttpSession;

import org.apache.commons.lang3.StringUtils;

import com.iqbon.jcms.util.KeyConstant;

/**

* session过滤器

*/

public class SessionFilter implements Filter{

/**

*需要排除的页面

*/

private String excludedPages;

private String[] excludedPageArray;

/**

*@see Filter#destroy()

*/

public void destroy(){

return;

}

/**

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

*/

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException{

boolean isExcludedPage= 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

*/

public void init(FilterConfig fConfig) throws ServletException{

excludedPages= fConfig.getInitParameter(“excludedPages”);

if(StringUtils.isNotEmpty(excludedPages)){

excludedPageArray= excludedPages.split(“,”);

}

return;

}

}

Spring Boot 之 Filter

Filter是request/response执行过滤任务的对象,资源可以是一个servlet或者静态资源。Filter在 doFilter方法中执行过滤逻辑。每个Filter都有一个FilterConfig对象,可以从FilterConfig对象获取初始化参数和ServletContext引用。

Filter工作在客户端和Servlet之间,可以对客户端request以及服务器的response进行处理,基于此Filter可以用于实现以下功能:

定义一个Filter需要 javax.servlet.Filter接口, Filter有如下三个方法:

下面定义一个简单的Filter,在 init()方法中初始化Filter的名字,在 doFilter方法中简单的记录Filter被调用, destroy()简单的记录方法被调用。

FirstFilter:

在完成Filter的创建后,还需要将Filter注册到Web容器(添加到Filter chain)才能对request/response进行过滤。在Spring Boot中注册Filter非常简单,下面是一个简单注册Filter的样例:

启动Spring Boot并调用一个测试接口,测试接口可从这里获取。

应用的输出如下:

从输出中可以看出Filter完成了初始化,Filter的名字是“first filter”。

如果定义了多个Filter,并期望request/response可以按照设定的顺序依次经过各个Filter(例如:request需要先经过鉴权Filter,鉴权通过后再进入参数校验Filter等),这种情况如何保证Filter的执行顺序呢?在注册Filter的时候可以给每个Filter设置一个数字表示的order,值越小Filter在chain中的位置越靠前。为了严重Filter的执行顺序,我们定义第二个Filter:SecondFilter,源码可从这里获取。然后将两个Filter添加到Web容器中:

启动Spring Boot并调用一个测试接口,测试接口可从这里获取。

应用的输出如下:

request依次经过first filter-> second filter,response依次经过second filter-> first filter,Filter的执行顺序满足我们的期望。

通过上面学习的知识,我们实现一个鉴权的Filter。假设客户端访问资源时需要在请求的header中携带两个参数:user和password(生成环境携带账号密码是十分危险的,应该考虑基于Token的鉴权),如果有一个参数没有携带则返回客户端错误的请求(400 Bad Request),如果user和password不匹配或系统不存在用户则返回无权访问(403 Forbidden)。客户端每成功一次,系统都会记录用户的访问次数。

Filter的实现如下:

过滤步骤:

完整的源码可以从这里获取。

matlab filter2()函数怎么用

matlab函数:fzero。

功能:查找一元连续函数的零点。

用法:

x= fzero(fun,x0)%查找fun函数在x0附近的零点。

x= fzero(fun,x0,options)%由指定的优化参数options进行最小化。也可以用optimset函数定义一些参数。

[x,fval]= fzero(...)。

[x,fval,exitflag]= fzero(...)。

[x,fval,exitflag,output]= fzero(...)。

Example 1:求sin函数在3附近的零点。

x= fzero(@sin,3)。

x= 3.1416。

Example 2:求cos函数在1和2之间的零点。

x= fzero(@cos,[1 2])。

x= 1.5708。

Example 3:求函数f(x)=x^3-2*x- 5在2附近的零点。

x= fzero(@(x)x.^3-2*x-5,2)。

x= 2.0946。

扩展资料:

scanf格式输入函数。

printf格式输出函数。

systemdos命令函数。

sort排序。

main主函数。

fgets文件读取字符串函数。

fputs文件写入字符串函数。

fscanf文件格式读取函数。

fprintf文件格式写入函数。

fopen打开文件函数。

getchar输入字符函数。

putchar输出字符函数。

malloc动态申请内存函数。

free释放内存函数。

abs求绝对值数学函数。

sqrt求平方根数学函数。

参考资料来源:百度百科-matlab函数

好了,关于filterconfig和怎么为filter-mapping中的/*设置例外的问题到这里结束啦,希望可以解决您的问题哈!

css3动画 css3 实现动画效果,怎样使他无限循环动下去 舟山网站制作?舟山钓鱼人论坛网站为什么打不开了