您的位置:首页 > 编程语言 > Java开发

Java Web Servlet

2017-06-04 11:35 127 查看

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


[b]Servlet生命周期:[/b]

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应用程序的初始化参数

4000
记录日志

application域范围的属性

访问资源文件

获取虚拟路径所映射的本地路径

web应用程序之间的访问

ServletContext的其他方法

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java servlet java web