Java Web servlet与cookie

先来看看效果图:

点击submit后:

点击查看Cookies:

在C:\Documents and Settings\Administrator\Cookies目录下面会有一个   hongten@webproject_cookie[2].txt 的文件;

这就是cookie的文件;

再来看看代码是怎样实现的:

cookiesInput.html

代码:

<html> <head> <title>cookie input page</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> </head> <body> 请输入用户名(英文或者数字)<br> <form name="form1" action="SetCookiesServlet"  method="post" > <table border="0"> <tr><td>用户名:</td> <td><input type="text" name="username"> </td></tr> <tr><td colspan="2" align="center"> <input name="submit" value="submit" type="submit"> </td></tr> </table> </form> </body> </html>

SetCookiesServlet.java

代码:

/**  *  */ package webbook.chapter6;

import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Date;

import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

import webbook.util.StringUtil;

/**  *  * @author XHW  *  * @date 2011-7-22  *  */ public class SetCookiesServlet extends HttpServlet {

 private static final long serialVersionUID = 6849802930688070121L;

 public void doGet(HttpServletRequest request, HttpServletResponse response)    throws ServletException, IOException {   doPost(request, response);  }

 public void doPost(HttpServletRequest request, HttpServletResponse response)    throws ServletException, IOException {   String output = null;   String username = request.getParameter("username");   if (!StringUtil.validateNull(username)) { Cookie cookie1 = new Cookie("username", StringUtil      .filterHtml(username));    // cookie的有效期为1个月    cookie1.setMaxAge(24 * 60 * 60 * 30);    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  Cookie cookie2 = new Cookie("lastTime", sdf.format(new Date()));    cookie2.setMaxAge(24 * 60 * 60 * 30);    response.addCookie(cookie1);    response.addCookie(cookie2);    output = "本次登录时间与用户名已经写到Cookie中。<br><a href=\"/webproject_cookie/GetCookiesServlet\">查看Cookies</a>";   } else {    output = "用户名为空,请重新输入。<br><a herf=\"/webproject_cookie/cookieInput.htm\">输入用户名</a>";   }

  response.setContentType("text/html;charset=UTF-8");   PrintWriter out = response.getWriter();   out.println("<html>");   out.println("<head><title>set cookies </title></head>");   out.println("<body>");   out.println("<h2>" + output + "</h2>");   out.println("</body>");   out.println("</html>");   out.flush();   out.close();  } }

GetCookiesServlet.java

代码:

/**  *  */ package webbook.chapter6;

import java.io.IOException; import java.io.PrintWriter;

import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;

/**  *  * @author XHW  *  * @date 2011-7-22  *  */ public class GetCookiesServlet extends HttpServlet {

 private static final long serialVersionUID = -156960358689563625L;

 public void doGet(HttpServletRequest request, HttpServletResponse response)    throws ServletException, IOException {   doPost(request, response);  }

 public void doPost(HttpServletRequest request, HttpServletResponse response)    throws ServletException, IOException {   response.setContentType("text/html;charset=UTF-8");   PrintWriter out = response.getWriter();   out.println("<html>");   out.println("<head><title>display login infomation</title></head>");   out.println("<body>");   out.println("<h2>从Cookie中获得上次登录时间与用户名</h2>");

//获取所有的cookie值

Cookie[] cookies = request.getCookies();   Cookie cookie = null;   for (int i = 0; i < cookies.length; i++) {    cookie = cookies[i];    if (cookie.getName().equals("username")) {     out.println("用户名:" + cookie.getValue());     out.println("<br>");    }   if (cookie.getName().equals("lastTime")) {     out.println("上次登录时间:" + cookie.getValue());     out.println("<br>");    }   }   out.println("</body>");   out.println("</html>");   out.flush();   out.close();  } }

cookie是web服务器通过浏览器保存在www用户端硬盘上的一个文本文件,这个文件中包含了文本信息

文本信息的内容是以“名/值”对(key/value)的形式进行储存的

可以让web开发者通过程序读写这个文本文件

在Windows XP中保存Cookie的目录是:C:\Documents and Settings\用户名\Cookies

Cookie的作用:

  解决浏览器用户与web服务器之间无状态通信

使用cookie的时候注意的事项:

  cookie的大小和数量是有限制的

  cookie在个人硬盘上所保存的文本信息是以明文格式进行保存的,没有任何的加密措施

  浏览器可以设定不使用cookie 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

Go 标准库 http.FileServer 实现静态文件服务

访问 http://127.0.0.1:8080,即可看到类似 Nginx 中 autoindex 目录浏览功能。

17210
来自专栏LIN_ZONE

thinkphp5中使用PHPExcel(转载)

你会发现项目的目录中在vendor的目录下多了一个文件夹(phpexcel),这个文件夹中的东西就是要使用的php中的Excel表格操作

14420
来自专栏海说

开发一个Servlet示例

Servlet响应请求步骤: Servlet是一个基于Java技术的Web组件,运行在服务器端,用户利用Servlet可以很轻松地扩展Web服务器的功能,使其满...

19300
来自专栏大数据-Hadoop、Spark

Spark local mode 报Input path does not exist: hdfs://

写了个spark任务, cd C:\Users\Administrator\IdeaProjects\SparkSQLProject> mvn clean pa...

631100
来自专栏pydata

hadoop 2.4.1 上安装spark 1.1.0

进入到http://localhost:port访问Ipython Notebook

13220
来自专栏10km的专栏

Windows下MSYS2中编译OpenBLAS过程记录

OpenBLAS(https://github.com/xianyi/OpenBLAS)目前已经提供了CMakeLists.txt,在Windows下可以通过c...

1.6K110
来自专栏别先生

Exception in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Wi

1、window操作系统的eclipse运行wordcount程序出现如下所示的错误: Exception in thread "main" java.lang...

55090
来自专栏恰童鞋骚年

.NET Core微服务之基于Ocelot+IdentityServer实现统一验证与授权

  这里,假设我们有两个客户端(一个Web网站,一个移动App),他们要使用系统,需要通过API网关(这里API网关始终作为客户端的统一入口)先向Identit...

20020
来自专栏数据库新发现

Statspack之十四-"log file sync" 等待事件

http://www.eygle.com/statspack/statspack14-LogFileSync.htm 当一个用户提交(commits)或者回滚...

12810
来自专栏java学习

servlet实现文件下载功能

第一步:首先在你的项目新建一个文件夹存放一些可以下载的文件(本教程一一张图片为例子) ? ---- 第二步:写servlet(DownloadServlet....

34660

扫码关注云+社区

领取腾讯云代金券