本文介绍了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 Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器