传智播客JavaWeb重点知识随堂笔记

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第二章Servlet使用入门在这一章里面我们将要学习以下几点内容:1:CGI与Servlet的区别2:Servlet体系结构3:Servlet的基础知识4:Servlet的输出5:Servlet的生命周期6:HttpServletResponse与HttpServletRequest几个重要方法CGI与Servlet的区别1)在最早期的Web应用程序主要是CGI(CommonGateWayInterface通用网关接口)。2)这类Web应用程序是使用如Perl这样的语言来编写的。3)CGI有个致命的缺点,就是对每一个客户端,必须创建一个新的实例,这将占用大量的内存4)为了解决这个问题,Servlet出现了。5)Servlet是一个用Java编写的类,在服务器上运行,处理客户端的请求,并把结果放给客户端。6)对于每一个客户端的请求,只需要创建一个Servlet的实例。从而大大的节省了内存Servlet体系结构客户端:客户端-----------Web服务器-----Web容器----Servlethttp请求服务器端:Servlet-------Web容器-----Web服务器----客户端Servlet的基础知识1)要编写一个Servlet,一般继承自HttpServlet抽像类。所以一般要导入包javax.servlet.*与javax.servlet.http.*;2)自定义的Servlet一般要重写doGet()方法和doPost()方法3)doGet方法用来处理客户端通过Get方法发出的请求publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException4)doPost()方法用来处理客户端通过Post方法发出的请求publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException5)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上,一般用此方法PrintWriterout=response.getWriter();out.printlnServlet的生命周期1)Servlet的生命周期是指从一个Servle的创建开始到消亡的全过程2)Servlet的生命周期各阶段如下:A:实例化:也就是创建一个Servlet类的实例B:初始化:向window申请资源。此时会自动去执行Init方法C:服务:去不断地接受客户端的请求,并做出响应D:释放:把以前分配的资源进行归还给操作系统,此时会自动执行destroy方法举例:做一个servlet计数器,用来输出servlet被调用了多少次步骤:1)定义一个全局变量2)在Init中赋初值为03)在doGet把变量加1,并输出提问:1)同时打开另外一个IE浏览器,做一个新的客户端,讨论计数器会不会清零结论:不管有多少个客户端,都只有一份实例。2)讨论什么时候计数器才会清零,关闭TomCat容器结论:说明Web容器一旦关闭,则容器里面的servlet也就会消亡HttpServletResponse与HttpServletRequest几个重要方法1:HttpServletResponseA:response.setContentType(编码)设置向客户端输出的文本的编码,一般设为text/html;charset=GBKresponse.setContentType(text/html;charset=GBK);如果不设置,可能会出现乱码BrintWriterout=response.getWriter();产生一个PrintWriter对像,此对像能够把信息输入到网页中去此对像不仅可以输出普通字符,还可以输出html标记在不使用此对像时,应该关闭该对像。out.close();C:response.sendRedirect(Index.html);使页面进行跳转2:HttpServletRequestA:request.getParameter(变量名)B:如果接受中文再输出会是乱码,为了解决这个问题,可以在接受之间加上request.setCharacterEncoding(GBK);request.getParameter(变量名)可以得到客户端以Post或Get方法提交过来的变量举例:1:创建一个登录的Html页面,通过Post提交到Servlet中,通过Servlet来判断数据库中用户名是否正确,如果正确则跳到主页面,否则打印错误,并提供返回超链接2:编写一个用于注册会员的html页面,让用户填写会员的资料后,能够把这些资料保存到数据库中去第三章会话跟踪简介在这一章里面我们将要学习以下几点内容:1:Servlet中页面跳转的方法2:Sevlet中session对像3:Serlvet中Cookie对像4:Serlvet上下文Servlet中页面跳转的方法1:request.getRequestDispatcher(目标).forward(request,response);2:response.sendRedirect(目标);3:forward与sendRedirect的区别:A:forward跳转之后在地址栏中显示依然是旧网页的地址,sendRedirect显示的是新网页的地址B:forward只能跳转到当前Web程序中的页面,而sendRedirect可以跳到任何目录。比如:request.getRequestDispatcher().forward(request,response);错误response.sendRedirect();正确什么是Session对像1:首先你应该把session想像成为一个大盒子,里面用来存放客户的数据2:当你打开一个网站的首页时,服务器就会为你创建一个大盒子,并且为这个大盒子编一个号,于是这个大盒子就可以让你在这个网站的不同页面之间共享,直到你离开这个网站的时候,这服务器又会收回这个大盒子3:可见session对像的其中的一个功能就是为了实现让同一个客户端在不同页面之间实现数据共享.但是一旦用户离开这个网站,那么session也就会自动消失4:一个网站可以被很多人同时访问,访问的每一个人在打开主页时,都会有一个大盒子,即session.如果另一个用户也同时访问网站,他也拥有自己的Session,但两个用户之间无法通过Session共享信息5:以游泳分配一个柜子为例来说明sesson的用法6:session对像的常用手法:A:在一个页面里面创建一个session变量.B:在另外一个页面里面去使用该session变量.Session对像的方法1)在Servlet中要使用Session,必须要使用HttpSession接口2)Session对像是一个数据集合,也就是一个Session对像里面可以放很多session变量,每一个Session变量都可以存放数据3)if(request.getSession().getAttribute(IsLogin)!=null)判断一个Session变量IsLogin是否存在,只有存在才可以继续读取里面的数据3)得到一个IsLogin变量的值if(request.getSession().getAttribute(IsLogin)!=null)只有判断存在了,才可以读数据request.getSession().getAttribute(IsLogin):4)request.getSession().setAttribute(IsLogin,Yes);设置session中IsLogin里面的值什么是Cookies对像cookies对像可以客户端长期保存信息。在客户端的计算机里面会有一个cookies文件夹,那里就是存放客户端的信息的。当客户端第一次去访问某个网站时,该网站就会在客户端的计算机里面偷偷地写入一个Cookies下一次再访问该网站时,它就会读取你的计算机硬盘上cookies,并将新的信息保存在你的计算机上。跟session不同的,cookies是把信息存储在客户端,不是在服务器里面。操作cookies1:得到所有的CookiesCookie[]cookies=request.getCookies();2:得到指定Cookies的名字:Cookie.getName()3:得到指定Cookies的值Cookie.getValue();4:设置指定Cookies的值cookie.setValue(值)5:添加一个Cookiescookie=newCookie(Visted,1);cookie.setMaxAge(10000);设置cookie的过期时间以钞为单位response.addCookie(cookie);4:修改指定cookie的值:注意修改之后也要重新添加,否则添加之后无效cookie.setValue(值);cookie.setMaxAge(1000);response.addCookie(cookie);应用举例:1:证明正常情况下,一个网页或Servlet的数据是不能给另外一个网页或servelt共享做两个servlet,一个servlet里面给一个session变量赋值,给一个私有变量赋值在另外一个servlet里面去使用session变量与私有变量的值,看一下结果2:有一个登录界面(login.html),一个主页面(index),在主页面里面有二个超链接分别为无限下载,新闻快递。用户必须要登录之后进入主页面,然后才能使用这二个超链接功能,如果直接使用Index.html则会提示没有登录,然后转到登录界面[注意使用session对像]登录页面--------转到servlet1,用来处理用户名是否正确,如果正确,转到主页面,否则转到错误页面主页面----------转到servlet2,用来判断用户是否登录过,如果登录过则转到无限下载或新闻快递页面,否则转到登录页面3:统计某个客户端曾经访问某个网站的次数,和网站的所有访问次数Cookie[]cookies=request.getCookies();if(cookies!=null)//如果cookies不为空{for(i=0;icookies.length;i++){if(cookies.getName().equals(Visted)){break;}}if(icookies.length)//找到{cookie=cookies;intn=Integer.parseInt(cookie.getValue());cookie.setValue(Integer.toString(n+1));cookie.setMaxAge(1000);response.addCookie(cookie);}else{cookie=newCookie(Visted,1);cookie.setMaxAge(10000);response.addCookie(cookie);}}else//为空,一定要创建{cookie=newCookie(Visted,1);

1 / 90
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功