我来给你简单的说一下吧:)
首先要明确。Filter是JSP2.0里面的东西 ,顾名思义,也就是过滤器的意思
和你说说如何用吧。要用Filter就得在web.xml中配置
例:
//配置方法和配置普通的Servlet一样的哦
<filter>
<filter-name>PrivFilter</filter-name>
<filter-class>com.myPriv.filter.PrivFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>PrivFilter</filter-name>
<url-pattern>/resource/*</url-pattern>
</filter-mapping>
//com.myPriv.filter.PrivFilter是这个过滤器所在的位置。当然这个过滤器必须实现接口javax.servlet.Filter。
然后就可以在过滤器这个接口方法中增加过滤条件了
public void doFilter(ServletRequset request, ServletResponse response,FilterChain chain)
thows ServletException, IOException{
}
然后你可以把过滤条件写出来,写在doFilter方法里面
我这里写一个简单的例子:
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
HttpSession session=request.getSession();
ServletContext application=session.getServletContext();
if(session.getAttribute("userSession")==null)
{
response.sendRedirect("error/priv_error.jsp");
return;
}
else
{
chain.doFilter(request, response);
}
}
在上面的这个过滤方法中,如果session.getAttribute("userSession")==null)那就跳转到错误页面。如果不为空,则继续
所以
chain.doFilter(request, response);的意思就是跳转到下个页面,
明白了吧?
------------------------
java会在处理每一个Servlet时都走一次Filter的。所以你不必担心你的过滤不起作用了
而且chain.doFilter(request.response);
是必须的。没有他,程序就不会继续了:)他是让你的request和response继续运行哦
--------------------------------
分享到:
相关推荐
java过滤(Filter)--过滤乱码、登陆等。
是一个关于doFilter过滤器的执行过程的,详细介绍
JAVA配置跨越访问Filter APP要访问WEB系统,需要进行跨域设置 关键: public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {}
过滤器Filter也具有生命周期:init()->doFilter()->destroy(),由部署文件中的filter元素驱动。在servlet2.4中,过滤器同样可以用于请求分派器,但须在web.xml中声明,<dispatcher>INCLUDE或FORWARD或REQUEST或ERROR...
在通过Google Chrome进行URI请求时Filter的doFilter中的输出(sout)语句会被打印两次,原因是Chrome在进行请求URI的时同时请求了http://localhost:8080/favicon.ico可以使用Charles (Web Debugging Proxy)工具进行...
参数 chain 为代表当前 Filter 链的对象,在特定的操作完成后,可以在当前 Filter 对象的 doFilter 方法内部需要调用 FilterChain 对象的 chain.doFilter(request,response) 方法才能把请求交付给 Filter 链中的下一...
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core....
这个方法完成实际的过滤操作,当客户请求访问于过滤器关联的URL时,Servlet容器将先调用过滤器的doFilter方法。FilterChain参数用于访问后续过滤器。 c、destroy(): Servlet容器在销毁过滤器实例前调用该方法,...
简单的责任链代码 博文链接:https://liucunzhi.iteye.com/blog/1636463
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // Conditionally select and set the character encoding to be used if ...
为了解决这个问题,我们可以使用jsp过滤器来实现编码设置。我今天要分享的就是使用jsp过滤器解决中文乱码问题的方法。 什么是jsp过滤器? jsp过滤器(Filter)是一种特殊的jsp组件,用于对jsp页面的请求和响应进行...
如果你工程名用的不是HRManagement,请到com.hrm.filter里的loginfilter.java中在doFilter方法里修改HRManagement为你自己的工程名;页面做的可能不是太好,功能基本都实现,用户名和密码请使用admin和123.
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest reque=(HttpServletRequest) request; System.out...
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core....
本段代码用来处理jsp页面乱码问题,适用于所有乱码
解决中文乱码的Filter类,解决中文乱码的Filter类,解决中文乱码的Filter类
(3)并不是所有的浏览器都能完全支持上面的3个响应头,因此最好是同时使用上面的3个响应头。 2、Filter的理解和应用 设计一个简单的IP地址过滤器,根据用户的IP地址进行网站的访问控制。例如:禁止IP地址处在192....
public void doFilter ServletRequest sRequest ServletResponse sResponse FilterChain chain throws IOException ServletException { HttpServletRequest request HttpServletRequest sRequest; String ...
使用filter解决乱码问题,分为编写doFilter和在web.xml中配置过滤器
4. 如果调用了 chain.doFilter(request, response) 方法,将请求反给服务器,服务器再去调用相应的 Servlet。 5. 如果没有调用 chain.doFilter(request, response) 方法,说明拒绝了用户的请求。 在实际 Web 应用中...