`
hz_chenwenbiao
  • 浏览: 1007893 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

关于httpServlet.service()方法(转)

阅读更多

1、HTTP Servlet 使用一个 HTML 表格来发送和接收数据。要创建一个 HTTP Servlet,就需要扩展 HttpServlet 类,该类是用专门的方法来处理 HTML 表格的 GenericServlet 的一个子类。当表单信息被提交时,会指定服务器应执行哪一个Servlet(或其它的程序)。HttpServlet 类包含 init()、destroy()、service() 等方法,其中 init() 和 destroy() 方法是继承的. 

2、HTTP Servlet 的service() 方法

service() 方法是 Servlet 的核心。

每当一个客户请求一个HttpServlet 对象,该对象的service() 方法就要被调用,而且传递给这个方法一个"请求"(ServletRequest)对象和一个"响应"(ServletResponse)对象作为参数。

在 HttpServlet 中已存在 service()方法.缺省的服务功能是调用与 HTTP 请求的方法相应的 do 功能。
例如,如果 HTTP 请求方法为 GET,则缺省情况下就调用 doGet()。

service方法是接口中的方法,servlet容器把所有请求发送到该方法,该方法默认行为是转发http请求到doXXX方法中,如果你重载了该方法,默认操作被覆盖,不再进行转发操作! 
service()是在javax.servlet.Servlet接口中定义的, 在 javax.servlet.GenericServlet中实现了这个接口, 而 doGet/doPost 则是在 javax.servlet.http.HttpServlet 中实现的, javax.servlet.http.HttpServlet 是javax.servlet.GenericServlet 的子类.

Servlet 应该为 Servlet 支持的 HTTP 方法覆盖 do 功能.因为HttpServlet.service() 方法会检查请求方法是否调用了适当的处理方法,不必要覆盖 service() 方法。只需覆盖相应的 do 方法就可以了。

当一个客户通过HTML 表单发出一个HTTP POST请求时,doPost()方法被调用。与POST请求相关的参数作为一个单独的HTTP请求从浏览器发送到服务器。
当需要修改服务器端的数据时,应该使用doPost()方法。
当一个客户通过HTML
 表单发出一个HTTP GET请求或直接请求一个URL时,doGet()方法被调用。与GET请求相关的参数添加到URL的后面,并与这个请求一起发送。当不会修改服务器端的数据时,应该使用doGet()方法。

我们也需要把Servlet
做成既能处理GET请求,也能够处理POST请求(eg:Servlet要处理GET和POST两种请求)这只需要在doPost方法中调用doGet方法,或者覆盖 service方法(service方法调用doGet、doPost、doHead等方法)在实际编程中这是一种标准的方法,因为它只需要很少的额外工作,却能够增加客户端编码的灵活性。
注意:一般会在service()中实现对父类方法的同参数表重载,即写上super.service(req, resp);
         即使有了service()方法,也要把doGet()和doPost()方法标识出来!!
(我得要请教一下~~)


Servlet的响应可以是:
一个输出流,浏览器根据它的内容类型(如text/HTML)进行解释;
一个HTTP错误响应, 重定向到另一个URL,servlet,JSP。

分享到:
评论

相关推荐

    httpservlet.jar包下载

    其中,`Servlet`接口是所有Servlet的基类,定义了服务HTTP请求的方法,如`service()`方法。`ServletConfig`接口提供了Servlet的配置信息,而`ServletRequest`和`ServletResponse`则分别代表了HTTP请求和响应对象,...

    Java Web程序设计入门课件-HttpServlet.pptx

    HttpServlet的核心在于它的`service()`方法,这是一个抽象方法,当客户端向Servlet发送请求时,容器(如Tomcat)会调用这个方法。HttpServlet通过重写`service()`方法,根据HTTP请求类型(GET、POST等)调用相应的...

    apache-tomcat-7.0.69.zip

    at javax.servlet.http.HttpServlet.service(HttpServlet.java:624) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:807) at javax.servlet.http.HttpServlet.service...

    COS——R.log

    at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454) at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281) at org.apache.axis.transport.http.AxisServlet.doPost...

    commons-beanutils-1.7.0

    at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter...

    严重: Servlet.service() for servlet jsp threw exception java.lang.UnsupportedClassVersionError: com/ut

    严重: Servlet.service() for servlet jsp threw exception java.lang.UnsupportedClassVersionError: com/util/PostUtil  at org.apache.jsp.shouye.index_jsp._jspService(index_jsp.java:84)  at org.apache....

    httpservlet的jar包,修复httpservlet报错

    5. **代码错误**:在Servlet的生命周期方法(如`init()`, `service()`, `destroy()`)中可能存在逻辑错误,导致运行时异常。 修复“httpservlet报错”的步骤: 1. **检查依赖**:如果你使用的是Maven或Gradle,...

    java head space.txt

    at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851) at javax.servlet.http.HttpServlet.service...

    Servlet&GenericServlet&HttpServlet源码分析.zip_GenericServle_httpser

    GenericServlet的service()方法根据请求的类型(GET、POST等)调用相应的doXXX()方法,这样我们只需要重写这些特定的方法即可处理请求。 HttpServlet是GenericServlet的子类,进一步专门化为处理HTTP协议的请求。...

    微信支付学习笔记之调用com.github.binarywang.wxpay.service接口

    将HttpServletRequest转成 ip /** * 获得请求地址ip * @param httpservletrequest * @return */ public static String getClientIP(HttpServletRequest httpservletrequest) { if (httpservletrequest ...

    HttpServlet 的Servlet的详解

    - **服务**:当客户端发送请求时,Servlet容器调用`service`方法处理请求并生成响应。 - **销毁**:当Servlet容器关闭或者决定卸载Servlet时,会调用`destroy`方法释放资源。 #### 7. 总结 `HttpServlet`是Java ...

    查看httpServlet源码的包必须导入这个包才能看源代码

    在`HttpServlet`中,还有一些关键的成员变量和方法,例如`service()`方法,它是Servlet生命周期中的核心方法,负责调度请求到对应的`doXXX()`方法。还有`init()`和`destroy()`方法,分别在Servlet初始化和销毁时被...

    HttpServlet实现的资料,帮助初学者使用HttpServlet

    `init()`方法只在Servlet加载时调用一次,`service()`方法会在每次请求时调用,`destroy()`方法在Servlet卸载前调用。 5. **Servlet API** - Java Servlet API定义了Servlet容器和Servlet之间的交互接口,包括`...

    JSP应用开发-Servlet创建及常用方法.pptx

    每当一个客户请求一个 HttpServlet 对象,该对象的 service() 方法就要被调用,而且传递给这个方法一个"请求"(ServletRequest)对象和一个"响应"(ServletResponse)对象作为参数。 3. destroy() 方法:destroy() 方法...

    JavaWeb程序设计入门课件HttpServlet共4页

    这两个方法在`service()`方法中被调用,`service()`会根据请求类型选择合适的处理方法。 3. HttpServlet响应处理:在处理请求后,HttpServlet会生成一个响应,包括状态码、响应头和响应体。响应体通常是HTML或其他...

    servlet_1

    在实际开发中,我们可以通过继承`HttpServlet`并重写这些方法来创建自己的Servlet。例如: ```java public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, ...

    jaxrs-api,javax.ws.rs.Path;

    com.test.app.service.UcService <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap <servlet-name>Resteasy <servlet-class>org.jboss.resteasy.plugins.server....

    Java Web Service的客户端实现

    BookQuote bookQuote = service.getBookQuotePort(); float price = bookQuote.getBookPrice( isbn ); // ... } catch (Exception e) { // Handle exceptions } } } ``` 在这个例子中,首先通过JNDI查找获取...

    osgi注册servlet.pdf

    - 修改`MANIFEST.MF`文件,导入必要的包,如`javax.servlet`、`javax.servlet.http`、`org.osgi.service.http`和`org.osgi.util.tracker`。 - 在插件目录下创建`helloworld.html`,内容用于显示“Hello From hello...

    servlet中方法执行次序及API简介(init,service,doservice,doget等)

    service()方法内部会判断请求类型,并相应地调用doGet()或doPost()。 3. **doGet()** 和 **doPost()**:这两个方法是HTTP请求的具体处理者。doGet()用于处理GET请求,doPost()则处理POST请求。在这些方法中,你可以...

Global site tag (gtag.js) - Google Analytics