实验报告——Cookie及其应用操作
时间:2020-11-18 16:46:00 来源:勤学考试网 本文已影响 人
陕西国际商贸学院
信息与工程学院
《Web应用开发技术》实验报告
实验名称:Cookie及其应用操作
班级:信管B1201班
学生姓名:吴兰
实验地点:1S501实验室
日期:2015年4月24日
实验内容
Cookie是客户访问Web服务器时,服务器在客户硬盘上存放的信息,好像是服务器送给客户的“点心”。Cookie实际上是一小段文本信息,客户以后访问同一个Web服务器时浏览器会把它们原样发送给服务器。
实验目的
a:向客户发送Cookie对象
b:从客户端读取Cookie
c:用Cookie实现自动登录
实验要求
a:要把Cookie发送到客户端,Servlet先要使用Cookie类的构造方法创建一个Cookie对象,通过setXXX()设置各种属性,通过响应对象的addCookie(cookie)把Cookie加入响应头。
b:要从客户端读入Cookie,Servlet应该调用请求对象的getCookies(),该方法返回一个Cookie对象的数组。大多数情况下,只需要用循环访问该数组的各个元素寻找指定名字的Cookie,然后对该Cookie调用getValue()取得与指定名字关联的值。
c:当用户第一次登录网站,服务器将用户名和密码以Cookie的形式发送到客户端。当客户之后再次访问该网站时,浏览器自动将Cookie文件中的用户名和密码随请求一起发送到服务器,服务器从Cookie中取出用户名和密码并且通过验证,这样客户不必再次输入用户名和密码登录网站。
算法分析
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中检索出用户名和口令,并对其验证。
部分程序清单
a:SendCookieServlet.java
public 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.java
public 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.java
protected 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");
}
}
实验结果
程序a的运行结果如图1所示
图1 SendCookieServlet运行结果图
程序b的运行结果如图2所示
图2 ReadCookieServlet运行结果图
程序c的运行结果如图3,图4,图5所示
图3 登录成功运行结果图
图4 welcome.jsp运行结果图
图5 登录失败运行结果图
实验总结
通过对Cookie的学习,明白了Cookie是客户访问Web服务器时,服务器在客户硬盘上存放的信息,在实验中,根据参考代码及分析,能容易的理解并运行出来结果。
- 下载文档
- 收藏
- 0