题记:框架横行,似乎已经忘记JavaWeb最基础Servlet是如何工作的,这也是为什么要写这篇文章。

Servlet是Java语言应用到Web的扩展技术,是运行在Web应用服务器上的Java程序。与普通的Java程序不同的是它可以对Web浏览器或其他HTTP客户端程序发送的请求进行处理。是位于服务器内部的服务器端的Java应用程序。

核心API类关系

Servlet接口:

public void init(ServletConfig config);Servlet初始化后,Servlet容器调用此方法来完成初始化工作。

public void service(ServletRequest request, ServletResponse response)此方法用户处理客户端请求

public void destroy();当Servlet对象应该从Servlet容器移除的时,容器调用此方法,释放资源。

public ServletConfig getServletConfig();用于获取Servlet对象的配置信息,返回ServletConfig对象。

public String getServletInfo(); 返回有关Servlet信息,纯文本的字符串,如作者,版本等。

GenericServlet抽象类

这个类实现了除Service()外的其他所有方法。

HttpServlet抽象类

对GenericServlet类进行了泛化,实现了Service()方法。

HttpServletRequest接口和HttpServletReponse接口

接口方法省略

ServletConfig接口

这个接口封装了Servlet初始化参数信息,接口方法已经由GenericServlet抽象类实现

public String getInitParameter(String name)此方法返回String类型名称为name的初始化参数

public Enumeration getInitParameterNames()获取所有初始化参数名的枚举集合

public ServletContext getServletContext()用于获取Servlet上下文对象

public String getServletName()返回Servlet对象的实例名

Servlet生命周期

1.初始化阶段

1.1客户请求Servlet服务或当Web服务启动的时候,容器环境加载一个Servlet类

1.2Servlet容器创建一个ServletConfig对象,用于配置Servlet初始化信息

1.3Servlet容器创建一个Servlet对象

1.4Servlet容器调用Servlet对象的init()方法进行初始化,并且给init()方法传入一个ServletConfig对象。

2运行时阶段

随时响应客户端请求,收到要求访问特定Servlet的客户请求后,容器针对这个请求创建ServletRequest对象和ServletResponse对象,然后调用Servlet对象的service()方法,容器把Servlet生成的响应结果发送个客户后,容器就会销毁ServletRequest对象和ServletResponse对象。

3销毁阶段

Web容器被终止时,Servlet容器会调用Web应用中的所有Servlet对象的destroy()方法,然后销毁这些Servlet对象。

 Servlet过滤器

filter接口

定义过滤器需要实现此接口

pubic void init(FilterConfig filterConfig) 过滤器的初始化方法,容器调用此方法完成过滤的初始化操作。

public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)与Servlet的service()方法类似,请求及响应交给过滤器时,过滤器调用此方法处理。

FilterChain接口

接口由容器实现

void doFilter(ServletRequest request,ServletResponse response) throws IOException,ServletException 将请求或响应交给下一个过滤器对象。

FilterConfig接口

此接口由容器实现,获取过滤器初始化期间的参数信息

public String getFilterName() 返回过滤器的名称

public String getInitParameter(String name) 返回初始化名称为name的参数值

public Enumeration getInitParamterNames() 返回初始化参数名的枚举集合

public ServletContext getServletContext() 返回Servlet的上下文对象

参考:

http://www.liechuchina.com/

