第二章 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页面,让用户填写会员的资料后,能够把这些资料保存到数据库中去
评论