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()它可以作为一个附件的形式加入到你的Web服务器里面如果你正在使用的是Apache你也可以选择Apache服务器的Java版其中包含最新的Jswdk
本文介绍一种通用的JSP环境配置方法不管你是在Windows或Linux平台也不管你原来是不是安装了Web Server该方法都通用
第一步下载必需的软件
Jsdk
Jswdk
在上面的页面需要回答一些简单的问题你可以得到Windows 和 Linux两个版本的Jsdk和Jswdk共四个文件
第二步安装Jsdk
Jsdk在Windows和Linux下的安装方法分别如下
Windows下安装双击Jdk_winexe 并选择一个安装目录就可以了
Linux下安装成为Root 用户自己选择一个目录执行tar zxvf /路径/Jdk__linuxitargz
必须将上面的安装目录准确记录下来后面的配置中要用到
第三步安装Jswdk
Windows下安装首先你必须有一个能解开Zip压缩包的软件然后将Jswdk__winzip展开并保存到一个你自己喜欢的目录
Linux下安装自己选择一个目录执行tar zxvf /路径/Jswdk__solsparctarZ
第四步JSP环境配置
Windows NT下在我的电脑上单击鼠标右键选择属性→环境然后执行以下三步
()添加变量CLASSPATH值为 安装Jdk的路径\lib\toolsJar例如c:\Jdk\lib\toolsJar
()添加JAVA_HOME变量值为 安装JDK的路径例如c:\Jdk
()修改Path变量后面加上安装JDK的路径\bin例如c:\Jdk\bin
Windows 下运行sysedit 添加和修改变量同上
Linux下如果使用Bash可以直接在命令行下输入
◆JAVA_HOME=/home/look/Jdk
◆CLASSPATH=/home/look/Jdk/lib/toolsJar
◆export CLASSPATH
◆PATH=$PATH:/home/look/Jdk/bin
为了避免每次Reboot都重新输入可以将它放到/etc/profile里面
第五步配置JSWDK
安装JSWDK的目录找到webserverxml用文本编辑器打开它你可以修改常用的一些配置当然你也可以什么也不改默认的配置就可以让JSWDK运行得很好
port NMTOKEN
这行表示JSWDK运行需要使用的端口号如果你没安装其他的Web服务器你可以将其改为或其他任意不沖突的合法端口
〈WebApplication id=examples mapping=/examples docBase=examples/〉
这行表示你映射到JSWDK端口的目录定义后你就可以使用//localhost:端口/目录来访问指定的文件了
第六步启动JSWDK
Windows下进入你安装Jswdk的目录然后运行startserverbat
Linux下进入你安装Jswdk的目录然后运行/startserver
第七步测试
读者可以使//localhost:或者来测试自己的JSWDK是否已经正确运行当你看到JSWDK的默认页面后再使用下面的脚本来测试JDK的运行情况密码会一直驻留在内存中即使进行了垃圾收集它仍会存在于空闲内存堆中直到重用该内存空间为止密码 String 在内存中驻留得越久遭到窃听的危险性就越大更糟的是如果实际内存减少则操作系统会将这个密码 String 换页调度到磁盘的交换空间因此容易遭受磁盘块窃听攻击为了将这种洩密的可能性降至最低(但不是消除)您应该将密码存储在 char 数组中并在使用后对其置零(String 是不可变的无法对其置零)以上是JSP环境配置
线程安全初探
JAVA能做的JSP就能做与ASP和PHP等脚本语言不一样JSP默认是以多线程方式执行的以多线程方式执行可大大降低对系统的资源需求提高系统的并发量及响应时间线程在程序中是独立的并发的执行路径每个线程有它自己的堆栈自己的程序计数器和自己的局部变量虽然多线程应用程序中的大多数操作都可以并行进行但也有某些操作(如更新全局标志或处理共享文件)不能并行进行如果没做好线程的同步在大并发量访问时不需要恶意用户的热心参与问题也会出现最简单的解决方案就是在相关的JSP文件中加上 <%@ page isThreadSafe=false %>指令使它以单线程方式执行这时所有客户端的请求以串行方式执行这样会严重降低系统的性能我们可以仍让JSP文件以多线程方式执行通过对函数上锁来对线程进行同步一个函数加上synchronized 关键字就获得了一个锁看下面的示例