int number=0;
public void init(ServletConfig config) throws ServletException {super.init(config); }
public synchronized void service(HttpServletRequest request,HttpServletResponse response)
throws IOException { //获得一个向客户发送数据的输出流: PrintWriter out=response.getWriter();
response.setContentType(\MIME类型为纯文本。 number++; sum=sum+i/j; j=j+2; i=-i;
out.println(\ out.println(\ } }
7.5 HttpServlet 类
7.5.1 doGet方法和doPost方法
HttpServlet除了init、service、destroy方法外,该类还有两个很重要的方法:doGet和doPost,用来处理客户的请求并作出响应。
当服务器引擎第一次接受到一个servlet请求时,会使用init方法初始化一个servlet,以后每当服务器再接受到一个servlet请求时,就会产生一个新线程,并在这个线程中调用service方法检查HTTP请求类型(Get 、Post等),并在service方法中根据用户的请求方式,对应地再调用doGet或doPost方法。因此,在servlet类中,我们不必重写service方法来响应客户,直接继承service方法即可。我们可以在servlet类中重写doPost或doGet方法来响应用户的请求,这样可以增加响应的灵活性,并降低服务器的负担。
如果不论用户请求类型是Post还是Get,服务器的处理过程完全相同,那么我们可以只在doPost方法中编写处理过程,而在doGet方法中再调用doPost方法即可,或只在doGet方法中编写处理过程,而在doPost方法中再调用doGet方法(见例子6)。
如果根据请求的类型进行不同的处理,就需在两个方法中编写不同的处理过程(见例子7)。
在下面的例子6中,用户可以通过两个表单向servlet提交一个正数,其中一个表单的提交方式是post,另一个表单的方式是get。无论用户用那种方式,服务器的servlet都计算这个数的全部因数,返回给用户。而在下面的例子7中,如果使用post方式提交正数,servlet计算这个数的全部因数,如果使用get方式,servlet求出小于这个数的全部素数。
11
例子6(效果如图7.9所示) 提交正数的JSP页面 Example7_6.jsp:
<%@ page contentType=\
输入一个数,提交给servlet(Post方式):