servlet、genericservlet、httpservlet之间的区别

servlet是一个接口,定义了所有servlet必须实现的方法。servlet是一个小的Java程序运行在一个Web服务器。servlet接收并响应来自Web客户端的请求,通常跨HTTP、超文本传输协议。要实现这个接口,您可以编写一个通用的servlet扩展javax.servlet.GenericServlet 或者 an HTTP servlet that extends javax.servlet.http.HttpServlet。这个接口定义了方法来初始化一个servlet,服务请求,并从服务器删除servlet。这些被称为生命周期方法,被称为序列:servlet构造,然后初始化(init)方法。任何来自客户机的调用服务(service)方法处理。servlet的服务结束,然后执行销毁(destroy)方法,接下来是垃圾收集和结束。除了生命周期方法,该接口提供了getServletConfig方法,servlet可以使用它来得到任何启动信息,和getServletInfo方法,它允许servlet返回自身的基本信息,比如作者、版本和版权。

servlet接口方法:

genericsevlet定义了一个通用的、独立于协议的servlet。写一个HTTP servlet使用的网络,扩展{ @link javax.servlet.http.HttpServlet }。GenericServlet实现Servlet和ServletConfig接口。GenericServlet可能直接延长一个servlet,尽管它是更常见的扩展一个特定于协议的HttpServlet等子类。
GenericServlet使得编写servlet 更容易。 它提供了简单的版本的生命周期方法 初始化和销毁的方法 ServletConfig接口。 GenericServlet 还实现了日志方法,中声明
ServletContext接口。 编写一个通用的servlet,您只需要 重写抽象服务方法。
GenericSerlvet类方法结构:

HttpServlet类: 提供了一个抽象类派生子类来创建 适合一个网站一个HTTP servlet。 的一个子类 HttpServlet必须覆盖至少 一个方法,通常其中一个:
doGet,如果servlet支持HTTP GET请求
doPost,HTTP POST请求
doPut,HTTP PUT请求
doDelete HTTP DELETE请求
初始化和销毁, 管理资源servlet的生活 getServletInfo,servlet使用 提供自己的信息 几乎没有理由覆盖服务 方法。 服务处理标准HTTP 由调度请求处理程序方法 对于每个HTTP请求类型( the do XXX   methods listed above )。 同样,几乎没有理由覆盖 doOptions和doTrace方法。
servlet通常运行在多线程的服务器, 所以请注意,一个servlet必须处理并发 请求和小心对共享资源的同步访问。 共享资源包括内存数据等 实例或类变量和外部对象 如文件、数据库连接和网络 连接。 看到 <a href = " http://java.sun.com/Series/Tutorial/java/threads/multithreaded.html ">Java多线程编程教程 </a> Java多线程编程教程 在Java程序中处理多个线程的信息。
HttpServlet类方法结构:
=========================================================================================

当编写一个servlet时,必须直接或间接实现servlet接口,最可能实现的方法就是扩展javax.servlet.genericservlet或javax.servlet.http.httpservlet当实现javax.servlet.servlet接口时必须实现5个方法

   
init(servletconfig   config)   
service(servletrequest   req,servletresponse   resp)   
destroy()   
getservletconfig()   
getservletinfo()    

service是执行应用逻辑的入口点,包容器调用此方法来响应进来得请求,只是在servlet被成功初始化后才能调用它 
   其实servlet和applet差不多,当一个servlet被实例化后,包容器自动去调用固定的方法首先是init(),然后是service()..... 

  genericservlet类提供了servlet接口的基本实现,所以他的子类都必须实现service()方法 
  httpservlet类扩展了genericservlet并且提供了servlet接口中具体于http的实现,它更象一个其他所有的servlet都要扩展的类
,其中他定义了两种形式的service方法: 

   service(servirequest req,servletresponse resp) 
   此方法是genericservlet的service()方法的实现,他把resquest,response对象分别转化为httpservletrequest和httpservletresponse并且调用下面重载的service()方法,所以不应当重载上面的service()方法: 

   protect void service(httpservirequest req,httpservletresponse resp) 
   他用http的request,response对象作为参数,并且由上面的方法调用,httpservlet实现这个方法后就成为一个http请求的分发者,他把请求代理给doget(),dopost().....等doxxxx()方法  
   当包容器为一个servlet收到一个请求时,包容器调用公共的service方法在把参数转换为httpservirequest,httpservletresponse 后,这个公共的方法调用保护的service根据http请求方法的类型,保护的service方法调用doxxxx()方法之一.   
doget()方法是当得到一个get类型的请求时调用 
dopost()方法是当得到一个post类型的请求时调用 

httpservlet是从genericservlet继承而来,因此httpservlet也有init和destroy这两个生命周期函数以及service方法,只是httpservlet还有两个重要的dopost方法和doget方法,并用他们来支持http的post和get方法,就是说如果要支持http的get方法,就要覆盖doget方法,如果要支持http的post方法,就要覆盖dopost方法。而get方法和post方法的主要区别在于: 
  post方法的数据传递方式比较安全,不会将传递的信息显示在浏览器的网址后,而get方法则会将传递的信息显示在浏览器的网址后,例如用get方法的浏览器网址:http://127.0.0.1:8080/response.jsp?name=myself;而用post方法则为:http://127.0.0.1:8080/response.jsp;这种区别当用在密码传输时就显的更为重要。




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ServletGenericServletHttpServlet是JavaWeb中的三个关键类,它们之间存在继承关系。 Servlet是JavaWeb的三大组件之一,它可以处理客户端的请求并生成动态的Web内容。Servlet可以通过实现javax.servlet.Servlet接口来创建,也可以通过继承javax.servlet.GenericServlet类或javax.servlet.http.HttpServlet类来创建。\[1\] GenericServlet是一个抽象类,它实现了javax.servlet.Servlet接口,并提供了一些通用的方法和功能。如果我们需要创建一个通用的Servlet,可以继承GenericServlet类并重写其中的方法。\[3\] HttpServletGenericServlet的子类,它进一步扩展了GenericServlet的功能,专门用于处理HTTP请求和响应。如果我们需要创建一个处理HTTP请求的Servlet,通常会继承HttpServlet类并重写其中的doGet()和doPost()方法。\[2\] 所以,可以说HttpServletGenericServlet的子类,而GenericServletServlet接口的实现类。这三者之间存在继承关系,同时也代表了Servlet在不同场景下的不同实现方式。 #### 引用[.reference_title] - *1* *2* *3* [ServletGenericServletHttpServlet之间的关系](https://blog.csdn.net/qq_40645822/article/details/101314753)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值