Servlet简介:servlet维基百科

Servlet(Server Applet),全称Java Servlet,未有中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。

Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。

javax.servlet.http.HttpServlet实现了专门用于响应HTTP请求的Servlet,提供了响应对应HTTP标准请求的doGet()、doPost()等方法。

java中使用Servlet时,需要导入javax.servlet.*; javax.servlet.http.*;

与jsp的关系:

Java服务器页面(JSP)是HttpServlet的扩展。由于HttpServlet大多是用来响应HTTP请求,并返回Web页面(例如HTMLXML),所以不可避免地,在编写servlet时会涉及大量的HTML内容,这给servlet的书写效率和可读性带来很大障碍,JSP便是在这个基础上产生的。其功能是使用HTML的书写格式,在适当的地方加入Java代码片段,将程序员从复杂的HTML中解放出来,更专注于servlet本身的内容。

JSP在首次被访问的时候被应用服务器转换为servlet,在以后的运行中,容器直接调用这个servlet,而不再访问JSP页面。JSP的实质仍然是servlet。

Servlet 主要任务:Servlet教程

1.读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的 HTTP 客户端程序的表单。
2.读取客户端(浏览器)发送的隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等等。
3.处理数据并生成结果。这个过程可能需要访问数据库,执行 RMI 或 CORBA 调用,调用 Web 服务,或者直接计算得出对应的响应。
4.发送显式的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。
5.发送隐式的 HTTP 响应到客户端(浏览器)。这包括告诉浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其他类似的任务。

Servlet生命周期:

Servlet 通过调用 init (servletConfig) 方法进行初始化。servletconfig是servlet的配置信息。
Servlet 调用 service() 方法来处理客户端的请求。
Servlet 通过调用 destroy() 方法终止(结束)。
最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。

doGet() 和 doPost() 方法是每次服务请求(service)中最常用的方法。GET 请求来自于一个 URL 的正常请求,或者来自于一个未指定 METHOD 的 HTML 表单,它由 doGet() 方法处理。POST 请求来自于一个特别指定了 METHOD 为 POST 的 HTML 表单,它由 doPost() 方法处理。

如果说得繁琐点,分为五步:加载servlet的class文件;调用构造方法生成servlet对象;init;service;destroy。

Servlet使用:

引入javax.servlet,新建服务器实体类,继承HttpServlet,重写doGet,doPost方法。生成class文件后,由jetty或tomcat加载运行,处理接到的http请求。

servlet提供了一系列接口,我们需要实现接口完成工作,接口在tomcat的lib中有servlet-api.jar包提供。

Servlet实践:

servlet的全部配置在web.xml完成。详参 web.xml详解

在日常编程中,servlet通过web.xml读取不同url对应的响应servlet类。

如果使用SpringMVC,则有实体类为org.springframework.web.servlet.DispatcherServlet的servlet定义于web.xml,且有init-param定义该servlet的配置文件:spring-mvc.xml。匹配的url为:/。

如果使用freemarker,则有实体类为FreemarkerDecoratorServlet的servlet定义于web.xml,匹配的url为:*.ftl。

servlet项目的编译与部署无关,编译会生成class文件,部署就是将生成的class置入容器并运行,可以用之前生成的class随时部署,即便代码改动过。

如果servlet类的顶部定义了package,则部署时需要按照文件路径拷贝,不能只拷贝class文件,且web.xml中需要配置servlet-class字段带上目录。

更多: servlet教学





posted on 2016-04-26 17:37  hh6plus  阅读(133)  评论(0编辑  收藏  举报