陕西国际商贸学院信息与工程学院《Web应用开发技术》实验报告实验名称:Cookie及其应用操作班级:信管B1201班学生姓名:***实验地点:1S501实验室日期:2015年4月24日1.实验内容Cookie是客户访问Web服务器时,服务器在客户硬盘上存放的信息,好像是服务器送给客户的“点心”。
Cookie实际上是一小段文本信息,客户以后访问同一个Web服务器时浏览器会把它们原样发送给服务器。
2.实验目的a:向客户发送Cookie对象b:从客户端读取Cookiec:用Cookie实现自动登录3.实验要求a:要把Cookie发送到客户端,Servlet先要使用Cookie类的构造方法创建一个Cookie对象,通过setXXX()设置各种属性,通过响应对象的addCookie(cookie)把Cookie加入响应头。
b:要从客户端读入Cookie,Servlet应该调用请求对象的getCookies(),该方法返回一个Cookie对象的数组。
大多数情况下,只需要用循环访问该数组的各个元素寻找指定名字的Cookie,然后对该Cookie调用getValue()取得与指定名字关联的值。
c:当用户第一次登录网站,服务器将用户名和密码以Cookie的形式发送到客户端。
当客户之后再次访问该网站时,浏览器自动将Cookie文件中的用户名和密码随请求一起发送到服务器,服务器从Cookie中取出用户名和密码并且通过验证,这样客户不必再次输入用户名和密码登录网站。
4.算法分析a:创建一个Cookie对象:Cookie userCookie = new Cookie(“username”,”hacker”);将userCookie对象的最大存活时间设置为一个星期:userCookie.setMaxAge(60*60*24*7);向客户发送Cookie对象:response.addCookie(userCookie);b:调用请求对象的getCookies()方法:Cookie[] cookies=request.getCookies();c:GET方法首次访问请求中不包含Cookie,该Servlet将响应重定向到login.jsp页面。
当输入正确的用户名和口令,且选中“自动登录”复选框,单击“提交”按钮,将发送POST请求由CheckUserServlet的doPost()处理。
之后再发送GET请求,Servlet将从Cookie中检索出用户名和口令,并对其验证。
5.部分程序清单a:SendCookieServlet.javapublic class SendCookieServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException {Cookie userCookie=new Cookie("username","hacker");userCookie.setMaxAge(60*60*24*7);response.addCookie(userCookie);response.setContentType("text/html;charset=UTF-8");PrintWriter out = response.getWriter();out.println(" <HTML><TITLE>发送Cookie</TITLE></HTML>");out.println("<BODY><H3>已向浏览器发送一个Cookie</h3></body>");out.println("</HTML>");}}b:ReadCookieServlet.javapublic class ReadCookieServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException {String cookieName="username";String cookieValue=null;Cookie[]cookies=request.getCookies();if(cookies!=null){for(int i=0;i<cookies.length;i++){Cookie cookie=cookies[i];if(cookie.getName().equals(cookieName))cookieValue=cookie.getValue();}}response.setContentType("text/html;charset=UTF-8");PrintWriter out = response.getWriter();out.println("<HTML><TITLE>读取cookie</TITLE></HTML>");out.println(" <BODY><h3>从浏览器读回一个cookie</h3>");out.println("Cookie名:"+cookieName+"<br>");out.println("Cookie值:"+cookieValue+"<br>");out.println(" </BODY>");out.println("</HTML>");}}c:login1.jsp<body>${sessionScope.message}<br><form action="CheckUserServlet"method="post">请输入用户名和口令:<br>用户名:<input type="text" name="username" /><br>口 令:<input type="password" name="password" /><br><input type="checkbox" name="check" value="check" />自动登录<br> <input type="submit" value="提交" /><input type="reset" value="重置" /></form></body>CheckUserServlet.javaprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");String value1 = "",value2 = "";Cookie cookie = null;Cookie[] cookies = request.getCookies();if(cookie!=null){for(int i = 0;i<cookies.length;i++){cookie = cookies[i];if(cookie.getName().equals("username"))value1 = cookie.getValue();if(cookie.getName().equals("password"))value2 = cookie.getValue();}if(value1.equals("admin")&&value2.equals("admin")){message = "欢迎您!"+value1+"再次登录该页面!";request.getSession().setAttribute("message", message);response.sendRedirect("welcome.jsp");}else{response.sendRedirect("login1.jsp");}}else{response.sendRedirect("login1.jsp");}}protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");String username = request.getParameter("username").trim();String password = request.getParameter("password").trim();if(!username.equals("admin")||!password.equals("admin")){message = "用户名或口令不正确,请重试!";request.getSession().setAttribute("message", message);response.sendRedirect("login1.jsp");}if(request.getParameter("check")!=null&&(request.getParameter("check").equals("check"))){Cookie nameCookie = new Cookie("username",username);Cookie pswdCookie = new Cookie("password",password);nameCookie.setMaxAge(60*60);pswdCookie.setMaxAge(60*60);response.addCookie(nameCookie);response.addCookie(pswdCookie);}message = "你已经成功登录!";request.getSession().setAttribute("message", message);response.sendRedirect("welcome.jsp");}}6.实验结果程序a的运行结果如图1所示图1 SendCookieServlet运行结果图程序b的运行结果如图2所示图2 ReadCookieServlet运行结果图程序c的运行结果如图3,图4,图5所示图3 登录成功运行结果图图4 welcome.jsp运行结果图图5 登录失败运行结果图7.实验总结通过对Cookie的学习,明白了Cookie是客户访问Web服务器时,服务器在客户硬盘上存放的信息,在实验中,根据参考代码及分析,能容易的理解并运行出来结果。