首页 技术 正文
技术 2022年11月15日
0 收藏 343 点赞 3,759 浏览 1655 个字
一、Servlet 类javax.servlet.http.HttpServlet; 1.是单例模式,一个web容器中只有一个实例。服务器调用它的service方法进行请求处理,
service方法又根据请求的类型分别调用doGet,doPost等方法。
2.由于是单例模式,所以线程不安全
3.自定义Servlet需继承HttpServlet,并重写相应的doGet等方法。方法体内不能调用父类的该方法。web.xml注册:
<servlet>
<servlet-name>myservlet</servlet-name>
<servlet-class>com.zk.baseservlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myservlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>二、Filter 接口javax.servlet.Filter; 1.过滤器首先执行init方法,从web.xml中的filter配置中读取信息进行初始化。只执行一次。
2.客户端的每次请求,都会经过doFilter方法。过滤器必须配置拦截路径。
3.多个过滤器执行流程
控制台输出:init2 method
init3 method
init methodMyFilter1 before
MyFilter2 before
MyFilter3 before
servlet doget method
MyFilter3 after
MyFilter2 after
MyFilter1 after是个U型流程

Java Web组件Servlet、Filter、Listener

Filter1类源码
public class MyFilter1 implements Filter {    public MyFilter1() {
} public void destroy() {
} public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("MyFilter1 before");
chain.doFilter(request, response);
System.out.println("MyFilter1 after");
} public void init(FilterConfig fConfig) throws ServletException {
System.out.println("init method1");
}
}
MyFilter2,
MyFilter3同上
web.xml注册,3个过滤器都拦截/a路径:
  <filter-mapping>
<filter-name>myfilter1</filter-name>
<url-pattern>/a</url-pattern>
</filter-mapping> <filter-mapping>
<filter-name>myfilter2</filter-name>
<url-pattern>/a</url-pattern>
</filter-mapping> <filter-mapping>
<filter-name>myfilter3</filter-name>
<url-pattern>/a</url-pattern>
</filter-mapping>

分析:init方法在容器启动时候,只执行一次。doFilter则每访问一次路径就执行一次。

三、Listener 接口ServletContextListener
监听器用于监听并接收被监听对象的变化 1.容器启动通知contextInitialized方法在filter和servlet前调用。
2.contextDestroyed方法在容器关闭后,filter和servlet销毁后调用。

  不完善的地方欢迎大家补充

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,905
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,430
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,247
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,058
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,690
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,727