Java学习笔记一Servlet三

Servlet是个特殊的Java类,每个Servlet可以响应客户端的请求。Servlet 提供不同的方法用于响应客户端请求。
Java学习笔记一Servlet三
事实上,客户端的请求通常只有GET 和POST 两种, Serviet 为了响应这两种请求,必须重写doGet和doPost两个方法。如果Servlet为了响应4 种方式的请求,则需要同时重写上面的4 个方法。大部分时候, Servlet 对于所有请求的响应都是完全一样的。
可以采用继承的HttpServlet类一个方法来代替上面的几个方法:只需重写service方法即可响应客户端的所有请求。HttpServlet 还包含两个方法:
Java学习笔记一Servlet三
通常无须重写init和desrtoy两个方法,除非需要在初始化Servlet时,完成某些资源初始化的方法, 才考虑重写init方法。如果需要在销毁Servlet 之前,先完成某些资源的回收,比如关闭数据库连接等, 才需要重写desrtoy方法。
Java学习笔记一Servlet三
Java学习笔记一Servlet三
上面的Servlet 类继承了HttpServlet 类, 表明它可作为一个Servlet使用。程序的粗体字代码定义了service 方法来响应用户请求。
普通Servlet 类里的service方法的作用,完全等同于JSP生成Servlet 类的_jspService方法。因此原JSP 页面的JSP 脚本、静态HTML 内容, 在普通Servlet 里都应该转换成service方法的代码或输出语句:原JSP 声明中的内容,对应为在Servlet 中定义的成员变量或成员方法。

Servlet 的配置

编辑好的Servlet源文件并不能响应用户请求,还必须将其编译成class文件。将编译后的
FirstServlet.class 文件放在WEB -INF/classes 路径下,如果Servlet有包,则还应该class文件放在对应的包路径下。
为了让Serviet 能响应用户请求,还必须将Servlet 配置在Web 应用中。配置Servlet 时,需要修改web.xml 文件。
Java学习笔记一Servlet三
Java学习笔记一Servlet三
Java学习笔记一Servlet三
Java学习笔记一Servlet三

JSP/Servlet 的生命周期

JSP的本质就是Servlet , 开发者编写的JSP页面将由Web容器编译成对应的Servlet , 当Servlet 在容器中运行时,其实例的创建及销毁等都不是由程序员决定的,而是由Web 容器进行控制的。
Java学习笔记一Servlet三
每个Serviet 的运行都遵循如下生命周期:创建Servlet 实例。Web 容器调用Serviet 的init 方法,对Servlet 进行初始化。Servlet初始化后,将一直存在于容器中,用于响应客户端请求。如果客户端发送GET请求,容器调用Servlet 的doGet 方法处理并响应请求:如果客户端发送POST 请求,容器调用Servlet的doPost 方法处理并响应请求。或者统一使用service方法处理来响应用户请求。Web 容器决定销毁Servlet 时,先调
用Servlet 的destroy 方法,通常在关闭Web应用之时销毁Servlet 。

Java学习笔记一Servlet三

load-on-startup Servlet

创建Servlet实例有两个时机:用户请求之时或应用启动之时。应用启动时就创建Servlet,通常是用于某些后台服务的Servlet,或者需要拦截很多请求的Servlet:这种Servlet通
常作为应用的基础Servlet使用,提供重要的后台服务。
配置load-on-startup 的Servlet 有两种方式
Java学习笔记一Servlet三
<load-on-startup … ./>元素或loadOnStartup 属性都只接收一个整型值,这个整型值越小, Servlet 就越优先实例化。

访问Servlet 的配置参数

配置Servlet 时,还可以增加额外的配置参数。通过使用配置参数,可以实现提供更好的可移植性,避免将参数以硬编码方式写在程序代码中。
Java学习笔记一Servlet三
每个@WebinitParam 可指定如下两个属性
Java学习笔记一Servlet三
Java学习笔记一Servlet三
在web.xml 文件中为Servlet 配置参数使用< init-param. . ./ >元素,该元素可以接受如下两个子元素
Java学习笔记一Servlet三
Java学习笔记一Servlet三
Java学习笔记一Servlet三

第二种方式与为JSP配置初始化参数极其相似, 因为JSP的实质就是Servlet,而且配置JSP的实质就是把JSP当Servlet使用。
Java学习笔记一Servlet三
ServletConfig 获取配置参数的方法和ServletContext 获取配置参数的方法完全一样,只是ServletConfig 是取得当前Servlet的配置参数,而ServletContext 是获取整个Web 应用的配置参数