Java Servlet及Cookie的使用
程序员文章站
2023-12-16 22:22:52
本文介绍了java servlet编程所需的软件及环境配置。只要你有一台安装windows 95/98了的pc机,便可以按照...
本文介绍了java servlet编程所需的软件及环境配置。只要你有一台安装windows 95/98了的pc机,便可以按照本文的步骤开发servlet程序了。本文同时给出了通过java servlet向用户的硬盘写入和读取cookie的方法及例程。通过它可以实现网上常见的个性化网页、网上购物篮、密码验证等。
java servlet是运行于web服务器上的java代码,它可以接受用户请求,进行相应的处理,并向用户提供反馈。其作用类似于cgi程序,可以实现网页中很多交互式效果,但比cgi程序效率更高。cookies是用户访问web服务器时由web服务器写入用户计算机特定目录的一小段信息, java servlet中提供了cookie类,可以对cookie进行操作。在特定时候将cookie写入用户计算机,在需要时可再取出来使用。
1.软件下载
pc机,安装windows 95/98,具有ip地址(如果没有可以随便配一个)。开发软件有两个:jdk1.3和jswdk1.0.1。
到http://java.sun.com,点击"products & apis”链接,可以点击下载"javatm 2 sdk, standard edition, v 1.3”。下载后的文件安装到你的计算机上。
jswdk1.0.1只有763,414 bytes,可从在http://java.sun.com/products/jsp/download.html下载。下载下来的jswdk1_0_1-win.zip用winzip软件解压缩至某个目录,如:d:app,该目录下将自动建立一个子目录:jswdk-1.0.1。这时jswdk 1.0.1便已经安装在d:appjswdk-1.0.1目录下了。
2.启动jswdk 1.0.1
打开一个dos窗口,如下图点击窗口左上角dos图标,选择属性菜单,在接着出现的窗口中点击"内存”,在"初始环境”后的下拉菜单中将"自动”改为2816,点击"exit”按钮退出窗口,再重新进入dos窗口。该设置只需要做一次。
在该dos窗口中运行如下dos命令设置好环境变量:
set classpath=c:jdk1.3bin;.
set path=c:jdk1.3bin;c:windows;c:windowscommand
如果你的jdk 1.3和windows操作系统安装在其他目录,dos命令中的目录名称应作相应修改。
然后在该dos窗口中用cd命令进入jswdk 1.0.1安装目录(如d:appjswdk-1.0.1)运行startserver.bat即可。
注意:
对于jdk1.3,即本文所述的环境,需修改startserver.bat,将源文件中的
start java com.sun.web.shell.startup %1 %2 %3 %4 %5 %6 %7 %8 %9
rem java com.sun.web.shell.startup %1 %2 %3 %4 %5 %6 %7 %8 %9
改为:
rem start java com.sun.web.shell.startup %1 %2 %3 %4 %5 %6 %7 %8 %9
java com.sun.web.shell.startup %1 %2 %3 %4 %5 %6 %7 %8 %9
若使用的是老版本的jdk1.2,不需要修改startserver.bat,执行后会出现另一个dos窗口。
运行后显示一串字符串,最后显示endpoint created: localhost/127.0.0.1:8080。表明正常启动完毕。但它不支持数据库中文字段和中文值的查询。
打开一个浏览器,输入: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生存期间该用户的访问辞书。
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class yy extends httpservlet
{ cookie x[];
public void service(httpservletrequest rq, httpservletresponse rp)
throws servletexception,ioexception
{ int have=0;
cookie c;
java servlet是运行于web服务器上的java代码,它可以接受用户请求,进行相应的处理,并向用户提供反馈。其作用类似于cgi程序,可以实现网页中很多交互式效果,但比cgi程序效率更高。cookies是用户访问web服务器时由web服务器写入用户计算机特定目录的一小段信息, java servlet中提供了cookie类,可以对cookie进行操作。在特定时候将cookie写入用户计算机,在需要时可再取出来使用。
1.软件下载
pc机,安装windows 95/98,具有ip地址(如果没有可以随便配一个)。开发软件有两个:jdk1.3和jswdk1.0.1。
到http://java.sun.com,点击"products & apis”链接,可以点击下载"javatm 2 sdk, standard edition, v 1.3”。下载后的文件安装到你的计算机上。
jswdk1.0.1只有763,414 bytes,可从在http://java.sun.com/products/jsp/download.html下载。下载下来的jswdk1_0_1-win.zip用winzip软件解压缩至某个目录,如:d:app,该目录下将自动建立一个子目录:jswdk-1.0.1。这时jswdk 1.0.1便已经安装在d:appjswdk-1.0.1目录下了。
2.启动jswdk 1.0.1
打开一个dos窗口,如下图点击窗口左上角dos图标,选择属性菜单,在接着出现的窗口中点击"内存”,在"初始环境”后的下拉菜单中将"自动”改为2816,点击"exit”按钮退出窗口,再重新进入dos窗口。该设置只需要做一次。
在该dos窗口中运行如下dos命令设置好环境变量:
set classpath=c:jdk1.3bin;.
set path=c:jdk1.3bin;c:windows;c:windowscommand
如果你的jdk 1.3和windows操作系统安装在其他目录,dos命令中的目录名称应作相应修改。
然后在该dos窗口中用cd命令进入jswdk 1.0.1安装目录(如d:appjswdk-1.0.1)运行startserver.bat即可。
注意:
对于jdk1.3,即本文所述的环境,需修改startserver.bat,将源文件中的
start java com.sun.web.shell.startup %1 %2 %3 %4 %5 %6 %7 %8 %9
rem java com.sun.web.shell.startup %1 %2 %3 %4 %5 %6 %7 %8 %9
改为:
rem start java com.sun.web.shell.startup %1 %2 %3 %4 %5 %6 %7 %8 %9
java com.sun.web.shell.startup %1 %2 %3 %4 %5 %6 %7 %8 %9
若使用的是老版本的jdk1.2,不需要修改startserver.bat,执行后会出现另一个dos窗口。
运行后显示一串字符串,最后显示endpoint created: localhost/127.0.0.1:8080。表明正常启动完毕。但它不支持数据库中文字段和中文值的查询。
打开一个浏览器,输入: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生存期间该用户的访问辞书。
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class yy extends httpservlet
{ cookie x[];
public void service(httpservletrequest rq, httpservletresponse rp)
throws servletexception,ioexception
{ int have=0;
cookie c;