【Servlet】Servlet体系结构
Servlet
Servlet是基于Java语言的Web服务器端编程技术,按照Java EE规范定义,Servlet是运行在Servlet容器中的Java类,它能处理Web客户的HTTP请求,并产生HTTP响应。
Servlet运行在服务器端,由Servlet容器所管理,Servlet容器也叫Servlet引擎,是Web服务器或应用服务器的一部分,用于在发送的请求和响应之上提供网络服务、解码基于MIME的请求、格式化基于MIME的响应。
Servlet是使用Servlet API及相关类和方法的Java程序。
Servlet API包含两个软件包:
- javax.servlet:定义了所有Servlet类都必须实现或继承的通用接口和类。
- javax.servlet.http:定义了采用HTTP协议通信的HttpServlet类。
Servlet API的主要接口和类之间的关系
Servlet接口
定义如下:
package javax.servlet;import java.io.IOException;public interface Servlet {public void init(ServletConfig config) throws ServletException;public ServletConfig getServletConfig();public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;public String getServletInfo();public void destroy();
}
- Servlet接口规定了必须由Servlet类实现并且由Servlet引擎识别和管理的方法集。
- Servlet接口的基本目标是提供与Servlet生命周期相关的方法,如:init()、service()和destroy()等。
主要方法说明:
方法名称 | 方法描述 |
---|---|
init(ServletConfig config) |
Servlet初始化方法。在Servlet实例化后,容器调用该方法进行Servlet的初始化。 init()方法只能被调用一次,如果此方法没有正常结束,就会抛出一个ServletException异常。 一旦抛出该异常,Servlet将不再执行,随后对其进行再次调用,容器会重新载入并再次运行init()方法。 |
service(ServletRequest req,ServletResponse resp) | Servlet的服务方法。当用户对Servlet发出请求时容器会调用该方法处理用户的请求。 |
destroy() |
Servlet的销毁方法。容器在终止Servlet服务前调用此方法。 容器调用此方法前必须给service()线程足够时间来结束执行, 因此接口规定当service()正在执行时,destroy()不被执行。 |
getServletConfig() | 此方法可以让Servlet在任何时候获得ServletConfig对象。 |
getServletInfo() |
此方法返回一个String对象,该对象包含Servlet的信息,例如:开发者、创建日期、描述信息等。 该方法也可用于容器。 |
GenericServlet抽象类
- GenericServlet是一个通用的协议无关的Servlet,它实现了Servlet和ServletConfig接口。
- GenericServlet继承自Servlet,应该重写service()方法。
主要方法说明:
方法名称 | 方法描述 |
---|---|
public void init(ServletConfig config) |
调用Servlet接口中的init()方法。 此方法还有一无参的重载方法,其功能与此方法相同。 |
public String getInitParameter(String name) | 返回名称为name的初始化参数的值。 |
public ServletContext getServletContext() | 返回ServletContext对象的引用。 |
HttpServlet类
HttpServlet指能够处理HTTP请求的Servlet,它在原有Servlet接口上添加了对HTTP协议的处理,它比Servlet接口的功能更为强大。
主要方法说明:
方法名称 | 方法描述 |
---|---|
service(HttpServletRequest req, HttpServletResponse resp) |
HttpServlet在实现Servlet接口时,重写了service()方法,该方法会自动判断用户的请求方式。 若为GET请求,则调用HttpServlet的doGet()方法; 若为POST请求,则调用doPost()方法。 因此,开发人员在编写Servlet时,通常只需要重写doGet()或doPost()方法,而不要去重写service方法。 如果Servlet收到一个HTTP请求而你没有重载相应的do方法,它就返回一个说明此方法对本资源不可用的标准HTTP错误。 |
doGet(HttpServletRequest req, HttpServletResponse resp) | 此方法被本类的service()方法调用,用来处理一个HTTP GET 操作。 |
doPost(HttpServletRequest req, HttpServletResponse resp) | 此方法被本类的service()方法调用,用来处理一个HTTP POST 操作。 |
HttpServlet作为HTTP请求的分发器,除了提供对GET和POST请求的处理外,对于其他请求类型也提供了相应的处理方法(如:doHead()、doOptions()、doDelete()、doPut()、doTrace())
【Servlet】Servlet体系结构相关推荐
- Servlet的体系结构 || Servlet相关配置
Servlet的体系结构 Servlet -- 接口 | GenericServlet -- 抽象类 | HttpServlet -- ...
- servlet的体系结构
Servlet的体系结构 GenericServlet:将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象 // // Source code recreated fr ...
- [JavaWeb-Servlet]Servlet的体系结构
Servlet的体系结构 Servlet -- 接口|GenericServlet -- 抽象类|HttpServlet -- 抽象类* GenericServlet:将Servlet接口中其他的方法 ...
- Tomcat服务器启动错误之Offending class: javax/servlet/Servlet.class
引子 最近在基于Wex5项目开发中,遇到使用过程中与Tomcat功能有关的错误提示, 如题所示.最终的解决方法就是删除掉项目上与tomcat冲突的jar包. org.apache.catalina.l ...
- 异常处理记录: Servlet class X is not a javax.servlet.Servlet
异常处理记录: Servlet class X is not a javax.servlet.Servlet 参考文章: (1)异常处理记录: Servlet class X is not a jav ...
- ClassCastException: com.gao5805123.servlet.ServletDemo cannot be cast to javax.servlet.Servlet
ClassCastException: com.gao5805123.servlet.ServletDemo cannot be cast to javax.servlet.Servlet **异常信 ...
- javaweb项目,配置servlet后报错:java.lang.ClassCastException: cannot be cast to class javax.servlet.Servlet
使用maven创建javaweb项目,通过添加依赖的方式来添加servlet-api,版本4.0.1,如下 <dependency><groupId>javax.servlet ...
- Spark jar not loaded. Offending class: javax/servlet/Servlet.class
相关软件版本 Spark1.4.1 ,Hadoop2.6,Scala2.10.5,intelliJ IDEA2014,JDK1.8,Tomcat7 机器及服务: windows7 :包含JDK1.8, ...
- jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
1.错误原因 信息: validateJarFile(/opt/tomcat/webapps/CMP/WEB-INF/lib/servlet-api.jar) - jar not loaded. Se ...
- 启动Tomcat报错- jar not loaded. Offending class: javax/servlet/Servlet.class
完整错误信息: - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servle ...
最新文章
- Java文件的状态_java中文件的状态
- 计算机机房建设标准.doc,计算机机房建设标准(部分2)
- oracle 树状结构一直出现不了_深入解析Oracle ASSM 段头块(PAGETABLE SEGMENT HEADER)结构...
- [pytorch、学习] - 4.6 GPU计算
- pytorch中的torch.rand(),torch.randn(),torch.randerm()的关系
- Android外存的读写
- L1-022. 奇偶分家-PAT团体程序设计天梯赛GPLT
- zabbix报警系统docker部署,k8s部署,基本使用方法
- 【论文阅读】Network In Network
- the system requirements are not satisied或Android Studio不支持HAXM
- 买哪个股票稳赚,三类股票,可以买了
- lighttp 配置php扩展包,Lighttpd配置
- 原生JS实现在线音乐播放器及歌词滚动
- 【牛奶豆腐汤喝出小蛮腰】
- html用来注释的标记,互联网常识:html的注释标记是什么
- 高数——隐函数与参数方程求导
- html中不写form的后果,html之form
- 复旦大学有计算机网络专业,复旦大学计算机网络专业计划..doc
- iphone和mac互传文件_怎样快速在iphone与mac之间传文件
- 弘辽科技:淘宝新店运营推广的几大技巧
热门文章
- element-ui el-radio 回显格式为中文 传值格式为数值
- openssl解析国密X509证书
- bzoj 2245 [SDOI2011]工作安排【最小费用最大流】
- [BZOJ1834][ZJOI2010]network 网络扩容 最大流+费用流
- linux环境下远程访问ftp
- ios学习笔记——RunTime
- vs升级c++项目遇到的一些问题
- python 函数的参数对应
- github上的优秀项目和开发环境配置【转http://www.cnblogs.com/2018/archive/2012/11/09/2763119.html】...
- Commerce Server 2002 Starter Site and 2006 overview