理解Servlet的更多相关文章

  1. 详细理解servlet实现的几种方式和生命周期

    现在很多的开发都是用的框架,然后很多同学学习的时候又是直接接触的框架,对于底层的一些开发,完全没有任何的了解.虽然对于业务上面来说,没有什么问题.但是很多时候当你被面试问到,或者是想要了解框架底层原理 ...

  2. 详细理解servlet实现的三种方式和生命周期

    阅读目录 开发servlet的三种方式 理解实现servlet接口的方式,理解servlet生命周期 Servlet接口有五个方法 继承GenericServlet 继承HttpServlet 现在很 ...

  3. 理解Servlet过滤器 (javax.servlet.Filter)

    过滤器(Filter)的概念 过滤器位于客户端和web应用程序之间,用于检查和修改两者之间流过的请求和响应. 在请求到达Servlet/JSP之前,过滤器截获请求. 在响应送给客户端之前,过滤器截获响 ...

  4. 深入理解Servlet原理

    Servlet介绍: 1. 如何返回一个网页: a. 静态网页 >新闻页.百度百科 >服务器保存一份HTML,直接返回给浏览器即可 b. 动态网页 >淘宝.QQ空间.微博 >服 ...

  5. 利用Javaweb应用中六种属性范围,来理解Servlet的并发问题

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6513748225550189060/ Web应用中有六种属性范围: (1) 局部变量 (2) 实例变量 (3) 类 ...

  6. 理解Servlet及其对象

    一.ServeltConfig对象 在Servlet的配置文件中,可以使用一个或多个<init-param>标签为Servlet配置一些初始化参数.而不当Servlet配置了初始化参数后, ...

  7. 以登录实现理解Servlet+jsp+JavaBean开发

    写在前面:菜鸟拙见,望请纠正 学过servlet的都知道,书本上一直说servlet一直作为控制器使用,它不实现view层,也不做具体的事务处理,那servlet到底是干什么的哪?怎么合理的用它呐?? ...

  8. Servlet深入学习,规范,理解和实现(中)——深入理解Tomcat(一)

    心得:在写这篇博客之前.我大致阅读一些关于Tomcat的书籍和博客等资料.有些资料由于时间的关系,解说的Tomcat版本号太老.有些资料能够非常好的说明Tomcat整理结构和设计思想可是非常多重要的问 ...

  9. 异步Servlet的理解与实践

    AsyncContext理解 Servlet 3.0(JSR315)定义了Servlet/Filter的异步特性规范. 怎么理解"异步Servlet/Filter"及其使用情景? ...

随机推荐

  1. Spring中使用DataSourceTransactionManager进行事务管理的xml配置

    在一个业务的实现过程中,可能需要多条sql完成对数据库的操作,比如账户登录,需要匹配用户名和密码,然后要增加积分,还要记录登录的ip和时间,这可能需要三个sql语句,这三个语句应当是一个整体,任意一个 ...

  2. Directx11 教程(2) 基本的windows应用程序框架(2)

    原文:Directx11 教程(2) 基本的windows应用程序框架(2)      在本教程中,我们把前面一个教程的代码,进行封装.把初始化函数,Run函数,窗口回调函数,ShutdownWind ...

  3. java方法重写规则 重载

    方法的重写规则 参数列表必须完全与被重写方法的相同: 返回类型必须完全与被重写方法的返回类型相同: 访问权限不能比父类中被重写的方法的访问权限更低.例如:如果父类的一个方法被声明为public,那么在 ...

  4. sqlplus连接数据库报错SP2-0642: SQL*Plus internal error state 2130, context 0:0:0解决

    sqlplus连接数据库报错SP2-0642: SQL*Plus internal error state 2130, context 0:0:0解决 sqlplus 连接数据库报错SP2-0642: ...

  5. php表单的种类

    1.text 2.color 3.date 4.datetime 5.email 6.month 7.number 8.range 9.search 10.tel 11.url 12.week 13. ...

  6. JAVA高级特性--内部类

    内部类概念 public class Outer{ class inner{ } } 特点 可以很好的实现隐藏,可以使用procted,private 可以直接访问外部类的所有成员 ,包括私有成员. ...

  7. C#面向对象基础 —— 类与对象

    文章来源: https://www.cnblogs.com/huluobozu/p/5070500.html 一.类与对象 类是面向对象编程的基本单元:类造出来的变量叫对象. 一个类包含俩种成员:字段 ...

  8. JPA使用nativequery多表关联查询返回自定义实体类

    本文为JPA的学习采坑,如有问题欢迎指正. JPA官方推荐的多表关联查询使用不便,接触的有些项目可能会使用JPA 做简单查询,Mybaits做复杂查询.所以想要寻找一种好用的解决方案. JPA多表关联 ...

  9. Audio Session Programming Guide

    http://www.cocoachina.com/ios/20150615/12119.html

  10. JavaScript指定周期来调用函数setTimeout和setInterval

    setTimeout方法:setTimeout setInterval方法:setInterval