Java Servlet及Cookie的使用

2019-05-27 10:26:32王旭


   打开一个浏览器,输入:http://你的机器IP地址:8080,这时浏览器中显示出缺省的页面,在该页面中可查看Servlet例子。
   Java Servlet中提供了Cookie类,其构造器有两个参数,分别代表Cookie的名字和值。Cookie类中提供了各种方法设置Cookie的属性,如通过setMaxAge( )方法可以设置Cookie的生存时间。若生存时间为负值,代表浏览器关闭Cookie即消失。生存时间为0,代表删除Cookie,生存时间为正数,代表Cookie存在多少秒。

   同时Servlet中的HttpServletResponse类提供了addCookie()方法可以将创建好的Cookie写入用户计算机。

   如下面的代码可向用户的计算机写入两个Cookie,一个名称为my1,值为hi1,另一个名称为my2,值为hi2

   import javax.servlet.*;

   import javax.servlet.http.*;

   import java.io.*;

   public class xx extends HttpServlet

   {

   public void service(HttpServletRequest rq, HttpServletResponse rp)

   throws ServletException,IOException

   { Cookie c;

   c=new Cookie("my1","hi1");

   c.setMaxAge(100*60);

   rp.addCookie(c);

   c=new Cookie("my2","hi2");

   c.setMaxAge(-1);

   rp.addCookie(c);

   }

   }

   该程序中,使用Cookie c=new Cookie("my1","hi1");创建了一个Cookie,它实际上是两个配对的字符串。第一个字符串代表Cookie的名字,第二个字符串代表Cookie的值。然后使用rp.addCookie(c);将其写入用户的计算机中。Cookie my1生存时间为100*60秒即100分钟,而my2则在关闭浏览器时自动消失。

   在前面的DOS窗口中输入命令:

   set path=c:jdk1.3bin;c:windows;c:windowscommand

   set CLASSPATH=c:jdk1.3bin;d:appjswdk-1.0.1libservlet.jar

   以设置好环境变量。

   javac xx.java编译Java程序

   copy *.class D:appjswdk-1.0.1examplesWEB-INFservlets

   将编译后的程序拷贝到Java Servlet运行目录。

   * 若使用老版本的JDK1.2,为了运行该Java Servlet程序,还需要修改一个文件:

   D:appjswdk-1.0.1examplesWEB-INFservlets.properties

   用文本编辑器打开该文件,在其最后加上几行:

   xx.code=xx

   xx.initparams=foo

   在浏览器中输入http://机器的IP地址:8080/examples/servlet/xx 便可以向用户的计算机写入Cookie了。

通过HttpServletRequest类的getCookies( )方法可以从相应用户读取Cookie列表,放在Cookie类型的数组中。通过数组中各个Cookie的getName()和getValue()方法可以获取各个Cookie的名称和值。

   下面的例子可以打印出由Servlet所在服务器写入用户机器上的Cookie名称和值的列表。若有名称为my1的Cookie,则将其值加上一个字符x。它类似一个计数器,可以简单地统计在Cookie生存期间该用户的访问辞书。