转载地址:http://hi.baidu.com/clisdena/blog/item/5d185a959aa1230d7bf4809a.html
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。
分享到:
相关推荐
type Exception report message description The server encountered an internal error () that prevented it from fulfilling this ... javax.servlet.http.HttpServlet.service(HttpServlet.java:717)解决办法:
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...
Caused by: java.lang.OutOfMemoryError: PermGen space解决方案, ... at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
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....
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...
使用步骤: 将HttpServletRequest转成 ip /** * 获得请求地址ip * @param httpservletrequest * @return */ public static String getClientIP(HttpServletRequest ... String s = httpservlet
com.test.app.service.UcService <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap <servlet-name>Resteasy <servlet-class>org.jboss.resteasy.plugins.server....
提供了实现servlet接口的两种方法:子类化javax.servlet.GenericServlet(这种方法提供了读取servlet配置信息的例子)和子类化javax.servlet.http.HttpServlet类.还有用service方法完成的经典的Hello World程序
import org.news.service.impl.TopicServiceImpl; /** * 后台主题Servlet */ public class TopicServlet extends HttpServlet { private static final Logger logger = Logger.getLogger(TopicServlet.class); ...
1.Servlet 是什么? Servlet是使用Java Servlet 应用程序设计接口(API...因为 HttpServlet.service() 方法会检查请求方法是否调用了适当的处理方法,不必要覆盖 service() 方法。只需覆盖相应的 do 方法就可以了。
import zhifubao.service.order.OrderController; /** * @author YXqiang */ @WebServlet(description = "支付宝测试支付功能", urlPatterns = { "/mydo" }) public class zhifubaoServlet extends HttpServlet {...
import com.pb.supermanager.service.impl.UserServiceImpl; public class UserAdd extends HttpServlet { private static final long serialVersionUID = -6316960884845775373L; public UserAdd() { super...
import service.UserServiceImpl; import vo.User; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet....
Called by the servlet container to indicate to a servlet that the servlet is being taken out of service. destroy() - Method in class javax.servlet.GenericServlet Called by the servlet container to ...
HttpServlet 类包含 init()、destroy()、service() 等方法。其中 init() 和 destroy() 方法是继承的(HttpServlet扩展至GenericServlet)。所有用于HTTP的servlet编程都通过继承javax.servlet.http.HttpServlet ...
2)覆盖尚未实现的方法---service方法 3)在web.xml进行servlet的配置 但在实际开发中,我们不会直接去实现Servlet接口,因为那样需要覆盖的方法太多, 我们一般创建类继承HttpServlet 实现步骤: 1)创建类继承...
import com.sshmvc.ljl.service.impl.UserServiceImpl; /** * Servlet implementation class ListUserServlet */ public class ListUserServlet extends HttpServlet { private static final long ...
// 调用service层方法得到所有的 String temp = req.getParameter("page"); int page = 1; if (temp != null) { try { page = Integer.parseInt(temp); } catch ...