1.Servlet是JSP的底层实现,而且JSP也是通过转译成Servlet后才能执行的。
2.Servlet其实就是一个Java类,所以其创建方法和创建Java类完全相同(但注意:它没有main()方法),所有的Servlet类都必须继承HttpServlet类。HttpServlet接口包含很多方法,除了init()和destroy()方法用来处理Servlet初始化和销毁。还包括一些常用方法,如doGet方法、doPost以及Service方法。
3.Servlet的生命周期
(1)生成Servlet,加载到Servlet Engine(Web容器)中,并通过调用其init()方法来进行初始化。
(2)通过提供的响应方法来处理客户端的请求。
(3)调用destroy()方法进行销毁,并通过垃圾收集器进行收集清理。
————————————————————————————————————————
————————————————————————————————————————
doGet方法:doGet方法用来处理客户端浏览器直接访问和表单get方式提交的表单。
<%@ page language="java" contentType="text/html;charset=gb2312"%> <html> <head> </head> <body> </body> </html> OK,接下来相对应的Servlet代码如下: package com.javaweb.ch10; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class DoGetDemo extends HttpServlet { } 好了,现在我来解释一下上面代码的意思: 另外说明一下,doGet方法只能用来处理get方式提交上来的表单,不能处理post方式提交的表单。
————————————————————————————————————————————
————————————————————————————————————————————
doPost方法是用来处理表单post方式提交的表单,不能处理客户端浏览器直接访问。 实例如下:USERFORM2.JSP <%@ page language="java" contentType="text/html;charset=gb2312"%> <html> <head> </head> <body> </body> </html> 接下来,相对应的Servlet代码如下(DOPOSTDEMO.JAVA) package com.javaweb.ch10; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class DoPostDemo extends HttpServlet { } 解释一下上面代码的意思: 实例代码DOPOSTDEMO.JAVA的主体代码与前面的doGet方法的主体代码相似,只是将代码写在了doPost中,doPost方法能处理Post方式提交的表单,但无法处理浏览器的直接访问。实际上,我这样写的目的就是想说不论是doGet方法还是doPost方法都能处理各自的提交方式,但两个方法之间对同一种请求的处理则是不允许混用。如果要想用一种方法来同时处理客户端的get及post请求请关注下周博文中的service方法。
————————————————————————————————————
————————————————————————————————————
service方法用来处理客户端浏览器直接访问和表单以get方式提交以及表单以post方式提交的情况。 首先说表单的写法(这里说的是常规写法): <form action="ServiceDemo" method="post"> 用户名:<input type="text" name="username"/><br> 密码:<input type="password" name="password"/><br> <input type="submit" value="提交"/> <input type="reset" value="重置"/> </form> 相对应的Servlet写法(因为篇幅问题,我省略了包导入语句): public class ServiceDemo extends HttpServlet { throws ServletException, IOException { response.setContentType("text/html;charset=gb2312"); PrintWriter out = response.getWriter(); request.setCharacterEncoding("gb2312"); String username = request.getParameter("username"); String password = request.getParameter("password"); out.println("<html>"); out.println("<body>"); out.println("用户名:" + username + "<br>"); out.println("密码:" + password); out.println("</body>"); out.println("</html>"); } } 其实,这个service方法的用法与前面的doGet与doPost方法的用法完全一样,它实现了对这两种提交方式的处理,只要在代码中实现了这个方法,具体的调用过程由Web容器去处理。 |
|