javaweb中的过滤器学习总结(1)---myeclipse下的第一个Filter
来源:互联网 发布:淘宝游戏王正版 编辑:程序博客网 时间:2024/06/05 21:00
1、 什么是过滤器?
过滤器是一个服务器端的组件,可以截取用户端的请求与响应信息,并对这些信息过滤。过滤源—>过滤规则 ->过滤结果
举个例子来看:
我们有时候会在某些网站上去浏览某些内容,比如有的网址要求必须登录才可以去浏览此网站上的视频内容,这就是开发人员在后台写的过滤器的作用。在用户请求某些页面时,启用一个过滤器来对某些信息来进行过滤,以此来确定是否响应某些内容给用户的请求。
2、Filter的实现
Servlet中的API实现了Filter接口,如果某个java类实现了该接口,则该java类称为Filter过滤器。通过Filter技术,开发人员可以在用户访问某些web资源前,对访问的请求进行拦截。
Filter开发分为两个步骤:
<1>编写java类实现Filter接口,重写init(),doFilter(),destroy()方法。<2>编辑web.xml文件,对Filter进行注册,并设置拦截的资源
myeclipse创建Filter需要注意的:
注意:
在myeclipse中创建WebProject时,记得勾选web.xml,否则会没有。如下:
这也是我的第一个demo,没有勾选,所以没有web.xml
怎么勾选如下图:
<1>创建webproject时记得一路next,不要finish:
代码演示编写java类:
package com.SecondFilter;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;/*第一个Filter实例,该java类实现了Filter接口,因此这个类就变成了一个Filter过滤器。*/public class SecondFilterDemo implements Filter {/*在实现了Filter接口后,该类需要重写三个方法:*/ @Override public void destroy() { // TODO Auto-generated method stub System.out.println("destroy...."); //web容器在销毁过滤器实例时会调用该方法,释放资源,大多数情况用不到。 } /* doFilter方法: 这个方法是过滤器的核心方法,也就是在这个方法中会实现过滤的操作,当用户访问和过滤器相关的URL时,会先调用doFilter方法,doFilter方法中有一个FilterChain对象,该对象可调用chain.doFilter方法,从而确定是否“放行”(也就是允许用户去访问某些资源),或者是利用请求重定向或请求转发的手段去“拦截”(也就是不允许去访问,跳转到其他页面) filter的三种典型应用: 1、可以在filter中根据条件决定是否调用chain.doFilter(request, response)方法,即是否让目标资源执行 2、在让目标资源执行之前,可以对request\response作预处理,再让目标资源执行 3、在目标资源执行之后,可以捕获目标资源的执行结果,从而实现一些特殊的功能 */ @Override public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException { // TODO Auto-generated method stub System.out.println("start....doFilter"); arg2.doFilter(arg0, arg1);//“放行,允许去访问该URL” System.out.println("end....doFilter"); } /* init()方法: Web容器在创造过滤器时会调用该方法,该方法可以去访问web.xml中的某些初始化参数。 */ @Override public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub System.out.println("init...."); }}
myeclipse中对web.xml进行配置
<1>直接编写web.xml,打开直接编辑
<2>用myeclipse中的design工具来自动注册:
在Design下我们可以添加name,url:
web.xml中配置过滤器:
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>SecondFilter</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <!--配置过滤器--> <filter> <filter-name>SecondFilterDemo</filter-name><!--过滤器的名字--> <filter-class>com.SecondFilter.SecondFilterDemo</filter-class><!--Filter所属的类> </filter> <!--映射过滤器--> <filter-mapping> <filter-name>SecondFilterDemo</filter-name> <url-pattern>/*</url-pattern><!--Filter关联的url,/*表示项目跟目录下的所有url--> </filter-mapping></web-app>
阅读全文
0 0
- javaweb中的过滤器学习总结(1)---myeclipse下的第一个Filter
- javaweb中的过滤器学习总结(2)---Filter过滤器链和过滤器的生命周期
- javaweb中的过滤器学习(3)---Filter的部署详细总结
- JavaWeb的学习总结(三)— 过滤器(Filter)
- javaweb学习总结Filter(过滤器)常见应用
- javaWeb的过滤器(Filter)
- Javaweb中的Filter过滤器
- JavaWeb中的Filter过滤器
- 【第一个过滤器Filter】
- JavaWeb的Filter过滤器
- javaweb学习总结(四十二)——Filter(过滤器)学习
- javaweb学习总结(四十二)——Filter(过滤器)学习
- javaweb学习总结(四十二)——Filter(过滤器)学习
- javaweb学习总结(四十二)——Filter(过滤器)学习
- javaweb学习总结(四十二)——Filter(过滤器)学习
- javaweb学习总结(四十二)——Filter(过滤器)学习
- javaweb学习总结(四十二)——Filter(过滤器)学习
- javaweb学习总结 ——Filter(过滤器)学习
- HTML CSS
- 写golang restful接口时遇到的一个坑
- SSM---访问后台提示HTTP Status 404
- 关于Server Tomcat v9.0 Server at localhost failed to start.的分析
- Exception in thread "main" org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qua
- javaweb中的过滤器学习总结(1)---myeclipse下的第一个Filter
- JAVA中JButton常用设置
- WEBGL学习【十】运动模型
- 《HTML之base标签》
- hadoop 文件分块,block与split关系
- 整理&收藏的一些机器学习比较好的博客
- 八大排序算法的Python实现
- 处理utf-8不能编译的中文注释
- 线程监控