GenericServlet vs HttpServlet
1>>>>>>>>
Difference between HttpServlet vs Generic Severlet
j
avax.servlet.
Servlet
----
is an interface defining what a servlet must implement.it defines methods for all the implementations - that's what interfaces usually do.
javax.servlet.GenericServlet------is just that, a generic, protocol-independent servlet. It is abstract, so it is not to be directly instantiated. It is the usable class to extend if you some day have to write servlet for protocol other than HTTP.
javax.servlet.http.HttpServlet------- is abstract class to be extended if you want to communicate over HTTP protocol. Most likely you only have to care about this one.
Servlet:-
- The Servlets runs as a thread in a web-container instead of in a seperate OS process.
- Only one object is created first time when first request comes, other request share the same object.
- Servlet is platform independent.
- Servlet is fast.
GenericServlet:-
- General for all protocol.
- Implements Servlet Interface.
- Use Service method.
HttpServlet:-
- Only for HTTP Protocol.
- Inherit GenericServlet class.
- Use doPost, doGet method instead of service method.
2>>>>>>>>
HttpServlet
- public abstract class HttpServlet
- extends GenericServlet
- implements java.io.Serializable
Provides an abstract class to be subclassed to create an HTTP servlet suitable for a Web site. A subclass of HttpServlet
must override at least one method, usually one of these:
doGet
, if the servlet supports HTTP GET requestsdoPost
, for HTTP POST requestsdoPut
, for HTTP PUT requestsdoDelete
, for HTTP DELETE requestsinit
anddestroy
, to manage resources that are held for the life of the servletgetServletInfo
, which the servlet uses to provide information about itself
Constructor Summary | |
HttpServlet() Does nothing, because this is an abstract class. |
Method Summary | |
protected void |
doDelete(HttpServletRequest req, HttpServletResponse resp) Called by the server (via the service method) to allow a servlet to handle a DELETE request. |
protected void |
doGet(HttpServletRequest req, HttpServletResponse resp) Called by the server (via the service method) to allow a servlet to handle a GET request. |
protected void |
doHead(HttpServletRequest req, HttpServletResponse resp) Receives an HTTP HEAD request from the protected service method and handles the request. |
protected void |
doOptions(HttpServletRequest req, HttpServletResponse resp) Called by the server (via the service method) to allow a servlet to handle a OPTIONS request. |
protected void |
doPost(HttpServletRequest req, HttpServletResponse resp) Called by the server (via the service method) to allow a servlet to handle a POST request. |
protected void |
doPut(HttpServletRequest req, HttpServletResponse resp) Called by the server (via the service method) to allow a servlet to handle a PUT request. |
protected void |
doTrace(HttpServletRequest req, HttpServletResponse resp) Called by the server (via the service method) to allow a servlet to handle a TRACE request. |
protected long |
getLastModified(HttpServletRequest req) Returns the time the HttpServletRequest object was last modified, in milliseconds since midnight January 1, 1970 GMT. |
protected void |
service(HttpServletRequest req, HttpServletResponse resp) Receives standard HTTP requests from the public service method and dispatches them to the do XXX methods defined in this class. |
void |
service(ServletRequest req, ServletResponse res) Dispatches client requests to the protected service method. |
why httpservlet is abstract?
If you extend the httpservlet class without overriding any methods, you will get a useless servlet;
GenericServlet
public abstract class GenericServlet
extends java.lang.Object
implements Servlet, ServletConfig, java.io.Serializable
Constructor Summary | |
---|---|
GenericServlet() Does nothing. |
Method Summary | |
---|---|
void |
destroy() Called by the servlet container to indicate to a servlet that the servlet is being taken out of service. |
String |
getInitParameter(String name) Returns a String containing the value of the named initialization parameter, or null if the parameter does not exist. |
Enumeration |
getInitParameterNames() Returns the names of the servlet's initialization parameters as an Enumeration of String objects, or an empty Enumeration if the servlet has no initialization parameters. |
ServletConfig |
getServletConfig() Returns this servlet's ServletConfig object. |
ServletContext |
getServletContext() Returns a reference to the ServletContext in which this servlet is running. |
String |
getServletInfo() Returns information about the servlet, such as author, version, and copyright. |
String |
getServletName() Returns the name of this servlet instance. |
void |
init() A convenience method which can be overridden so that there's no need to call super.init(config) . |
void |
init(ServletConfig config) Called by the servlet container to indicate to a servlet that the servlet is being placed into service. |
void |
log(String msg) Writes the specified message to a servlet log file, prepended by the servlet's name. |
void |
log(String message, Throwable t) Writes an explanatory message and a stack trace for a given Throwable exception to the servlet log file, prepended by the servlet's name. |
abstract void |
service(ServletRequest req, ServletResponse res) Called by the servlet container to allow the servlet to respond to a request. |
3>>>>>>>>
When we should use Service() or toGet(), toPost()?
The differences between the doGet()
and doPost()
methods are that they are called in theHttpServlet
that your servlet extends by its service()
method when it recieves a GET or a POST request from a HTTP protocol request.
A GET request is a request to get a resource from the server. This is the case of a browser requesting a web page. It is also possible to specify parameters in the request, but the length of the parameters on the whole is limited. This is the case of a form in a web page declared this way in html: <form method="GET"> or <form>.
A POST request is a request to post (to send) form data to a resource on the server. This is the case of of a form in a web page declared this way in html: <form method="POST">. In this case the size of the parameters can be much greater.
The GenericServlet
has a service()
method that gets called when a client request is made. This means that it gets called by both incoming requests and the HTTP requests are given to the servlet as they are (you must do the parsing yourself).
The HttpServlet
instead has doGet()
and doPost()
methods that get called when a client request is GET or POST. This means that the parsing of the request is done by the servlet: you have the appropriate method called and have convenience methods to read the request parameters.
NOTE: the doGet()
and doPost()
methods (as well as other HttpServlet
methods) are called by the service()
method.
Concluding,
if you must respond to GET or POST requests made by a HTTP protocol client (usually a browser) don't hesitate to extend HttpServlet
and use its convenience methods.
If you must respond to requests made by a client that is not using the HTTP protocol, you must useservice()
.
This is how
|
GenericServlet vs HttpServlet的更多相关文章
- servlet实现的三种方式对比(servlet 和GenericServlet和HttpServlet)
第一种: 实现Servlet 接口 第二种: 继承GenericServlet 第三种 继承HttpServlet (开发中使用) 通过查看api文档发现他们三个(servlet 和GenericSe ...
- Servlet的 GenericServlet 和 HttpServlet
一.GenericServlet? servlet 是一个接口 下面有两个抽象类 GenericServlet 和 HttpServlet 需要被 继承并重写其中的方法. package javawe ...
- servlet、genericservlet、httpservlet之间的区别
转自:http://blog.csdn.net/rat9912345/article/details/5161789 当编写一个servlet时,必须直接或间接实现servlet接口,最可能实现的方法 ...
- Servlet,GenericServlet和HttpServlet的继承关系
HttpServlet是GenericServlet的子类. GenericServlet是个抽象类,必须给出子类才能实例化.它给出了设计servlet的一些骨架,定义了servlet生命周期,还有一 ...
- servlet、genericservlet、httpservlet之间的区别(转)
当编写一个servlet时,必须直接或间接实现servlet接口,最可能实现的方法就是扩展javax.servlet.genericservlet或javax.servlet.http.httpser ...
- Javaweb学习笔记——(九)——————Servlet的进入,及ServletConfig、GenericServlet、HttpServlet、ServletContext、获取类路径资源
Servlet1.什么是Servlet? *Servlet是Javaweb三大组件之一(Servlet,Filter,Listener) *Servlet是用来处理客户端请求的动态资源 *Servle ...
- Servlet】(2)有关Servlet实现的几个类:GenericServlet、HttpServlet、ServletConfig、ServletContext
一.GenericServlet 1.所有的成员方法: 1.在javaWeb项目中: 2.web.xml <?xml version="1.0" encoding=" ...
- GenericServlet与HttpServlet
1.HttpServlet 1). 是一个 Servlet, 继承自 GenericServlet. 针对于 HTTP 协议所定制. 2). 在 service() 方法中直接把 ServletReu ...
- GenericServlet和HttpServlet有什么区别?
1.HttpServlet 1). 是一个 Servlet, 继承自 GenericServlet. 针对于 HTTP 协议所定制. 2). 在 service() 方法中直接把 ServletReu ...
- Servlet , GenericServlet和HttpServlet
Servlet是一套规范,表现为一套接口,留给开发人员去实现,Servlet接口定义如下(附加servlet-api source来查看源码) 其中init方法被Servlet容器调用,servlet ...
随机推荐
- tp5异常全局返回处理
tp5 针对对异常,在debug模式下,会直接以页面返回的形式显示出各类错误.如果debug关机,显示 页面错误!请稍后再试- ThinkPHP V5.1.38 LTS { 十年磨一剑-为API开发设 ...
- Java实现数字大写转换
需求如下:用json读取后台工时信息,比如23.5小时,需要通过编码将其转换为贰拾叁点伍 比如23.23之前有对Stringl类型强转为Double在转为整型,发生了精度丢失,后来想想对小数点进行分割 ...
- C动态分配内存
malloc分配内存时不初始化,calloc分配内存并进行初始化.
- linux学习(三)-----linux用户管理、实用指令
用户管理 基本介绍 说明: 1.Linux 系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向 系统管理员申请一个账号,然后以这个账号的身份进入系统. 2.Linux 的用户 ...
- TZOJ 5110 Pollutant Control(边数最少最小割最小字典序输出)
描述 It's your first day in Quality Control at Merry Milk Makers, and already there's been a catastrop ...
- 跟我一起了解koa(三)
跟我一起了解koa中间件 一.是 什么是 Koa 的中间件 通俗的讲: :中间件就是匹配路由之前或者匹配路由完成做的一系列的操作,我们就可以 把它叫做中间件. 在 在express件 中间件( (Mi ...
- processlist
###################### 当前会话的线程id,也就是会话id select connection_id(); ########################### select ...
- golang中函数类型
今天看Martini文档,其功能列表提到完全兼容http.HandlerFunc接口,就去查阅了Go: net/http的文档,看到type HandlerFunc这部分,顿时蒙圈了.由于之前学习的时 ...
- Redis源码解析:15Resis主从复制之从节点流程
Redis的主从复制功能,可以实现Redis实例的高可用,避免单个Redis 服务器的单点故障,并且可以实现负载均衡. 一:主从复制过程 Redis的复制功能分为同步(sync)和命令传播(comma ...
- 字符界面总是显示 login incorrect
一般来说出现这样的提示,是因为登陆的密码错误,如果密码中有数字,最好用主键盘输入,用数字键盘会有错误.