前言
从现在开始我要把我学习Jsp的过程写出来。这些东西都是我从书本、网络上搜集整理的,我把它们据为己有后写这样一篇总结供如我一样的初学者参考。
请容许我在这里说一些和读者无关的话,对此不感兴趣的请直接跳到第一章或第二章。
我在2003年七月大学毕业,这之前学了四年计算机专业,由于基本是属于文科学校的计算机专业,学校女生少男生多学习的风气极受影响,所以可以想象我毕业时候的水平。在学校时学习的大多是枯燥的计算机理论知识,我虽知其有用,但实在不感兴趣,我感兴趣的是编码,于是学了一个学期的pascal,又编了一个学期的C(学C的时候是热情高涨的,甚至教课的老师允许或者说支持我逃课回去编码),遇指针、链表,不成,弃之,转而学C++,不半月,遇“对象”、“类”、“继承”,不成,复弃之,终不成,无奈之下,日夜游戏,不思进取,不数载,毕业。
这以后直至现在一直在一省直机关的信息中心工作,由于是“事业单位”,所以工作很闲,头半年学了两个月的html,后又学一个月的Asp,由于缺少压力,最终都放弃了。直到我们单位开始了一个项目——电子政务,我的境况有了转变。
我们找来了两家公司给我们开发软件,领导说让我跟一跟,学写东西,由于当年C给我的打击实在太大了,我已认定自己不是那块料,是不具有学程序的天赋的,所以有些不情愿,但是终于由于太闲而且又不甘心自己“一点技术含量都没有”,最终选择了学习Jsp。我找给我们开发软件的一个程序员朋友,向他要来了Tomcat、jsdk和盗版的Oracle,编写平台就先暂时用我比较熟悉的Dreamweaver,英文也差,就没用Jbuilder、Jcreator什么的,至于资料,没有,只有网络,我就这样开始了我的Jsp之旅。
我没想到的是当年学的那一点点C、html、Asp让我不怎么费力的就走进(近)了Jsp的大门,这速度至少出乎了我的意料。
值得说明的一点是:我学Jsp完全是从实例入手,这之前我的相关理论知识基本为零,所以我在对代码的理解上(很大程度表现在注释上)是使用自己的“土语”的,而不是“术语”。我的原则是这篇文字能够让和我一样的初学者能够看懂。
对于一个毫无基础的人来说,你对他说“类”、“对象”、“接口”、“继承”这些名词,他是无法理解的,因为它们太抽象,所以我必须通过实例和不怎么规范的语言使它们具体化一些。
由于我的水平实在有限,可能会出现很多错误,尤其在对某些“代码”的理解上,但是我勇于拿出板砖,希望有热心的高手使劲扔玉^_^这是我的邮箱:windowsmx@sohu.com。
最后,感谢互联网及在其上分享自己经验的程序员、我的单位的领导、同事、程序员朋友孙罡、大学的朋友彭涛等。
第一章 配置服务器环境
Jsp全称是Java Server Pages(而不是JavaScript的缩写,JavaScript是使用Java语言的一种脚本语言),用我的话说,它就是一堆使用于网页浏览器上的代码(或者说代码规范),从这个角度讲和Asp类似。它并不是一种编程语言,但是它需要一种编程语言来编写其中的程序,正如Asp使用VB作为编程语言一样,Jsp使用的是Java语言。
安装软件:
既然Jsp使用Java,那么我们的服务器操作系统里当然要有相应的Java环境,否则我们怎么使用Java提供的“库函数”呢?JDK就是这个东西,我们可以从SUN公司的网站上下载它,先把它安装到操作系统(我的操作系统是Windows XP Professional SP2)中,我的安装目录是:D:\j2sdk1.4.2_07,装完之后我们还需要进行配置,这一步在下面再说。
我们还需要安装Web服务器,我们初学者一般可以选用Tomcat作为Jsp的Web服务器。Web服务器是什么东西?假如你对Asp有一点了解的话,你就会知道IIS这东西——IIS就是Asp的Web服务器,那么Tomcat对于Jsp来说,它就相当于Asp的IIS。我使用的是Tomcat5.0,你也可以使用更高的版本,注意在安装它之前你得先安装JDK,我的Tomcat的安装目录是:D:\Tomcat 5.0。
配置:
右键“我的电脑”-“属性”-“高级”-“环境变量”,这里面有用户变量和系统变量之分,说实话,用户变量主要起什么作用我不是很清楚,但是系统变量一定是很重要的,通过“新建”或“编辑之后”,我的相关的用户变量是这样的:
classpath——.;d:\j2sdk1.4.2_07\lib\tools.jar;d:\j2sdk1.4.2_07\lib\dt.jar;
java_home——d:\j2sdk1.4.2_07
path——d:\j2sdk1.4.2_07\bin;d:\j2sdk1.4.2_07
我的相关的系统变量是:
CATALINA_HOME——d:\Tomcat 5.0
classpath——.;d:\j2sdk1.4.2_07\lib\tools.jar;d:\j2sdk1.4.2_07\lib\dt.jar;
JAVA_HOME——d:\j2sdk1.4.2_07
Path——d:\j2sdk1.4.2_07\bin;d:\j2sdk1.4.2_07;(把这句添加进去,而不是最终的值)
TOMCAT_HOME——d:\Tomcat 5.0
Tomcat在安装完之后在Windows系统的“服务”中会多一项“Apache Tomcat”的服务,它是自动的,你可以给它改成手动,这样在不使用的时候可以节省一些系统资源了。既然改成手动了,那么怎么启动它呢?找这两个文件:D:\Tomcat 5.0\bin\startup.bat和D:\Tomcat 5.0\bin\shutdown.bat,前一个就是启动Tomcat的批处理文件了,而后一个就是关闭的。
你在安装Tomcat的时候可能会发现安装过程中有一个地方可以改端口号,默认是“8080”,而当你在调试程序时你就要注意这个端口号了。在上面的配置都完成以后,你可以看看是否成功了:先开启Tomcat服务器,然后在网页地址栏里输入:http://localhost:8080/(客户端和服务器是同一台机器),安装成功的话你会看见Tomcat的欢迎界面。你也可以使用你的IP或是机器名,比如我的IP是172.16.20.30,机器名是ringz,那么输入以下两种形式都是可行的:http://172.16.20.30:8080/,http://ringz:8080/。
第二章 轻度接触server.xml
<%@ page contentType="text/html; charset=gb2312" language="java"errorPage="" %>
<%
out.print("日本人应该被彻底消灭");
%>
这个文件是在页面输出一句话,你甚至可以用记事本来编写,但主要的问题是,这个文件(比如叫test.jsp)它放在哪里。Tomcat的默认目录好象是D:\Tomcat 5.0\webapps\jsp-examples,早期4.1版本目录是examples,把这个文件放到jsp-examples下,开启Tomcat服务器,在地址栏输入:http://ringz:8080/jsp-examples/test.jsp。
现在要说的问题是:我不想用8080这个端口,直接用http://ringz/jsp-examples/test.jsp多好啊。这首先要取决你的80端口是否被占用,一般来说你的机器里没有安装IIS或者停掉IIS服务,80端口就可以使用。具体的修改方法如下:打开这个文件——D:\Tomcat 5.0\conf\server.xml,你会找到这样一段代码:
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000"
disableUploadTimeout="true" />
把port="8080"改成port="80",保存文件,重启Tomcat服务器,如果能够启动,说明可以使用80端口了;而要是Tomcat启动窗口一闪即关掉,就说明80端口已经被占用了(这个判断的前提是该server.xml文件没有错误,如果有其他错误的话,比如少一个“/>”,也会这样)。按照此方法你可以改成其他闲置的端口,比如说,给我们做软件的公司在测试的时候使用的是7988端口。除了80端口,其他端口都要在地址栏注明,80之所以不用是因为它是http协议的默认端口。
接下来的问题是:我不想把写好的.jsp文件放在D:\Tomcat 5.0\webapps\jsp-examples下怎么办?这同样需要修改server.xml文件:假如你的.jsp文件都放在e:\MyJsp下,则在该文件的<Host></Host>之间加入这样一段代码:<Context path="/MyJsp" docBase="e:\MyJsp" debug="0" reloadable="true" crossContext="true"/>(注意要和文件名的大小写要一致)。这样你可以在地址栏输入http://ringz/MyJsp/test.jsp(同样要注意大小写要一致)来运行这个文件。如果改成:<Context path="" docBase="e:\MyJsp" debug="0" reloadable="true" crossContext="true"/>,这样在地址栏里输入http://ringz/test.jsp就行了。
你感兴趣的话可以看看只输入http://ringz后页面是什么样的。
现在你可能会有这个想法:我的一个系统(或者叫一个站点)有一个固定的入口文件,比如叫login.htm,我希望只在地址栏输入http://ringz就可以打开这个文件,这怎么办?这个我们可以通过修改和server.xml处于同目录下的web.xml文件来实现:一般在这个文件的最下有这样一段代码:
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
你只需要将其中一个改成<welcome-file>login.htm</welcome-file>就行了。