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。
分享到:
相关推荐
其中,`Servlet`接口是所有Servlet的基类,定义了服务HTTP请求的方法,如`service()`方法。`ServletConfig`接口提供了Servlet的配置信息,而`ServletRequest`和`ServletResponse`则分别代表了HTTP请求和响应对象,...
HttpServlet的核心在于它的`service()`方法,这是一个抽象方法,当客户端向Servlet发送请求时,容器(如Tomcat)会调用这个方法。HttpServlet通过重写`service()`方法,根据HTTP请求类型(GET、POST等)调用相应的...
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...
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...
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/util/PostUtil at org.apache.jsp.shouye.index_jsp._jspService(index_jsp.java:84) at org.apache....
5. **代码错误**:在Servlet的生命周期方法(如`init()`, `service()`, `destroy()`)中可能存在逻辑错误,导致运行时异常。 修复“httpservlet报错”的步骤: 1. **检查依赖**:如果你使用的是Maven或Gradle,...
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...
GenericServlet的service()方法根据请求的类型(GET、POST等)调用相应的doXXX()方法,这样我们只需要重写这些特定的方法即可处理请求。 HttpServlet是GenericServlet的子类,进一步专门化为处理HTTP协议的请求。...
将HttpServletRequest转成 ip /** * 获得请求地址ip * @param httpservletrequest * @return */ public static String getClientIP(HttpServletRequest httpservletrequest) { if (httpservletrequest ...
- **服务**:当客户端发送请求时,Servlet容器调用`service`方法处理请求并生成响应。 - **销毁**:当Servlet容器关闭或者决定卸载Servlet时,会调用`destroy`方法释放资源。 #### 7. 总结 `HttpServlet`是Java ...
在`HttpServlet`中,还有一些关键的成员变量和方法,例如`service()`方法,它是Servlet生命周期中的核心方法,负责调度请求到对应的`doXXX()`方法。还有`init()`和`destroy()`方法,分别在Servlet初始化和销毁时被...
`init()`方法只在Servlet加载时调用一次,`service()`方法会在每次请求时调用,`destroy()`方法在Servlet卸载前调用。 5. **Servlet API** - Java Servlet API定义了Servlet容器和Servlet之间的交互接口,包括`...
每当一个客户请求一个 HttpServlet 对象,该对象的 service() 方法就要被调用,而且传递给这个方法一个"请求"(ServletRequest)对象和一个"响应"(ServletResponse)对象作为参数。 3. destroy() 方法:destroy() 方法...
这两个方法在`service()`方法中被调用,`service()`会根据请求类型选择合适的处理方法。 3. HttpServlet响应处理:在处理请求后,HttpServlet会生成一个响应,包括状态码、响应头和响应体。响应体通常是HTML或其他...
在实际开发中,我们可以通过继承`HttpServlet`并重写这些方法来创建自己的Servlet。例如: ```java public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, ...
com.test.app.service.UcService <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap <servlet-name>Resteasy <servlet-class>org.jboss.resteasy.plugins.server....
BookQuote bookQuote = service.getBookQuotePort(); float price = bookQuote.getBookPrice( isbn ); // ... } catch (Exception e) { // Handle exceptions } } } ``` 在这个例子中,首先通过JNDI查找获取...
- 修改`MANIFEST.MF`文件,导入必要的包,如`javax.servlet`、`javax.servlet.http`、`org.osgi.service.http`和`org.osgi.util.tracker`。 - 在插件目录下创建`helloworld.html`,内容用于显示“Hello From hello...
service()方法内部会判断请求类型,并相应地调用doGet()或doPost()。 3. **doGet()** 和 **doPost()**:这两个方法是HTTP请求的具体处理者。doGet()用于处理GET请求,doPost()则处理POST请求。在这些方法中,你可以...