servlet生命周期介绍
servlet程序是由web服务器调用,web服务器实现了对servlet生命周期的管理。 声明周期归纳为:servlet加载-》实例化-》服务-》销毁
- 创建servlet实例(web容器启动时或者第一次使用这个servlet时),web.xml文件指定servlet位置,反射进行实例化。
- servlet容器调用init()方法,初始化对象(主要是为了让servlet对象在处理请求前完成一些初始化工作)
- servlet初始化后一直存在于容器中,service()处理客户请求(统一调用service()(必须init()正确完成)然后根据情况调用doGet或者doPost或者自己处理返回)
- web容器在销毁servlet时候,先调用servlet的distroy方法(仅执行一次)
servlet运行工作原理详解
处理流程
- 用户点击链接,指向servlet
- 创建两个对象HttpServletReqest和HttpServletRespose
- 容器根据请求中的url对应的servlet,为请求创建或者分配一个线程,并把请求和响应对象传递给servlet线程(线程调用servlet的service方法)
- service会调用doGet和doPost或者直接处理
- 生成页面放到响应对象中,(此时容器中还有响应对象的引用)
- 线程结束,容器吧响应对象转换为一个http响应,并发给客户,然后删除请求和响应对象。
servlet入门详解
servlet是只能运行在服务器端的java类
servlet容器
从图中可以看出真正管理servlet容器的是context容器,一个context对应一个web工程,context容器是直接管理servlet容器中包装类Wrapper,所以context容器如何工作将直接影响servlet的工作方式。
servlet线程安全
web服务器会给每个请求创建一个线程,并在这个线程上调用service
总结
- servlet被部署在服务器上(应用服务器中用于管理java组件的部分被抽成容器),由容器管理servlet的声明周期。
- 除非做了配置,否则在容器启动的时候不会被加载,只在第一次请求的时候被加载和实例化
- 一旦被加载,一般不会从容器中删除,直到服务器关闭或者重新启动。容器垃圾回收,servlet也有可能被删除。
servlet init()初始化方法详解
首次访问的时候执行,通过ServletConfig参数向servlet传递配置信息,ServletConfig对象还可以获取servletContext对象,用于和容器通信。
servlet init-param配置与参数获取
init-param是配置Servlet的初始化参数
获取参数
- 在servlet里面可以通过getServletContext().getInitParameter("context/param")得到
- 在servlet的init()方法中通过this.getInitParameter("param1")获取
servlet service()请求处理方法详解
- 当需要修改服务器数据的时候,调用doPost方法
- 不需要修改服务器数据的时候,调用doGet方法
- 如果你重写了service方法没有调用do方法,即使你在继承的servlet中重写了do方法也不会调用。
servlet中service() doGet() doPost() 方法详解
如果没有重写do方法,则会被缺省调用
ServletConfig对象配置并获取Servlet初始化参数详解
一个web应用可以存在多个ServletConfig对象
- servlet配置了参数后,web容器在创建servlet实例对象的时候,自动把参数封装到ServletConfig对象中,调用init方法的时候将对象传入servlet
- 主要是用于获取字符集编码,数据库连接等
ServletContext对象详解
- 一个web应用只有一个ServletContext所以作用范围是整个应用
- 可以通过此对象共享数据实现对容器的通信,比如分发请求等
HttpServletRequest客户请求对象详解
获取请求内容
HttpServletRequest获取客户端所有参数
可获取真实ip
HttpServletRequest获取URL,URI方法详解
自己搞搞
HttpServletRequest获取真实IP地址详解
自己搞搞
Java中servlet http status状态码详解
常用状态搞一搞