本文主要是介绍(1)Servlet和HttpServlet,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目标:
- 理解Servlet的基本知识
- 了解Servlet的体系结构
- 实现并部署Servlet
单 词 | 说 明 |
---|---|
servlet | 服务器端小程序 |
generic | 一般的,普通的,非特殊的 |
response | 响应,回答 |
initialize | 初始化 |
destroy | 破坏,毁坏,消灭 |
文章目录
- 一.什么是servlet?
- 二.Servlet的体系结构
- 2.0 HttpServlet常用API总结
- 2.1 Servlet的生命周期
- 2.2 标准Web应用程序的目录结构
- 三.总结
一.什么是servlet?
缩合词:server + applet,可以理解成服务端的小程序.
Servlet是用Java语言编写的程序,它运行在Web服务器上,用以处理来自客户端的请求; 它一般会把处理的结果以为HTML的形式返回,在客户端形成动态网页。
Servlet的优点 :
Servlet运行在Web服务器中,可以扩展服务器的功能;
Servlet可以和其他资源交互,从而生成返回给客户端响应的内容,即动态网页;
使用Java编写,所以能够跨平台;
Java的所有优点都可以在Servlet中体现;
Servlet很安全,因为访问Servlet的唯一途径是通过服务器;
只要符合Servlet规范的Servlet容器都可以运行Servlet。
Servlet容器:
事实上,Servlet本身就是普通的Java类,在需要的时候被实例化,在不需要的时候被销毁,而Servlet的实例化和销毁工作由Servlet容器来完成; Servlet在Servlet容器内运行,Servlet容器负责调度Servlet,并控制着Servlet的生命周期; Apache Tomcat既是Web服务器软件,同时也是符合规范的Servlet容器。
Servlet API:
与Servlet相关的两个包:
javax.servlet javax.servlet.http
javax.servlet javax.servlet
javax.servlet包中包含了支持通用的,跨协议的Servlet的相关接口和类;
javax.servlet.http包中则包含了特定于HTTP协议的Servlet相关类;
在Tomcat安装目录/common/lib路径下,可以找到servlet-api.jar文件。
javax.servlet包中的 接口 和 类:
接口名称 | 说 明 |
---|---|
Servlet | 这是每个Servlet都必须实现的接口,它定义了一系列必须由Servlet实现的方法 |
ServletRequest | 此接口用于将客户端的请求信息传送给Servlet |
ServletConfig | 此接口用于对客户端做出响应 |
ServletResponse | 此接口定义Servlet配置对象,以便于容器将信息传递给Servlet |
ServletContext | 此接口定义了一组方法,用于Servlet与容器进行通信 |
类名称 | 说 明 |
---|---|
GenericServlet | 抽象类,定义一个通用的、独立于底层协议的Servlet |
ServletInputStream | 这是提供输入流用于读取来自客户端请求的二进制数据的类 |
ServletOutputStream | 此类提供输出流用于将二进制数据发送到客户端 |
ServletException | Servlet在执行过程中遇到困难时抛出该异常 |
javax.servlet.http包中的 接口 和 类:
接口名称 | 说 明 |
---|---|
HttpServletRequest | 该接口扩展ServletRequest接口,定义了一系列用于描述HTTP请求的方法 |
HttpServletResponse | 该接口扩展ServletResponse接口,提供服务器对客户端的响应对象 |
HttpSession | 该接口提供客户端与服务器端的会话标识 |
类名称 | 说 明 |
---|---|
HttpServlet | 该类是最常用于扩展Servlet的类,因为很多Servlet应用程序都遵照HTTP协议运行。此类支持HTTP协议功能以及Servlet类的方法,它是个抽象类。它接收客户端的请求,并向客户端发送响应 |
Cookie | 此类用来创建Cookie,它存储了少量由Servlet发送至客户端的信息 |
二.Servlet的体系结构
2.0 HttpServlet常用API总结
这些方法使用一般都在自己写的servlet中用this调用。
javax.servlet.http.HttpServlet 中提供了一系列让子类重写的方法,在不同的时刻会调用执行这些方法:
方 法 原 型 | 说 明 |
---|---|
public void init(ServletConfig config)throws ServletException | 在初始化Servlet时调用一次,如有特殊需要,可重写该方法 |
protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException | 如果客户端是以GET方式提交请求时执行,应当重写此方法 |
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException | 如果客户端是以POST方式提交请求时执行,应当重写此方法 |
public void distroy() | 当销毁Servlet实例时调用一次,如有需要释放的资源,可重写该方法 |
HttpServlet还提供了一些不常用的方法,如有非常特殊的需要,可考虑重写它们:
(处于安全原因,一般不会重写这些方法,所以这些方法不常用。)
方 法 原 型 | 说 明 |
---|---|
protected void doDelete(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException | 用于删除服务器上的文档,这个方法由于复杂的策略问题不被广泛支持 |
protected void doHead(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException | 如果客户端只是想查看响应头,可通过此方法来确定文档的大小,修改时间或一般可用性 |
protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException | 用于将文档直接放置在服务器上 |
protected void doOptions(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException | 用于询问服务器上的某种资源有什么选项可用 |
HttpServlet中还提供了一些其他的方法,这些方法不是用来重写,而是提供某些功能的:
特别注意:
在servlet中调用这些方法直接用this.getServletContext() ; 返回上下文对象. 一个工程共用同一个.
在servlet中调用这些方法直接用this.getServletConfig() ; 返回当前servlet的ServletConfig对象.
getServletName() 是返回在web.xml中配置servlet时的servlet名字。
getServletContext() 返回的是上下问的对象,里面常用的方法有 .setAttribute();
getServletInfo() 返回的是自己的写的类继承自HttpServle后t时类名上面的文档注释。
HttpServlet中还包含一个service方法,其原型如下:public void service(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException 此方法用来调度客户端的请求,API文档中明确规定,请勿重写该方法。
2.1 Servlet的生命周期
Servlet容器负责调度Servlet并控制它的生命周期;
2.2 标准Web应用程序的目录结构
三.总结
Servlet其实就是运行在服务器端的小应用程序;
Servlet容器负责调度Servlet,并控制着它们的生命周期;
一般通过继承HttpServlet的方式来实现Servlet;
根据客户端请求的方式,只需重写doGet或doPost方法即可;
要使容器正确识别Servlet,则必须填写配置文件web.xml;
WEB应用程序必须要依照标准的目录结构,方可正确运行。
在HTML中我们已经知道,网页表单的提交有Get和Post两种方式;
对于Get提交方式,会将要提交的数据附加在URL字符串的后面一并发送到服务器;
而Post提交方式,则是将数据隐含在HTTP协议的请求报文中发送至服务器;
如果是Get的提交方式,在Servlet中要重写doGet方法进行处理,而如果是Post方式,则要重写doPost方法。
这篇关于(1)Servlet和HttpServlet的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!