servlet--过滤器的使用
来源:互联网 发布:介绍人工智能的小短片 编辑:程序博客网 时间:2024/06/05 11:38
在Servlet规范2.3中定义了过滤器,它能够对Servlet容器的请求和响应对象进行检查和修改。
Servlet过滤器本身并不生成请求和响应对象,只是提供过滤功能。
Servlet过滤器能够在Servlet被调用之前检查Request对象,并修改Request Header和Request内容;
在Servlet被调用之后检查Response对象,修改Response Header和Response的内容。
Servlet过滤器可以过滤的Web组件包括Servlet,JSP和HTML等文件。
Filter类似于IO中的过滤流,实现也类似于Servlet。
所有的Servlet过滤器都必须实现javax.servlet.Filter接口,并实现该接口中的三个方法:
在Filter中访问application
参考:
http://www.itzhai.com/java-web-notes-servlet-filters-in-the-filter-writing-the-introduction-and-use-of-filters.html
http://zhangjunhd.blog.51cto.com/113473/20629/
Servlet过滤器本身并不生成请求和响应对象,只是提供过滤功能。
Servlet过滤器能够在Servlet被调用之前检查Request对象,并修改Request Header和Request内容;
在Servlet被调用之后检查Response对象,修改Response Header和Response的内容。
Servlet过滤器可以过滤的Web组件包括Servlet,JSP和HTML等文件。
Filter类似于IO中的过滤流,实现也类似于Servlet。
所有的Servlet过滤器都必须实现javax.servlet.Filter接口,并实现该接口中的三个方法:
init(FilterConfig filterConfig)Filter的init方法中提供了一个FilterConfig对象,提供相关的操作:
Servlet过滤器的初始化方法,Servlet容器创建Servlet过滤器实例后将调用该方法。该方法将读取web.xml文件中Servlet过滤器的初始化参数。
doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
该方法完成实际的过滤操作,当客户端请求方法与过滤器设置匹配的URL时,Servlet容器将先调用过滤器的doFilter方法。FilterChain用户访问后续过滤器。这里的ServletRequest和ServletResponse一般需要转换成具体的Servlet实现对于的对象,如:HttpServletRequest和HttpServletResponse。
destroy()
Servlet容器在销毁过滤器实例前调用该方法,在该方法中释放Servlet过滤器占用的资源。
<filter> <filter-name>LoginFilter</filter-name> <filter-class>com.itzhai.login.LoginFilter</filter-class> <init-param> <param-name>username</param-name> <param-value>arthinking</param-value> </init-param></filter>@Overridepublic void init(FilterConfig filterConfig) throws ServletException { //获取Filter初始化参数 String username = filterConfig.getInitParameter("username");}
在Filter中访问application
ServletContext context = filterConfig.getServletContext();
也可以在doFilter方法中根据转换好的request获取:
HttpServletRequest req = (HttpServletRequest)request;
ServletContext context = req.getSession().getServletContext();
简单的过滤器实现:
public class LoginFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("init LoginFilter"); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //把ServletRequest和ServletResponse转换成真正的类型 HttpServletRequest req = (HttpServletRequest)request; HttpSession session = req.getSession(); //由于web.xml中设置Filter过滤全部请求,可以排除不需要过滤的url String requestURI = req.getRequestURI(); if(requestURI.endsWith("login.jsp")){ chain.doFilter(request, response); return; } //判断用户是否登录,进行页面的处理 if(null == session.getAttribute("user")){ //未登录用户,重定向到登录页面 ((HttpServletResponse)response).sendRedirect("login.jsp"); return; } else { //已登录用户,允许访问 chain.doFilter(request, response); } } @Override public void destroy() { System.out.println("destroy!!!"); }}
XML配置(也可以以通过注解的方式实现)
<filter> <filter-name>LoginFilter</filter-name> <filter-class>com.itzhai.login.LoginFilter</filter-class></filter><filter-mapping> <filter-name>LoginFilter</filter-name> <url-pattern>/*</url-pattern></filter-mapping>
参考:
http://www.itzhai.com/java-web-notes-servlet-filters-in-the-filter-writing-the-introduction-and-use-of-filters.html
http://zhangjunhd.blog.51cto.com/113473/20629/
0 0
- servlet过滤器的使用
- servlet过滤器的使用
- 过滤器的使用servlet
- servlet--过滤器的使用
- servlet过滤器的使用
- servlet 过滤器的使用
- [Servlet&JSP] 过滤器的使用
- javax.servlet.Filter 的过滤器的使用
- Servlet中的Filter过滤器的介绍和使用 编写过滤器
- JAVA WEB 中Servlet过滤器的使用
- Servlet总结四(过滤器的使用)
- Servlet过滤器Filter使用
- servlet过滤器使用
- Servlet过滤器Filter使用 .
- Servlet过滤器使用
- servlet过滤器使用
- Servlet的过滤器
- Servlet的Filter过滤器
- 敏捷软件开发原则模式与实践语录参考
- 在.NET中调用DataWindow操作数据库
- 验证是否回文
- Correct Method of Changing the IP Address in 11i & R12 (Doc ID 751328.1)
- ams增加用户验证,实现开机自动推流。
- servlet--过滤器的使用
- hdu 3336 Count the string (DP+kmp)
- 公司评论
- 【Android】4.04系统WebView播放不了Flash问题的解决办法
- 关于指针的一些知识点
- 设置状态栏字体颜色
- android library projects cannot be launched
- EAS权限查询
- 完美代价