Java Web Servlet
Servlet是在服务器上运行的小程序。一个Servlet就是一个Java类,并且可以通过“请求-响应”编程模型来访问的这个驻留在服务器内存里的Servlet程序。
Servlet可完成以下功能:
- 读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的 HTTP 客户端程序的表单。
- 读取客户端(浏览器)发送的隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等等。
- 处理数据并生成结果。这个过程可能需要访问数据库,执行 RMI 或 CORBA 调用,调用 Web 服务,或者直接计算得出对应的响应。
- 发送显式的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。
- 发送隐式的 HTTP 响应到客户端(浏览器)。这包括告诉浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其他类似的任务。
【手工编写Servlet】
继承HttpServlet
重写doGet()或者doPost()方法
在web.xml中注册Servlet
Servlet的装载三种情况:
1、自动装载:某些Servlet如果需要在Servlet容器启动时就加载,需要在web.xml下它的标签里中,添加优先级代码:
<Servlet><load-on-startup>1</load-on-startup></Servlet>
数字越小表示该servlet的优先级越高,会先于其他自动装载的优先级较低的先装载
Servlet容器启动后,客户首次向某个Servlet发送请求时,Tomcat容器会加载它
当Servlet类文件被更新后,也会重新自动加载,Servlet是长期驻留在内存里的。某个Servlet一旦被加载,就会长期存在于服务器的内存里,直到服务器关闭,Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。在Servlet的整个生命周期内,init()方法只被调用一次。
Servlet配置:
<servlet><!-- 声明Servlet对象 --><servlet-name>MyServlet</servlet-name><!-- 上面一句指定Servlet对象的名称 --><servlet-class>com.servlet.MyServlet</servlet-class><!-- 上面一句指定Servlet对象的完整位置,包含包名和类名 --></servlet><servlet-mapping><!-- 映射Servlet --><servlet-name>MyServlett</servlet-name><!--<servlet-name>与上面<Servlet>标签的<servlet-name>元素相对应,不可以随便起名 --><url-pattern>/MyServlet</url-pattern><!-- 上面一句话用于映射访问URL --></servlet-mapping
Servlet生命周期:
Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:
- Servlet 通过调用 init () 方法进行初始化。
- Servlet 调用 service() 方法来处理客户端的请求。
- Servlet 通过调用 destroy() 方法终止(结束)。
- 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
ServletConfig
ServletConfig是针对特定的Servlet的参数或属性。ServletConfig是表示单独的Servlet的配置和参数,只是适用于特定的Servlet。从一个servlet被实例化后,对任何客户端在任何时候访问有效,但仅对本servlet有效,一个servlet的ServletConfig对象不能被另一个servlet访问。
初始化参数为局部的
<servlet><servlet-name>ServletConfigDemo</servlet-name><servlet-class>com.yyz.servletconfig.ServletConfigDemo</servlet-class><init-param><param-name>xxx</param-name><param-value>yyy</param-value></init-param></servlet><servlet-mapping><servlet-name>ServletConfigDemo</servlet-name><url-pattern>/servlet/ServletConfigDemo</url-pattern></servlet-mapping>
调用形式:
//获取指定的初始化参数
String value = config.getInitParameter("xxx");
response.getOutputStream().write(value.getBytes());
//获取所有的初始化参数
Enumeration<String> e = cofig.getInitParameterNames();
while(e.hasMoreElements()){String name = e.nextElement();value = config.getInitParameter(name);response.getOutputStream().write((name+"="+value+"<br/>").getBytes());
}
ServletContext
一个ServletContext对象表示了一个Web应用程序的上下文。
Servlet上下文:Servlet上下文提供对应用程序中所有Servlet所共有的各种资源和功能的访问。Servlet上下文API用于设置应用程序中所有Servlet共有的信息。Servlet可能需要共享他们之间的共有信息。运行于同一服务器的Servlet有时会共享资源,如JSP页面、文件和其他Servlet。
初始化参数为全局的
功能:
获取web应用程序的初始化参数
记录日志
application域范围的属性
访问资源文件
获取虚拟路径所映射的本地路径
web应用程序之间的访问
ServletContext的其他方法