Servlet 过滤器Filter
程序员文章站
2022-06-06 11:51:44
特点 1)Filter是依赖于Servlet容器,属于Servlet规范的一部分,在Servlet API中定义了三个接口类:Filter, FilterChain, FilterConfig。 2)基本功能是对 调用 Servlet 的过程进行拦截,从而在 Servlet 进行响应处理的前后实现一 ......
特点
1)filter是依赖于servlet容器,属于servlet规范的一部分,在servlet api中定义了三个接口类:filter, filterchain, filterconfig。
2)基本功能是对 调用 servlet 的过程进行拦截,从而在 servlet 进行响应处理的前后实现一些特殊的功能。
3)需要在 web.xml 文件中进行注册和设置它所能拦截的资源。
编码
public class usernofilter implements filter {
private filterconfig filterconfig; //获取参数配置
public void init(filterconfig fconfig) throws servletexception {
this.filterconfig = fconfig;
}
/**
* 业务逻辑判断
*/
public void dofilter(servletrequest request, servletresponse response, filterchain chain) throws ioexception, servletexception {
string inituser = filterconfig.getinitparameter("userno");
string userno = request.getparameter("userno");//从提交请求获取用户账号
if(!inituser.equals(userno)){
request.setattribute("message", "用户名不正确");
request.getrequestdispatcher("/index.jsp").forward(request, response);
return;
}
chain.dofilter(request, response);
}
public void destroy() {
}
}
web.xml参数
<!-- 配置过滤器 -->
<filter>
<display-name>usernofilter</display-name>
<filter-name>usernofilter</filter-name>
<filter-class>com.demo.filter.usernofilter</filter-class>
<init-param>
<param-name>userno</param-name>
<param-value>admin</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>usernofilter</filter-name>
<url-pattern>/hello.jsp</url-pattern>
</filter-mapping>
应用
1)指定编码格式
request.setcharacterencoding(encoding);
filterchain.dofilter(request, response);
2)用户是否登录、用户能否访问菜单
string userid=(string) session.getattribute("userid");
if (userid ==null){
}
推荐阅读
-
基于Django filter中用contains和icontains的区别(详解)
-
Java web Filter, Strurs2 Interceptor 和 SpringMVC Interceptor 三者之间的联系与区别
-
filter2D图像卷积
-
php5apache2_2.dll 和php5apache2_2_filter 有什么区别
-
PCL:使用VoxelGrid filter对点云进行下采样
-
opencv自定义滤波器(filter2D函数的使用)
-
OpenCV3学习笔记(6):图像卷积操作,filter2D()
-
OpenCV学习十五:filter2D 线性滤波
-
JavaScript数组迭代方法:forEach(),map(),filter(),reduce(),every(),some(),indexOf(),lastIndexOf(),find()
-
ES6 数组常用方法 some()、every()、find()、findIndex()、filter()、includes()