第二章 Servlet使用入门 在这一章里面我们将要学习以下几点内容: 1:CGI与Servlet的区别 2:Servlet体系结构 3:Servlet的基础知识 4:Servlet的输出 5:Servlet的生命周期 6:HttpServletResponse与HttpServletRequest几个重要方法 CGI与Servlet的区别 1)在最早期的Web应用程序主要是CGI(Common GateWay Interface 通用网关接口)。 2)这类Web应用程序是使用如Perl这样的语言来编写的。 3)CGI有个致命的缺点,就是对每一个客户端,必须创建一个新的实例,这将占用大量的内存 4)为了解决这个问题,Servlet出现了。 5)Servlet是一个用Java编写的类,在服务器上运行,处理客户端的请求,并把结果放给客户端。 6)对于每一个客户端的请求,只需要创建一个Servlet的实例。从而大大的节省了内存 Servlet体系结构 客户端: 客户端----------->Web服务器----->Web容器---->Servlet http请求 服务器端: Servlet------->Web容器----->Web服务器---->客户端 Servlet的基础知识 1)要编写一个Servlet,一般继承自HttpServlet抽像类。所以一般要导入包javax.servlet.*与javax.servlet.http.*; 2)自定义的Servlet一般要重写doGet()方法和doPost()方法 3)doGet方法用来处理客户端通过Get方法发出的请求 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 4)doPost()方法用来处理客户端通过Post方法发出的请求 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 5)request参数用来表示客户端的请求,response参数用来服务器对客户端的响应 6)为了让一个Serlvet能够处理Get请求与Post请求。一般会在doPost的方法里面写上 doGet(request, response)表示把所有的请求转化成为Get请求 Servlet的输出 1)Servlet可以通过两种方法来输出运算的结果 A:通过System.out.Print方法。此方法会把结果输出到Cmd中,也就是TomCat中。 B:通过response参数的getWriter()方法得到一个PrintWriter对像进行输出, 此输出会把计算结果输出到IE上,一般用此方法 PrintWriter out = response.getWriter(); out.println Servlet的生命周期 1)Servlet的生命周期是指从一个Servle的创建开始到消亡的全过程 2)Servlet的生命周期各阶段如下: A:实例化:也就是创建一个Servlet类的实例 B:初始化:向window申请资源。此时会自动去执行Init方法 C:服务:去不断地接受客户端的请求,并做出响应 D:释放:把以前分配的资源进行归还给操作系统,此时会自动执行destroy方法 举例: 做一个servlet计数器,用来输出servlet被调用了多少次 步骤: 1)定义一个全局变量 2)在Init中赋初值为0 3)在doGet把变量加1, 并输出 提问: 1)同时打开另外一个IE浏览器,做一个新的客户端,讨论计数器会不会清零 结论:不管有多少个客户端,都只有一份实例。 2)讨论什么时候计数器才会清零,关闭TomCat容器 结论:说明Web容器一旦关闭,则容器里面的servlet也就会消亡 HttpServletResponse与HttpServletRequest几个重要方法 1:HttpServletResponse A:response.setContentType("编码") 设置向客户端输出的文本的编码,一般设为"text/html; charset=GBK" response.setContentType("text/html; charset=GBK"); 如果不设置,可能会出现乱码 B:PrintWriter out = response.getWriter(); 产生一个PrintWriter对像,此对像能够把信息输入到网页中去 此对像不仅可以输出普通字符,还可以输出html标记 在不使用此对像时,应该关闭该对像。out.close(); C:response.sendRedirect("Index.html"); 使页面进行跳转 2:HttpServletRequest A:request.getParameter("变量名") B:如果接受中文再输出会是乱码,为了解决这个问题,可以在接受之间加上 request.setCharacterEncoding("GBK"); request.getParameter("变量名") 可以得到客户端以Post或Get方法提交过来的变量 举例: 1:创建一个登录的Html页面,通过Post提交到Servlet中,通过Servlet来判断数据库中用户名是否正确, 如果正确则跳到主页面,否则打印错误,并提供"返回"超链接 2:编写一个用于注册会员的html页面,让用户填写会员的资料后,能够把这些资料保存到数据库中去

评论