JSP(Java Server Pages)基于Java技术,并在传统的网页HTML文件中加入Java代码片段(Scriptlet)和JSP标记(tag),从而构成了JSP网页。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果。
JSP技术是完全与平台无关的设计,包括它的动态网页与底层的Server元件设计。正因为如此,你可以在Windows环境下调试程序,成功后把程序上载到你的Linux服务器去运行,另外由于是先编译后执行,所以执行速度远远快于以往的服务器端语言。
JSP环境配置可以有很多途径,如果你已经有了一个可以使用的Web Server,比如Netscape的Enterprise Server和Fasttrack Server、微软的Internet Information Server(IIS)和Personal Web Server(PWS)和Apache,比较典型的方法是使用Jrun(http://www.allaire.com/products/Jrun/),它可以作为一个附件的形式加入到你的Web服务器里面。如果你正在使用的是Apache,你也可以选择Apache服务器的Java版,其中包含最新的Jswdk。
本文介绍一种通用的JSP环境配置方法,不管你是在Windows或Linux平台,也不管你原来是不是安装了Web Server,该方法都通用。
第一步:下载必需的软件
1.Jsdk1.2.2
2.Jswdk1.0.1
在上面的页面,需要回答一些简单的问题,你可以得到Windows 和 Linux两个版本的Jsdk和Jswdk,共四个文件。
第二步:安装Jsdk
Jsdk在Windows和Linux下的安装方法分别如下:
1.Windows下安装,双击Jdk-1.2.2_005-win.exe 并选择一个安装目录就可以了。
2.Linux下安装,成为Root 用户,自己选择一个目录,执行tar zxvf /路径/Jdk1_2_2-linux-i386.tar.gz。
必须将上面的安装目录准确记录下来,后面的配置中要用到。
第三步:安装Jswdk
1.Windows下安装,首先你必须有一个能解开Zip压缩包的软件,然后将Jswdk1_0_1-win.zip展开,并保存到一个你自己喜欢的目录。
2.Linux下安装,自己选择一个目录,执行tar zxvf /路径/Jswdk1_0_1-solsparc.tar.Z。
第四步:JSP环境配置
1.Windows NT下,在“我的电脑”上单击鼠标右键,选择“属性→环境”,然后执行以下三步:
(1)添加变量CLASSPATH,值为 安装Jdk的路径/lib/tools.Jar,例如c:/Jdk1.2.2/lib/tools.Jar。
(2)添加JAVA_HOME变量,值为 安装JDK的路径,例如c:/Jdk1.2.2。
(3)修改Path变量,后面加上安装JDK的路径/bin,例如c:/Jdk1.2.2/bin。
2.Windows 98下,运行sysedit, 添加和修改变量同上。
3.Linux下,如果使用Bash,可以直接在命令行下输入:
◆JAVA_HOME="/home/look/Jdk1.2.2"
◆CLASSPATH="/home/look/Jdk1.2.2/lib/tools.Jar"
◆export CLASSPATH
◆PATH="$PATH:/home/look/Jdk1.2.2/bin"
为了避免每次Reboot都重新输入,可以将它放到/etc/profile里面。
第五步:配置JSWDK
安装JSWDK的目录,找到webserver.xml,用文本编辑器打开它,你可以修改常用的一些配置,当然,你也可以什么也不改,默认的配置就可以让JSWDK运行得很好。
1.port NMTOKEN "8080"
这行表示JSWDK运行需要使用的端口号,如果你没安装其他的Web服务器,你可以将其改为80或其他任意不冲突的合法端口。
2.〈WebApplication id="examples" mapping="/examples" docBase="examples"/〉
这行表示你映射到JSWDK端口的目录。定义后,你就可以使用“http://localhost:端口/目录”来访问指定的文件了。
第六步:启动JSWDK
1.Windows下,进入你安装Jswdk的目录,然后运行startserver.bat。
2.Linux下,进入你安装Jswdk的目录,然后运行./startserver。
第七步:测试
读者可以使用http://localhost:8080或者http://your.hostname:8080来测试自己的JSWDK是否已经正确运行。当你看到JSWDK的默认页面后,再使用下面的脚本来测试JDK的运行情况。密码会一直驻留在内存中。即使进行了垃圾收集,它仍会存在于空闲内存堆中,直到重用该内存空间为止。密码 String 在内存中驻留得越久,遭到窃听的危险性就越大。更糟的是,如果实际内存减少,则操作系统会将这个密码 String 换页调度到磁盘的交换空间,因此容易遭受磁盘块窃听攻击。为了将这种泄密的可能性降至最低(但不是消除),您应该将密码存储在 char 数组中,并在使用后对其置零(String 是不可变的,无法对其置零)。以上是JSP环境配置
线程安全初探
“JAVA能做的,JSP就能做”。与ASP和PHP等脚本语言不一样,JSP默认是以多线程方式执行的。以多线程方式执行可大大降低对系统的资源需求,提高系统的并发量及响应时间。线程在程序中是独立的、并发的执行路径,每个线程有它自己的堆栈、自己的程序计数器和自己的局部变量。虽然多线程应用程序中的大多数操作都可以并行进行,但也有某些操作(如更新全局标志或处理共享文件)不能并行进行。如果没做好线程的同步,在大并发量访问时,不需要恶意用户的“热心参与”,问题也会出现。最简单的解决方案就是在相关的JSP文件中加上: <%@ page isThreadSafe="false" %>指令,使它以单线程方式执行,这时,所有客户端的请求以串行方式执行。这样会严重降低系统的性能。我们可以仍让JSP文件以多线程方式执行,通过对函数上锁来对线程进行同步。一个函数加上synchronized 关键字就获得了一个锁。看下面的示例: