一个Jsp初学者的学习过程(一)8-iT|7
[转贴自]TheUnforgiven的专栏(
©中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 6k4.n>
前言©中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 )
©中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 QK
从现在开始我要把我学习Jsp的过程写出来。这些东西都是我从书本、网络上搜集整理的,我把它们据为己有后写这样一篇总结供如我一样的初学者参考。&
©中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 }*F/&.
请容许我在这里说一些和读者无关的话,对此不感兴趣的请直接跳到第一章或第二章。%
我在2003年七月大学毕业,这之前学了四年计算机专业,由于基本是属于文科学校的计算机专业,学校女生多男生少学习的风气极受影响,所以可以想象我毕业时候的水平。在学校时学习的大多是枯燥的计算机理论知识,我虽知其有用,但实在不感兴趣,我感兴趣的是编码,于是学了一个学期的pascal,又编了一个学期的C(学C的时候是热情高涨的,甚至教课的老师允许或者说支持我逃课回去编码),遇指针、链表,不成,弃之,转而学C++,不半月,遇“对象”、“类”、“继承”,不成,复弃之,终不成,无奈之下,日夜游戏,不思进取,不数载,毕业。G#8p4~
这以后直至现在一直在一省直机关的信息中心工作,由于是“事业单位”,所以工作很闲,头半年学了两个月的html,后又学一个月的Asp,由于缺少压力,最终都放弃了。直到我们单位开始了一个项目——电子政务,我的境况有了转变。B:
我们找来了两家公司给我们开发软件,领导说让我跟一跟,学写东西,由于当年C给我的打击实在太大了,我已认定自己不是那块料,是不具有学程序的天赋的,所以有些不情愿,但是终于由于太闲而且又不甘心自己“一点技术含量都没有”,最终选择了学习Jsp。我找给我们开发软件的一个程序员朋友,向他要来了Tomcat、jsdk和盗版的Oracle,编写平台就先暂时用我比较熟悉的Dreamweaver,英文也差,就没用Jbuilder、Jcreator什么的,至于资料,没有,只有网络,我就这样开始了我的Jsp之旅。uvQl
我没想到的是当年学的那一点点C、html、Asp让我不怎么费力的就走进(近)了Jsp的大门,这速度至少出乎了我的意料。E7NB_{
©中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 x@s
值得说明的一点是:我学Jsp完全是从实例入手,这之前我的相关理论知识基本为零,所以我在对代码的理解上(很大程度表现在注释上)是使用自己的“土语”的,而不是“术语”。我的原则是这篇文字能够让和我一样的初学者能够看懂。%a,[
对于一个毫无基础的人来说,你对他说“类”、“对象”、“接口”、“继承”这些名词,他是无法理解的,因为它们太抽象,所以我必须通过实例和不怎么规范的语言使它们具体化一些。hv
由于我的水平实在有限,可能会出现很多错误,尤其在对某些“代码”的理解上,但是我勇于拿出板砖,希望有热心的高手使劲扔玉^_^这是我的邮箱:windowsmx@sohu.com。wN
最后,感谢互联网及在其上分享自己经验的程序员、我的单位的领导、同事、程序员朋友孙罡、大学的朋友彭涛等。n`%i
©中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 +)]
©中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 o'J&2W
©中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 `HR
第一章 配置服务器环境(LG}Y
©中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 ;v!|
Jsp全称是Java Server Pages(而不是javascript的缩写,javascript是使用Java语言的一种脚本语言),用我的话说,它就是一堆使用于网页浏览器上的代码(或者说代码规范),从这个角度讲和Asp类似。它并不是一种编程语言,但是它需要一种编程语言来编写其中的程序,正如Asp使用VB作为编程语言一样,Jsp使用的是Java语言。swhUd
©中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 _
安装软件:Ydp
既然Jsp使用Java,那么我们的服务器操作系统里当然要有相应的Java环境,否则我们怎么使用Java提供的“库函数”呢?JDK就是这个东西,我们可以从SUN公司的网站上下载它,先把它安装到操作系统(我的操作系统是Windows XP Professional SP2)中,我的安装目录是:D:/j2sdk1.4.2_07,装完之后我们还需要进行配置,这一步在下面再说。k'},WM
我们还需要安装Web服务器,我们初学者一般可以选用Tomcat作为Jsp的Web服务器。Web服务器是什么东西?假如你对Asp有一点了解的话,你就会知道IIS这东西——IIS就是Asp的Web服务器,那么Tomcat对于Jsp来说,它就相当于Asp的IIS。我使用的是Tomcat5.0,你也可以使用更高的版本,注意在安装它之前你得先安装JDK,我的Tomcat的安装目录是:D:/Tomcat 5.0。UA
©中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 u
配置:{P
右键“我的电脑”-“属性”-“高级”-“环境变量”,这里面有用户变量和系统变量之分,说实话,用户变量主要起什么作用我不是很清楚,但是系统变量一定是很重要的,通过“新建”或“编辑之后”,我的相关的用户变量是这样的:EE
classpath——.;d:/j2sdk1.4.2_07/lib/tools.jar;d:/j2sdk1.4.2_07/lib/dt.jar;4?!;w
java_home——d:/j2sdk1.4.2_073#>
path——d:/j2sdk1.4.2_07/bin;d:/j2sdk1.4.2_07mc
我的相关的系统变量是:.3V=~
CATALINA_HOME——d:/Tomcat 5.0+J
classpath——.;d:/j2sdk1.4.2_07/lib/tools.jar;d:/j2sdk1.4.2_07/lib/dt.jar;7GIm
JAVA_HOME——d:/j2sdk1.4.2_07?n67
Path——d:/j2sdk1.4.2_07/bin;d:/j2sdk1.4.2_07;(把这句添加进去,而不是最终的值)}p?Jb
TOMCAT_HOME——d:/Tomcat 5.00JMQ
Tomcat在安装完之后在Windows系统的“服务”中会多一项“Apache Tomcat”的服务,它是自动的,你可以给它改成手动,这样在不使用的时候可以节省一些系统资源了。既然改成手动了,那么怎么启动它呢?找这两个文件:D:/Tomcat 5.0/bin/startup.bat和D:/Tomcat 5.0/bin/shutdown.bat,前一个就是启动Tomcat的批处理文件了,而后一个就是关闭的。T
©中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 mMT?
你在安装Tomcat的时候可能会发现安装过程中有一个地方可以改端口号,默认是“8080”,而当你在调试程序时你就要注意这个端口号了。在上面的配置都完成以后,你可以看看是否成功了:先开启Tomcat服务器,然后在网页地址栏里输入:http://localhost:8080/(客户端和服务器是同一台机器),安装成功的话你会看见Tomcat的欢迎界面。你也可以使用你的IP或是机器名,比如我的IP是172.16.20.30,机器名是ringz,那么输入以下两种形式都是可行的:http://172.16.20.30:8080/,http://ringz:8080/。H?#0
一个Jsp初学者的学习过程(二)yi/~S
TheUnforgiven/.y
©中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 MJ
第二章 轻度接触server.xmld$
©中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 +,1
现在开始编写我们的第一个.jsp文件了,代码如下:H7L
---------------------------------------------------------------------------------- l
<%@ page contentType="text/html;
charset=gb2312"
language="java"errorPage=""
%>?<5q1
<%2n8'
out.print("日本人应该被彻底消灭"
;h
%>PV3C
----------------------------------------------------------------------------------b R
这个文件是在页面输出一句话,你甚至可以用记事本来编写,但主要的问题是,这个文件(比如叫test.jsp)它放在哪里。Tomcat的默认目录好象是D:/Tomcat 5.0/webapps/jsp-examples,早期4.1版本目录是examples,把这个文件放到jsp-examples下,开启Tomcat服务器,在地址栏输入:http://ringz:8080/jsp-examples/test.jsp。pa;"xj
&copy;中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 q'c^b:
现在要说的问题是:我不想用8080这个端口,直接用http://ringz/jsp-examples/test.jsp多好啊。这首先要取决你的80端口是否被占用,一般来说你的机器里没有安装IIS或者停掉IIS服务,80端口就可以使用。具体的修改方法如下:打开这个文件——D:/Tomcat 5.0/conf/server.xml,你会找到这样一段代码:L|U8
<Connector port="8080"
?
maxThreads="150"
minSpareThreads="25"
maxSpareThreads="75"o)z)aG
enableLookups="false"
redirectPort="8443"
acceptCount="100"L~
debug="0"
connectionTimeout="20000"
k8UL
disableUploadTimeout="true"
/>`g$)b
把port="8080"改成port="80",保存文件,重启Tomcat服务器,如果能够启动,说明可以使用80端口了;而要是Tomcat启动窗口一闪即关掉,就说明80端口已经被占用了(这个判断的前提是该server.xml文件没有错误,如果有其他错误的话,比如少一个“/>”,也会这样)。按照此方法你可以改成其他闲置的端口,比如说,给我们做软件的公司在测试的时候使用的是7988端口。除了80端口,其他端口都要在地址栏注明,80之所以不用是因为它是http协议的默认端口。]S=
接下来的问题是:我不想把写好的.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就行了。&@QF
你感兴趣的话可以看看只输入http://ringz后页面是什么样的。3E
现在你可能会有这个想法:我的一个系统(或者叫一个站点)有一个固定的入口文件,比如叫login.htm,我希望只在地址栏输入http://ringz就可以打开这个文件,这怎么办?这个我们可以通过修改和server.xml处于同目录下的web.xml文件来实现:一般在这个文件的最下有这样一段代码:_U>:}
<welcome-file-list>a.mfp?
<welcome-file>index.html</welcome-file>6:"
<welcome-file>index.htm</welcome-file>F$y
<welcome-file>index.jsp</welcome-file>NM*TY
</welcome-file-list>T}Cac#
你只需要将其中一个改成<welcome-file>login.htm</welcome-file>就行了。对于这个web.xml文件我们以后还会提到,就先不多说了。2|
&copy;中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 %",O$
记住一点:server.xml或者web.xml文件在修改后一定要重启Tomcat服务器才行。(
一个Jsp初学者的学习过程(三)Wy_w+
TheUnforgiveny(^Wk
&copy;中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛
第三章 连接数据库0Qn
&copy;中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 nC
在最初几天我写了几个页面之后,我决定要做一个留言板之类的东西:有登录验证、注册、发表文章、浏览文章、管理文章、管理用户等这些功能。首先的登录验证这个不难,但是有个问题:需要连接数据库了。于是我开始查找资料,并安装了Oracle数据库(对于Oracle数据库的一些最基本的知识我就不在这里说明了,但是需要注意的两点是:一、安装完成后就不要再改变你的机器名,一旦改了再改回来,数据库也用不了;二、安装完后不要使用Windows优化大师的清理注册表垃圾的功能,它会删掉一个有用的注册表信息导致Oracle的监听无法启动),最后写了这个文件:/p
-----------------------------link.jsp-----------------------------------------}
<%@ include file="include.inc"%>y
<%@ page contentType="text/html;charset=gb2312"%>^H
<html>A@4R
<body>|H
<%&copy;中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 0bA
Connection con = null;W
Statement stmt = null;t
)P
ResultSet rs = null;!vh/ft
try&copy;中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 Gm,
//有try就至少要有一个catch或finally1|+v:>
{&copy;中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 To
Class.forName(CLASSFORNAME);//载入驱动程式类别A
con=DriverManager.getConnection(SERVANDDB);//建立数据库连接~Lk`2
stmt=con.createStatement();pYQ
String sql="select * from infom";//infom是表名G7
rs=stmt.executeQuery(sql);{%>
while(rs.next())hX
{&copy;中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 3/V
out.println(rs.getString(1));//1就是第一个字段,第一个字段的名是username,所以这段也可以写成:rs.getString("username"
I
out.println(rs.getString(2));}5n*J
}sJK Yj
out.println("<br>成功!"
;V,3M[
}//try结束Lqg
catch(Exception e)ek@VtP
//当try里运行出错时,运行catch里的内容DIT:O
{&copy;中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 uJZ
out.println(e);//输出错误信息n
} &copy;中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 Slef"
finallyEV
//不论是否出错、结果怎样,都要运行finally里的内容Hia~
//向下为关闭数据库连接#)
{&copy;中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 UiS
if (rs!=null)z)
rs.close();77
if (stmt!=null)f "OV
stmt.close();_Z_
if (con!=null)K%R
con.close();MCBN 8
} M&?(
%>&copy;中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 }>
</body>pW%d
</html>echm|
---------------------------------------------*%"
Class.forName(CLASSFORNAME);/tg<5S
con=DriverManager.getConnection(SERVANDDB);|UK
这两句无疑是很重要的,可是CLASSFORNAME、SERVANDDB这两个变量是什么呢?它们都来自<%@ include file="include.inc"%>这句里的include.inc文件,该文件与link.jsp在同一目录下。8692P
-----------------------------------include.inc------------------------------------C
<%@ page import="java.sql.*"%>(J-d9
<%@ page import="java.util.*"%>xn=
<%@ page import="java.io.*"%>}
<%@ page import="oracle.jdbc.driver.OracleDriver"%>4
<%@ page import="java.lang.*"%>2n=y$
&copy;中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 ;D/Ma)
<% /RK:T*
request.setCharacterEncoding("gb2312"
;aL
String CLASSFORNAME="oracle.jdbc.driver.OracleDriver";//定义载入驱动程式的字符串7,kH
String SERVANDDB="jdbc
racle:thin:name/password@ringz:1521:rock";//定义建立数据库连接的字符串j`KH|
//name是数据库的用户名;password是该用户的密码;ringz是我的机器名;rock是SID8Eh%u
%>&copy;中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 XP
----------------------------------------------~mMs:B
假如你用的是Oracle的数据库的话,现在你运行这个文件还是会出错,因为Tomcat服务器找不到Oracle的JDBC驱动,你需要甲骨文(oracle)公司提拱的一个包:classes12.jar,你可以在D:/oracle/ora92/jdbc/lib下找到它,然后把它放到D:/Tomcat 5.0/common/lib下,现在,应该可以了。QI
&copy;中国Java实验室(ChinaJavaLab)技术论坛 -- 中国Java实验室技术论坛 G[k.
本章最后的话:向程序员方向发展有两点无疑是很重要的:1、试着读懂代码;2、亲自动手写,然后亲自调试。'S