当前位置: 技术问答>java相关
关于jsp的设置问题?
来源: 互联网 发布时间:2014-12-30
本文导语: 我没有看到过书中关于JSP设置方面的介绍,也没有在哪个网站上看到过关于这方面很完全的回答,我希望那位高手能写出很完整的解决方案,主要是JSP网站的配置,如jsp文件和class文件还有JDK目录等相关的关系呀!配...
我没有看到过书中关于JSP设置方面的介绍,也没有在哪个网站上看到过关于这方面很完全的回答,我希望那位高手能写出很完整的解决方案,主要是JSP网站的配置,如jsp文件和class文件还有JDK目录等相关的关系呀!配置呀什么的,如果哪位高手能写出很完整正确的答案,在下佩服,谢谢了。
我的E_mail:lmh79@21cn.com
QQ:757230
我的E_mail:lmh79@21cn.com
QQ:757230
|
配置Web应用环境
实现JSP留言簿
郑志勇
软件准备
首先要下载到下面这些程序:
1、java编译支持环境:j2sdk1_3_-win.exe(30MB)
2、JDBC for MySQL驱动程序:mm.mysql.jdbc-1.2b.zip(386KB)
3、支持JSP的Web服务器Tomcat3.1:jakarta-to,cat.zip(2.23MB)
4、MySQL数据库存服务器:mysql-3.23.21-beta-win-src.zip(2.23MB)
以上程序除MySQL数据库存服务器外,在http://java.sun.com/中都有最新版的程序,在各大下载中心也都很容易下载到。
安装具有JDBC for MySQL的JSP开发环境
安装Java 开发工具包
在用户访问Tomcat服务器的JSP页面时,Tomcat首先调用Java开发工具包,编译并执行JSP页面中的Java代码,将结果以HTML的格式返回给客户。因此在安装Tomcat之前,必须先安装Java开发工具包。安装时直接双击下载的j2sdk1_3_0-win.exe,就可以安装Java开发环境,惟一需要操作的就是选择一下安装目录,这里假设安装在C:JDK1.3目录下。
另外, 如果选用中文的Windows,必须修改系统注册表,因为在安装过程中,系统用中文注册“Java 运行时环境”这一分支,该分支用于指明Java运行时所需文件的目录,而Java SDK不能识别系统注册表中的中文数据。
具体步骤是:用RegEdit打开注册表并找到Javasoft项, 位置为:hkey_local_machine→software→javasoft,找到 “Java 运行时环境” ,把这个分支导出到文件1.reg中。然后用文本编辑器打开1.reg,把其中的所有“Java 运行时环境”替换成“Java Runtime Environment”并保存,双击该文件导入注册表。
接着是设置环境变量。在Win 9x中,要编辑Autoexec.bat文件,用Set 语句来设定环境变量。在Win NT或Win 2000中可以选择“我的电脑”,右键点出选单,选择“属性”,弹出“系统特性”对话框, 选择“高级”,然后点按钮“环境变量”,就可以编辑系统的环境变量了。
在其中加入如下语句:
rem 设置路径
PATH=%PATH%;c:jdk1.3;c:jdk1.3bin
rem 设置java环境变量
set CLASSPATH=C:jdk1.3libTools.jar;C:jdk1.3libdt.jar;
rem 设置java主目录
set JAVA_HOME=c:jdk1.3
安装Tomcat 3.1
安装Tomcat 3.1比较简单,直接把jakarta-tomcat.zip解压释放到C:Tomcat目录下即可,接着是设置环境变量,加入如下语句:
rem 设置路径
PATH=%PATH%;c:tomcat
rem 设置tomcat环境变量
set CLASSPATH=c:tomcatclasses;c:tomcatlib;%CLASSPATH
rem 设置TOMcat的主目录
set TOMCAT_HOME=c:tomcat
重新启动电脑后,你就拥有了一台支持JSP的Web服务器。运行C:TomcatBin目录下Startup.bat后出现两个命令行方式的窗口。这时在浏览器中键入 http://localhost:8080/,应该可以看到Tomcat 3.1的画面了。对了,千万不要把这两个窗口关了,它表示是Java和Tomcat正在后台运行。要关闭服务器可执行C:TomcatBin目录下Shutdown.bat。
安装MySQL数据库管理系统
将下载的mysql-3.23.21-beta-win-src.zip解压缩到一个临时目录,运行临时目录中的Setup,根据安装向导选择好安装目录和安装方式,系统就会完成安装。这里假设安装在C:MySQL目录下。运行C:MySQLBin目录下的mysqld-shareware.exe就可以启动MySQL了。启动MySQL后,Windows桌面没什么变化,可以通过执行MySQL Manager来检查数据库服务是否安装成功。如果安装成功,你就可以直接打开里面的库Test和MySQL。
安装JDBC for MySQL
为了使Java能操作MySQL的数据库,需要安装MySQL的JDBC驱动程序,将mm.mysql.jdbc-1.2b.zip解压到C:下,自动生成一个mm.mysql.jdbc-1.2b的目录,并设置环境变量:
rem 设置mysql.jdbc环境变量
set CLASSPATH=c:mm.mysql.jdbc-1.2b;%CLASSPATH
重新启动后,所有的安装就全部OK了!
例子:使用环境建立留言簿
建立存放数据的表
要设计一个留言簿,首先必须在MySQL的数据库中建立一个存放留言数据的表,假设该表为Questbook,其结构如下:
Recordid 存放记录号
name 存放留言者的姓名
Email 存放留言者的邮件地址
body 存放留言者的留言
具体操作步骤:
1.执行程序mysqld-shareware.exe,启动MySQL。
2.执行程序MySQLManager,打开库Test。
3.选择Tools选单下的SQL Query ,出现MySQL Query窗口。
4.在Query标签下,输入命令如下:create table questbook(Recordid int,Name char(20),Email char(30), Body text)。
5.单击运行图标。你就可以得到用于存放留言簿数据的表Questbook。
编写留言簿程序
Java是通过JDBC for MySQL提供的工具包中的API函数,来调用MySQL的数据库,你可以用浏览器打开C:mm.mysql.jdbc-1.2bdocapidoc
index.html文件来获得所有API函数说明。下面我只向大家介绍几个编写留言簿所需的函数。
Class.forName("org.gjt.mm.mysql.
Driver"); 用于加载 mm.mysql驱动程序
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?user=root;password="); 用于连接本地数据库MySQL
stmt = con.createStatement(); 生成数据库对象
rs = stmt.executeQuery("SELECT * FROM guestbook");执行SQL语句并返回结果集
将程序编好后放在Tomat的发布目录C:TomcatwebappsROOT下就可以了。
背景资料
Java Server Page(简称JSP),和ASP、PHP一样都是网络编程语言,只不过在JSP页面中插入的脚本代码是Java语句片段。要利用JSP编写应用,首先,必须要有一个能执行JSP脚本的Web服务器,可以在原有的Apache、IIS或PWS服务器的基础上建立,不过有许多技术上的问题。建议刚接触JSP的虫们,还是白手起家,直接安装一个专门支持JSP的Web服务器,以免节外生枝,这里给大家介绍的是Tomcat 3.1。
熟悉网络编程的人都知道,在网络编程中要是没有数据库的支持,一件很简单的事做起来都是相当的辛苦。那么在Java环境下使用什么数据库比较好呢?目前,流行的网络数据库主要有Oracle、Sybase、SQL Server、MySQL等,不过最适合个人网站或小型网络使用的首推MySQL,其完全免费、容易安装、容易管理、容易获得、完全支持SQL语言等特点,为目前广大网络编程爱好者所喜欢。本文介绍一下在Windows环境下如何安装Java SDK、Tomcat、MySQL、JDBC for MySQL。
实现JSP留言簿
郑志勇
软件准备
首先要下载到下面这些程序:
1、java编译支持环境:j2sdk1_3_-win.exe(30MB)
2、JDBC for MySQL驱动程序:mm.mysql.jdbc-1.2b.zip(386KB)
3、支持JSP的Web服务器Tomcat3.1:jakarta-to,cat.zip(2.23MB)
4、MySQL数据库存服务器:mysql-3.23.21-beta-win-src.zip(2.23MB)
以上程序除MySQL数据库存服务器外,在http://java.sun.com/中都有最新版的程序,在各大下载中心也都很容易下载到。
安装具有JDBC for MySQL的JSP开发环境
安装Java 开发工具包
在用户访问Tomcat服务器的JSP页面时,Tomcat首先调用Java开发工具包,编译并执行JSP页面中的Java代码,将结果以HTML的格式返回给客户。因此在安装Tomcat之前,必须先安装Java开发工具包。安装时直接双击下载的j2sdk1_3_0-win.exe,就可以安装Java开发环境,惟一需要操作的就是选择一下安装目录,这里假设安装在C:JDK1.3目录下。
另外, 如果选用中文的Windows,必须修改系统注册表,因为在安装过程中,系统用中文注册“Java 运行时环境”这一分支,该分支用于指明Java运行时所需文件的目录,而Java SDK不能识别系统注册表中的中文数据。
具体步骤是:用RegEdit打开注册表并找到Javasoft项, 位置为:hkey_local_machine→software→javasoft,找到 “Java 运行时环境” ,把这个分支导出到文件1.reg中。然后用文本编辑器打开1.reg,把其中的所有“Java 运行时环境”替换成“Java Runtime Environment”并保存,双击该文件导入注册表。
接着是设置环境变量。在Win 9x中,要编辑Autoexec.bat文件,用Set 语句来设定环境变量。在Win NT或Win 2000中可以选择“我的电脑”,右键点出选单,选择“属性”,弹出“系统特性”对话框, 选择“高级”,然后点按钮“环境变量”,就可以编辑系统的环境变量了。
在其中加入如下语句:
rem 设置路径
PATH=%PATH%;c:jdk1.3;c:jdk1.3bin
rem 设置java环境变量
set CLASSPATH=C:jdk1.3libTools.jar;C:jdk1.3libdt.jar;
rem 设置java主目录
set JAVA_HOME=c:jdk1.3
安装Tomcat 3.1
安装Tomcat 3.1比较简单,直接把jakarta-tomcat.zip解压释放到C:Tomcat目录下即可,接着是设置环境变量,加入如下语句:
rem 设置路径
PATH=%PATH%;c:tomcat
rem 设置tomcat环境变量
set CLASSPATH=c:tomcatclasses;c:tomcatlib;%CLASSPATH
rem 设置TOMcat的主目录
set TOMCAT_HOME=c:tomcat
重新启动电脑后,你就拥有了一台支持JSP的Web服务器。运行C:TomcatBin目录下Startup.bat后出现两个命令行方式的窗口。这时在浏览器中键入 http://localhost:8080/,应该可以看到Tomcat 3.1的画面了。对了,千万不要把这两个窗口关了,它表示是Java和Tomcat正在后台运行。要关闭服务器可执行C:TomcatBin目录下Shutdown.bat。
安装MySQL数据库管理系统
将下载的mysql-3.23.21-beta-win-src.zip解压缩到一个临时目录,运行临时目录中的Setup,根据安装向导选择好安装目录和安装方式,系统就会完成安装。这里假设安装在C:MySQL目录下。运行C:MySQLBin目录下的mysqld-shareware.exe就可以启动MySQL了。启动MySQL后,Windows桌面没什么变化,可以通过执行MySQL Manager来检查数据库服务是否安装成功。如果安装成功,你就可以直接打开里面的库Test和MySQL。
安装JDBC for MySQL
为了使Java能操作MySQL的数据库,需要安装MySQL的JDBC驱动程序,将mm.mysql.jdbc-1.2b.zip解压到C:下,自动生成一个mm.mysql.jdbc-1.2b的目录,并设置环境变量:
rem 设置mysql.jdbc环境变量
set CLASSPATH=c:mm.mysql.jdbc-1.2b;%CLASSPATH
重新启动后,所有的安装就全部OK了!
例子:使用环境建立留言簿
建立存放数据的表
要设计一个留言簿,首先必须在MySQL的数据库中建立一个存放留言数据的表,假设该表为Questbook,其结构如下:
Recordid 存放记录号
name 存放留言者的姓名
Email 存放留言者的邮件地址
body 存放留言者的留言
具体操作步骤:
1.执行程序mysqld-shareware.exe,启动MySQL。
2.执行程序MySQLManager,打开库Test。
3.选择Tools选单下的SQL Query ,出现MySQL Query窗口。
4.在Query标签下,输入命令如下:create table questbook(Recordid int,Name char(20),Email char(30), Body text)。
5.单击运行图标。你就可以得到用于存放留言簿数据的表Questbook。
编写留言簿程序
Java是通过JDBC for MySQL提供的工具包中的API函数,来调用MySQL的数据库,你可以用浏览器打开C:mm.mysql.jdbc-1.2bdocapidoc
index.html文件来获得所有API函数说明。下面我只向大家介绍几个编写留言簿所需的函数。
Class.forName("org.gjt.mm.mysql.
Driver"); 用于加载 mm.mysql驱动程序
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?user=root;password="); 用于连接本地数据库MySQL
stmt = con.createStatement(); 生成数据库对象
rs = stmt.executeQuery("SELECT * FROM guestbook");执行SQL语句并返回结果集
将程序编好后放在Tomat的发布目录C:TomcatwebappsROOT下就可以了。
背景资料
Java Server Page(简称JSP),和ASP、PHP一样都是网络编程语言,只不过在JSP页面中插入的脚本代码是Java语句片段。要利用JSP编写应用,首先,必须要有一个能执行JSP脚本的Web服务器,可以在原有的Apache、IIS或PWS服务器的基础上建立,不过有许多技术上的问题。建议刚接触JSP的虫们,还是白手起家,直接安装一个专门支持JSP的Web服务器,以免节外生枝,这里给大家介绍的是Tomcat 3.1。
熟悉网络编程的人都知道,在网络编程中要是没有数据库的支持,一件很简单的事做起来都是相当的辛苦。那么在Java环境下使用什么数据库比较好呢?目前,流行的网络数据库主要有Oracle、Sybase、SQL Server、MySQL等,不过最适合个人网站或小型网络使用的首推MySQL,其完全免费、容易安装、容易管理、容易获得、完全支持SQL语言等特点,为目前广大网络编程爱好者所喜欢。本文介绍一下在Windows环境下如何安装Java SDK、Tomcat、MySQL、JDBC for MySQL。
|
孙以义 杜鹃
一、 什么是JSP
JSP(JavaServer Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,其网址为http://www.javasoft.com/products/jsp。在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页(*.jsp)。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。程序片段可以操作数据库、重新定向网页以及发送 email 等等,这就是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低,可以实现无Plugin,无ActiveX,无Java Applet,甚至无Frame。
本文将介绍利用JSP技术开发动态网页的方法,还将简要分析JSP技术和 Microsoft 公司的 ASP 技术的不同之处。
二、 如何安装和启动
为了实验JSP技术,首先需要建立运行环境,这个过程相当简单:
1、在 http://java.sun.com/jdk/处下载JDK(Java 2 SDK、Standard Edition、v 1.2.2)。
2、在http://java.sun.com/products/jsp/处下载JSWDK(JavaServer Web Development Kit 1.0.1)。Linux用户可以在http://jakarta.apache.org/处下载Tomcat 3.0。
3、安装
以Windows NT环境为例,JDK的安装是首先运行下载得到的jdk1_2_2-win.exe,然后修改系统环境参数,在PATH参数中加入[x:]jdk1.2.2bin以及增加新的环境参数 CLASSPATH=[x:]jdk1.2.2libtools.jar,其中[x:]是安装JDK的硬盘符(c:、d: 等)。 JSWDK的安装仅需将jswdk1_0_1-win.zip带目录释放到硬盘根目录下(c:、d: 等),然后就可以在硬盘上找到jswdk-1.0.1目录。将来如果不想保留JSWDK,删除这个目录就可以了,没有任何系统文件和注册表遗留问题。更详细的安装过程以及Solaris/Unix和Linux下JDK、Tomcat的安装可以参考下载得到的文件包中的安装说明。
4、启动
以Windows NT环境为例,在jswdk-1.0.1目录下执行startserver.bat,就可启动JSWDK中一个支持JSP网页技术的Web服务器。为了不与现有的Web服务器(例如IIS、PWS等)冲突,JSWDK的Web服务器使用了8080端口。在浏览器的地址栏中键入http://localhost:8080或者http://127.0.0.1:8080后,如果能看到 JSWDK 的欢迎页就说明JSP实验环境已经建成,可进入下一步实验。要关闭Web服务器则运行stopserver.bat。
三、 JSP简单示例
JSWDK中包含的Web服务器的文档目录在缺省状态下为jswdk-1.0.1webpages,主文档在缺省状态下为index.html和index.jsp。也就是说访问http://localhost:8080等于访问jswdk-1.0.1webpagesindex.html。
用文本编辑器,如Windows中的记事本(Notepad),创建一个文本文件hi.jsp,保存在jswdk-1.0.1webpages目录下,其内容如下:
〈html>
〈head>
〈title>Hi-JSP实验〈/title>
〈/head>
〈body>
〈%
String Msg = "This JSP test.";
out.print("Hello World!");
%>
〈h2>〈%=Msg%>〈/h2>
〈/body>
〈/html>
在浏览器的地址栏中键入http://localhost:8080/hi.jsp,JSWDK中的Web服务器会执行JSP 文件中用〈%以及%>括起来的Java程序语句,其中out.print是将文字输出到网页,语句〈%= 变量 | 表达式%>的作用是将Java Scriptlet中变量或表达式的值输出到网页.
将变量Msg赋值为中文字符串,用〈%= %>输出,或者用out.print输出中文字符串,则在英文版NT4及Redhat 6.1下实验运行结果正常,而在中文NT 4.0和中文98下,则反而会出现乱码。
四、 统一的网站界面
JSP支持服务器端的文件包含,即可以在一个JSP文件中插入多个其他文件,用来实现统一的网站界面。修改上述hi.jsp并另存为mypage.jsp:
〈%@ include file="top.htm" %>
〈%
String Msg = "This JSP test.";
out.print("Hello World!");
%>
〈h2>〈%=Msg%>〈/h2>
〈%@ include file="bot.htm" %>
用可视化HTML编辑器,例如FrontPage、Dreamweave等设计网站的框架结构,将设计好的框架结构文件分割成两个部分,上面一半保存为top.htm, 下面一半保存为bot.htm,代码如下面所示:
〈html>
〈head>
〈meta http-equiv="Content-Type" content="text/html; charset=gb2312">
〈title>我的主页〈/title>
〈/head>
〈body>
〈table border="0" width="100%" cellpadding="4" cellspacing="0" align="center">
〈tr>
〈td width="100%" colspan="2" bgcolor="#837ED1" align="center">〈font face="隶书"
color="#FFFF00" size=5>主页标题〈/font>
〈/td>
〈/tr>
〈tr>
〈td bgcolor="#837ED1" width="15%" valign="top" align="center">〈br>
〈font color="#FFFFFF">选项〈/font>〈p>〈font color="#FFFFFF">选项〈/font>〈/p>
〈p>〈font color="#FFFFFF">选项〈/font>〈/p>
〈p>〈font color="#FFFFFF">......〈/font>〈/p>
〈p> 〈/p>
〈/td>
〈td width="85%" valign="top">
----------------------------------------------------------------------------------------------------------------
〈/td>
〈/tr>
〈/table>
〈/body>
〈/html>
在浏览器的地址栏中键入http://localhost:8080/mypage.jsp.
这样网站的界面就能统一起来,而设计者可以集中精力在功能模块上处理用户登录、连接数据库、发送email等等。每个JSP文件都有如下结构:
〈%@ include file="top.htm" %>
〈%
// 实现某些功能
%>
〈%@ include file="bot.htm" %>
维护网站的界面也相对比较容易,只要修改top.htm和bot.htm,就能影响到所有网页。
五、 服务器参数设置
JSWDK的Web服务器参数保存在jswdk-1.0.1webserver.xml中,用Windows写字板打开并编辑这个文件就可以修改缺省设置值。本节内容主要针对JSWDK,Linux下Tomcat的设置方法略有不同。
JSWDK缺省的文档目录是jswdk-1.0.1webpages,在此目录下可以建立子目录,例如jswdk-1.0.1webpagestest,就能在浏览器中用http://localhost/test访问这个目录,为了使得这个子目录能执行JSP程序,还必须在webserver.xml中的〈Service>〈/Service>节加入:
〈WebApplication id="test" mapping="/test" docBase="webpages/test" /> 并且,还必须建立jswdk-1.0.1webpagestestWEB-INF目录,并从jswdk-1.0.1webpagesWEB-INF目录中复制过来以下四个文件:mappings.properties、mime.properties、servlets.properties以及webapp.properties。完成这些过程,才能通知JSWDK的Web服务器执行http://localhost/test 中的JSP程序。
六、 JavaBean
JSP网页吸引人的地方之一就是能结合JavaBean技术来扩充网页中程序的功能。 JavaBean是一种Java类 (class),通过封装属性和方法成为具有某种功能或者处理某个业务的对象。JavaBean被组织成为package(数据包)以便进行管理,实际上就是把一组JavaBean一起放在某某目录中,每个类的定义前加上package某某,本例中为test。目录test必须放在系统环境CLASSPATH包含的目录下,系统才能找到其中的JavaBean。JSWDK在缺省状态下将jswdk-1.0.1webpagesWEB-INFjspbeans 加入CLASSPATH。建立自己的JavaBean和package时,就放在这个目录中也不失为一种简易的方法。
下面介绍一个简单的JavaBean框架。用文本编辑器创建一个文本文件helloWorld.java,并保存在jswdk-1.0.1webpagesWEB-INFjspbeanstest目录下,其内容如下:
package test;
public class helloWorld {
public String name = "My first bean";
public String getHi()
{
return "Hello from " + name;
}
}
helloWorld.java编辑好后,在DOS状态下,进入目录jswdk-1.0.1webpagesWEB-INFjspbeans,用JDK的javac命令编译helloWorld.java如下:
javac helloWorld.java
注意,Java是区分大小写的,在程序中,编译命令行中字母的大小写都不能写错。编译成功就表示建立了一个JavaBean。下面看如何在JSP中使用这个JavaBean。用文本编辑器创建一个文本文件hi-bean.jsp,并保存在jswdk-1.0.1webpagestest目录下,其内容如下:
〈html>
〈head>
〈title>JavaBean 试验〈/title>
〈/head>
〈body>
〈jsp:useBean id="helloBean" scope="session" class="test.helloWorld" />
〈%= helloBean.getHi() %>
〈hr>
〈%
helloBean.name = "JSP";
out.print(helloBean.getHi());
%>
〈/body>
〈/html>
在JSP网页中,使用 〈jsp:useBean ... />语法来创建JavaBean对象,并命名为helloBean。读者可从这个简单的例子中看出设置、获取JavaBean属性,以及调用JavaBean方法的做法。在浏览器的地址栏中键入http://localhost:8080/test/hi-bean.jsp,得到结果如图3所示。注意,如果修改和重新编译了JavaBean程序,则需要关闭和重新启动JSWDK的Web服务器以后修改的结果才会有效。如果仅仅修改JSP文件,则不用重新启动JSWDK的Web服务器。
虽然,这仅仅完成了一个非常简单的JavaBean框架,但是遵循这个框架可以设计出多种多样的JavaBean。例如,从JSP中访问数据通常就是通过JavaBean来实现的。
七、 数据库连接
数据库连接对动态网站来说是最为重要的部分,Java中连接数据库的技术是JDBC(Java Database Connectivity)。很多数据库系统带有JDBC驱动程序,Java程序就通过JDBC驱动程序与数据库相连,执行查询、提取数据等等操作。Sun公司还开发了JDBC-ODBC bridge,用此技术Java程序就可以访问带有ODBC驱动程序的数据库,目前大多数数据库系统都带有ODBC驱动程序,所以Java程序能访问诸如Oracle、Sybase、MS SQL Server和MS Access等数据库。下面介绍如何用Access实现一个动态FAQ(常见问题及答案)网站。首先建立一个Access数据库faq.mdb,其中的表faqs有字段id(自动增量型,并设为主关键字)、subject(文字型,长度200)、answers(备注型)。这个表中可以存放一些编程知识的常见问题及答案,
然后,在Control Panel(控制面板)的ODBC Datasource模块中加入System DSN,取名faq,并指向faq.mdb。 创建一个JavaBean,名为faq.java,并保存在jswdk-1.0.1webpagesWEB-INFjspbeanstest目录下。faq.java 的内容如下:
package test;
import java.sql.*;
public class faq {
String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
String sConnStr = "jdbc:odbc:faq";
Connection conn = null;
ResultSet rs = null;
public faq() {
try {
Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e) {
System.err.println("faq(): " + e.getMessage());
}
}
public ResultSet executeQuery(String sql) {
rs = null;
try {
conn = DriverManager.getConnection(sConnStr);
Statement stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}
catch(SQLException ex) {
System.err.println("aq.executeQuery: " + ex.getMessage());
}
return rs;
}
}
用上一节介绍的方法编译faq.java以后,在jswdk-1.0.1webpagestest目录下创建JSP文件faq.jsp,其内容如下:
〈html>
〈head>
〈meta http-equiv="Content-Type" content="text/html; charset=gb2312">
〈title>我的FAQ !〈/title>
〈/head>
〈body>
〈p>〈b>这是我的FAQ!〈/b>〈/p>
〈%@ page language="java" import="java.sql.*" %>
〈jsp:useBean id="workM" scope="page" class="test.faq" />
〈%
ResultSet RS = workM.executeQuery("SELECT * FROM faqs");
String tt;
while (RS.next()) {
tt = RS.getString("Answer");
out.print("〈LI>" + RS.getString("Subject") + "〈/LI>");
out.print("〈pre>" + tt + "〈/pre>");
}
RS.close();
%>
在浏览器的地址栏中键入http://localhost:8080/test/faq.jsp,faq.jsp调用JavaBean,从数据库中读出内容并输出.
限于篇幅,本文不能列举JSP-JavaBean-JDBC/ODBC-数据库的复杂例子,读者可以从本文最后所推荐的网址中找到并下载到数据库连接范例。
八、 技术分析
Microsoft 公司的 ASP 技术也是动态网页开发技术。JSP和ASP从形式上非常相似,ASP程序员一眼就能认出〈% %>以及〈%= %>。但是深入探究下去会发现它们很多的差别,其中最主要的有以下三点:
1、 JSP的效率和安全性更高
ASP以源码形式存放,以解释方式运行,每次ASP网页调用都需要对源码进行解释,运行效率不高。另外,IIS的漏洞曾使得许多网站源程序大曝光,包括笔者以前用ASP开发的网站,ASP程序全部被人下载了去。
JSP在执行以前先被编译成字节码 (byte code),字节码由Java虚拟机(Java Virtual Machine)解释执行,比源码解释的效率高;服务器上还有字节码的Cache机制,能提高字节码的访问效率。第一次调用JSP网页可能稍慢,因为它被编译成Cache,以后就快得多了。同时,JSP源程序不大可能被下载,特别是JavaBean程序完全可以放到不对外的目录中。
2、 JSP的组件 (Component) 方式更方便
ASP通过COM来扩充复杂的功能,如文件上载、发送email以及将业务处理或者复杂计算分离出来成为独立可重复利用的模块。JSP通过JavaBean实现了同样的功能扩充。
在开发方面,COM的开发远比JavaBean复杂和繁琐,学会ASP不难,但学会开发COM可不简单。而JavaBean就简单多了,从本文上述示例中可以看出开发JavaBean很方便。
在维护方面,COM必须在服务器上注册,如果修改了COM程序,就必须重新注册,甚至必须关机和重新启动。JavaBean则不需要注册,放在CLASSPATH包含的目录中就行了。如果JavaBean进行了修改,则JSWDK和Tomcat现在还需要关闭和重新运行(但不是关机),但开发者已经许诺将在以后的版本中做到不需要关闭服务器。
另外JavaBean是完全的OOP,可以针对不同的业务处理功能方便地建立一整套可重复利用的对象库,例如用户权限控制、email自动回复等等。
3、 JSP的适应平台更广
ASP目前仅适用于NT和IIS。虽然Unix下有ChiliSoft的插件来支持ASP,但是ASP本身的功能有限,必须通过ASP+COM的组合来扩充,Unix下的COM实现起来非常困难。
JSP则不同,几乎所有平台都支持Java,JSP+JavaBean可以在所有平台下通行无阻。NT下IIS通过一个插件,例如JRUN(http://www3.allaire.com/products/jrun/)或者ServletExec(http://www.newatlanta.com/),就能支持JSP。著名的Web服务器Apache已经能够支持JSP。由于Apache广泛应用在NT、Unix和Linux上,因此JSP有更广泛的运行平台。虽然现在NT操作系统占了很大的市场份额,但是在服务器方面Unix的优势仍然很大,而新崛起的Linux更是来势不小。
从一个平台移植到另外一个平台,JSP和JavaBean甚至不用重新编译,因为Java字节码都是标准的与平台无关的。笔者将在NT下实验的JSP网页原封不动地拿到Linux下就运行起来了,感觉非常满意。
九、 结论
综上所述,JSP可谓是构建动态网站的一个利器,故推荐给读者,祝愿你们掌握JSP,开发出优秀的网站。ASP程序员也请试一下,JSP里也有session、request、response/out等对象,亲自试试看如何。
附文
这里是关于JSP的重要参考资料,有兴趣的读者可以进一步阅读。
http://java.sun.com/products/jsp/faq.html
http://www.esperanto.org.nz/jsp/jspfaq.html
http://www.zdnet.com/pcweek/stories/news/0,4153,410709,00.html
http://developer.netscape.com/viewsource/kuslich_jsp/kuslich_jsp.html
http://web2.java.sun.com/products/jsp/jsp-asp.html
http://www.asptoday.com/articles/19991022.htm
一、 什么是JSP
JSP(JavaServer Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,其网址为http://www.javasoft.com/products/jsp。在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页(*.jsp)。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。程序片段可以操作数据库、重新定向网页以及发送 email 等等,这就是建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低,可以实现无Plugin,无ActiveX,无Java Applet,甚至无Frame。
本文将介绍利用JSP技术开发动态网页的方法,还将简要分析JSP技术和 Microsoft 公司的 ASP 技术的不同之处。
二、 如何安装和启动
为了实验JSP技术,首先需要建立运行环境,这个过程相当简单:
1、在 http://java.sun.com/jdk/处下载JDK(Java 2 SDK、Standard Edition、v 1.2.2)。
2、在http://java.sun.com/products/jsp/处下载JSWDK(JavaServer Web Development Kit 1.0.1)。Linux用户可以在http://jakarta.apache.org/处下载Tomcat 3.0。
3、安装
以Windows NT环境为例,JDK的安装是首先运行下载得到的jdk1_2_2-win.exe,然后修改系统环境参数,在PATH参数中加入[x:]jdk1.2.2bin以及增加新的环境参数 CLASSPATH=[x:]jdk1.2.2libtools.jar,其中[x:]是安装JDK的硬盘符(c:、d: 等)。 JSWDK的安装仅需将jswdk1_0_1-win.zip带目录释放到硬盘根目录下(c:、d: 等),然后就可以在硬盘上找到jswdk-1.0.1目录。将来如果不想保留JSWDK,删除这个目录就可以了,没有任何系统文件和注册表遗留问题。更详细的安装过程以及Solaris/Unix和Linux下JDK、Tomcat的安装可以参考下载得到的文件包中的安装说明。
4、启动
以Windows NT环境为例,在jswdk-1.0.1目录下执行startserver.bat,就可启动JSWDK中一个支持JSP网页技术的Web服务器。为了不与现有的Web服务器(例如IIS、PWS等)冲突,JSWDK的Web服务器使用了8080端口。在浏览器的地址栏中键入http://localhost:8080或者http://127.0.0.1:8080后,如果能看到 JSWDK 的欢迎页就说明JSP实验环境已经建成,可进入下一步实验。要关闭Web服务器则运行stopserver.bat。
三、 JSP简单示例
JSWDK中包含的Web服务器的文档目录在缺省状态下为jswdk-1.0.1webpages,主文档在缺省状态下为index.html和index.jsp。也就是说访问http://localhost:8080等于访问jswdk-1.0.1webpagesindex.html。
用文本编辑器,如Windows中的记事本(Notepad),创建一个文本文件hi.jsp,保存在jswdk-1.0.1webpages目录下,其内容如下:
〈html>
〈head>
〈title>Hi-JSP实验〈/title>
〈/head>
〈body>
〈%
String Msg = "This JSP test.";
out.print("Hello World!");
%>
〈h2>〈%=Msg%>〈/h2>
〈/body>
〈/html>
在浏览器的地址栏中键入http://localhost:8080/hi.jsp,JSWDK中的Web服务器会执行JSP 文件中用〈%以及%>括起来的Java程序语句,其中out.print是将文字输出到网页,语句〈%= 变量 | 表达式%>的作用是将Java Scriptlet中变量或表达式的值输出到网页.
将变量Msg赋值为中文字符串,用〈%= %>输出,或者用out.print输出中文字符串,则在英文版NT4及Redhat 6.1下实验运行结果正常,而在中文NT 4.0和中文98下,则反而会出现乱码。
四、 统一的网站界面
JSP支持服务器端的文件包含,即可以在一个JSP文件中插入多个其他文件,用来实现统一的网站界面。修改上述hi.jsp并另存为mypage.jsp:
〈%@ include file="top.htm" %>
〈%
String Msg = "This JSP test.";
out.print("Hello World!");
%>
〈h2>〈%=Msg%>〈/h2>
〈%@ include file="bot.htm" %>
用可视化HTML编辑器,例如FrontPage、Dreamweave等设计网站的框架结构,将设计好的框架结构文件分割成两个部分,上面一半保存为top.htm, 下面一半保存为bot.htm,代码如下面所示:
〈html>
〈head>
〈meta http-equiv="Content-Type" content="text/html; charset=gb2312">
〈title>我的主页〈/title>
〈/head>
〈body>
〈table border="0" width="100%" cellpadding="4" cellspacing="0" align="center">
〈tr>
〈td width="100%" colspan="2" bgcolor="#837ED1" align="center">〈font face="隶书"
color="#FFFF00" size=5>主页标题〈/font>
〈/td>
〈/tr>
〈tr>
〈td bgcolor="#837ED1" width="15%" valign="top" align="center">〈br>
〈font color="#FFFFFF">选项〈/font>〈p>〈font color="#FFFFFF">选项〈/font>〈/p>
〈p>〈font color="#FFFFFF">选项〈/font>〈/p>
〈p>〈font color="#FFFFFF">......〈/font>〈/p>
〈p> 〈/p>
〈/td>
〈td width="85%" valign="top">
----------------------------------------------------------------------------------------------------------------
〈/td>
〈/tr>
〈/table>
〈/body>
〈/html>
在浏览器的地址栏中键入http://localhost:8080/mypage.jsp.
这样网站的界面就能统一起来,而设计者可以集中精力在功能模块上处理用户登录、连接数据库、发送email等等。每个JSP文件都有如下结构:
〈%@ include file="top.htm" %>
〈%
// 实现某些功能
%>
〈%@ include file="bot.htm" %>
维护网站的界面也相对比较容易,只要修改top.htm和bot.htm,就能影响到所有网页。
五、 服务器参数设置
JSWDK的Web服务器参数保存在jswdk-1.0.1webserver.xml中,用Windows写字板打开并编辑这个文件就可以修改缺省设置值。本节内容主要针对JSWDK,Linux下Tomcat的设置方法略有不同。
JSWDK缺省的文档目录是jswdk-1.0.1webpages,在此目录下可以建立子目录,例如jswdk-1.0.1webpagestest,就能在浏览器中用http://localhost/test访问这个目录,为了使得这个子目录能执行JSP程序,还必须在webserver.xml中的〈Service>〈/Service>节加入:
〈WebApplication id="test" mapping="/test" docBase="webpages/test" /> 并且,还必须建立jswdk-1.0.1webpagestestWEB-INF目录,并从jswdk-1.0.1webpagesWEB-INF目录中复制过来以下四个文件:mappings.properties、mime.properties、servlets.properties以及webapp.properties。完成这些过程,才能通知JSWDK的Web服务器执行http://localhost/test 中的JSP程序。
六、 JavaBean
JSP网页吸引人的地方之一就是能结合JavaBean技术来扩充网页中程序的功能。 JavaBean是一种Java类 (class),通过封装属性和方法成为具有某种功能或者处理某个业务的对象。JavaBean被组织成为package(数据包)以便进行管理,实际上就是把一组JavaBean一起放在某某目录中,每个类的定义前加上package某某,本例中为test。目录test必须放在系统环境CLASSPATH包含的目录下,系统才能找到其中的JavaBean。JSWDK在缺省状态下将jswdk-1.0.1webpagesWEB-INFjspbeans 加入CLASSPATH。建立自己的JavaBean和package时,就放在这个目录中也不失为一种简易的方法。
下面介绍一个简单的JavaBean框架。用文本编辑器创建一个文本文件helloWorld.java,并保存在jswdk-1.0.1webpagesWEB-INFjspbeanstest目录下,其内容如下:
package test;
public class helloWorld {
public String name = "My first bean";
public String getHi()
{
return "Hello from " + name;
}
}
helloWorld.java编辑好后,在DOS状态下,进入目录jswdk-1.0.1webpagesWEB-INFjspbeans,用JDK的javac命令编译helloWorld.java如下:
javac helloWorld.java
注意,Java是区分大小写的,在程序中,编译命令行中字母的大小写都不能写错。编译成功就表示建立了一个JavaBean。下面看如何在JSP中使用这个JavaBean。用文本编辑器创建一个文本文件hi-bean.jsp,并保存在jswdk-1.0.1webpagestest目录下,其内容如下:
〈html>
〈head>
〈title>JavaBean 试验〈/title>
〈/head>
〈body>
〈jsp:useBean id="helloBean" scope="session" class="test.helloWorld" />
〈%= helloBean.getHi() %>
〈hr>
〈%
helloBean.name = "JSP";
out.print(helloBean.getHi());
%>
〈/body>
〈/html>
在JSP网页中,使用 〈jsp:useBean ... />语法来创建JavaBean对象,并命名为helloBean。读者可从这个简单的例子中看出设置、获取JavaBean属性,以及调用JavaBean方法的做法。在浏览器的地址栏中键入http://localhost:8080/test/hi-bean.jsp,得到结果如图3所示。注意,如果修改和重新编译了JavaBean程序,则需要关闭和重新启动JSWDK的Web服务器以后修改的结果才会有效。如果仅仅修改JSP文件,则不用重新启动JSWDK的Web服务器。
虽然,这仅仅完成了一个非常简单的JavaBean框架,但是遵循这个框架可以设计出多种多样的JavaBean。例如,从JSP中访问数据通常就是通过JavaBean来实现的。
七、 数据库连接
数据库连接对动态网站来说是最为重要的部分,Java中连接数据库的技术是JDBC(Java Database Connectivity)。很多数据库系统带有JDBC驱动程序,Java程序就通过JDBC驱动程序与数据库相连,执行查询、提取数据等等操作。Sun公司还开发了JDBC-ODBC bridge,用此技术Java程序就可以访问带有ODBC驱动程序的数据库,目前大多数数据库系统都带有ODBC驱动程序,所以Java程序能访问诸如Oracle、Sybase、MS SQL Server和MS Access等数据库。下面介绍如何用Access实现一个动态FAQ(常见问题及答案)网站。首先建立一个Access数据库faq.mdb,其中的表faqs有字段id(自动增量型,并设为主关键字)、subject(文字型,长度200)、answers(备注型)。这个表中可以存放一些编程知识的常见问题及答案,
然后,在Control Panel(控制面板)的ODBC Datasource模块中加入System DSN,取名faq,并指向faq.mdb。 创建一个JavaBean,名为faq.java,并保存在jswdk-1.0.1webpagesWEB-INFjspbeanstest目录下。faq.java 的内容如下:
package test;
import java.sql.*;
public class faq {
String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";
String sConnStr = "jdbc:odbc:faq";
Connection conn = null;
ResultSet rs = null;
public faq() {
try {
Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e) {
System.err.println("faq(): " + e.getMessage());
}
}
public ResultSet executeQuery(String sql) {
rs = null;
try {
conn = DriverManager.getConnection(sConnStr);
Statement stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
}
catch(SQLException ex) {
System.err.println("aq.executeQuery: " + ex.getMessage());
}
return rs;
}
}
用上一节介绍的方法编译faq.java以后,在jswdk-1.0.1webpagestest目录下创建JSP文件faq.jsp,其内容如下:
〈html>
〈head>
〈meta http-equiv="Content-Type" content="text/html; charset=gb2312">
〈title>我的FAQ !〈/title>
〈/head>
〈body>
〈p>〈b>这是我的FAQ!〈/b>〈/p>
〈%@ page language="java" import="java.sql.*" %>
〈jsp:useBean id="workM" scope="page" class="test.faq" />
〈%
ResultSet RS = workM.executeQuery("SELECT * FROM faqs");
String tt;
while (RS.next()) {
tt = RS.getString("Answer");
out.print("〈LI>" + RS.getString("Subject") + "〈/LI>");
out.print("〈pre>" + tt + "〈/pre>");
}
RS.close();
%>
在浏览器的地址栏中键入http://localhost:8080/test/faq.jsp,faq.jsp调用JavaBean,从数据库中读出内容并输出.
限于篇幅,本文不能列举JSP-JavaBean-JDBC/ODBC-数据库的复杂例子,读者可以从本文最后所推荐的网址中找到并下载到数据库连接范例。
八、 技术分析
Microsoft 公司的 ASP 技术也是动态网页开发技术。JSP和ASP从形式上非常相似,ASP程序员一眼就能认出〈% %>以及〈%= %>。但是深入探究下去会发现它们很多的差别,其中最主要的有以下三点:
1、 JSP的效率和安全性更高
ASP以源码形式存放,以解释方式运行,每次ASP网页调用都需要对源码进行解释,运行效率不高。另外,IIS的漏洞曾使得许多网站源程序大曝光,包括笔者以前用ASP开发的网站,ASP程序全部被人下载了去。
JSP在执行以前先被编译成字节码 (byte code),字节码由Java虚拟机(Java Virtual Machine)解释执行,比源码解释的效率高;服务器上还有字节码的Cache机制,能提高字节码的访问效率。第一次调用JSP网页可能稍慢,因为它被编译成Cache,以后就快得多了。同时,JSP源程序不大可能被下载,特别是JavaBean程序完全可以放到不对外的目录中。
2、 JSP的组件 (Component) 方式更方便
ASP通过COM来扩充复杂的功能,如文件上载、发送email以及将业务处理或者复杂计算分离出来成为独立可重复利用的模块。JSP通过JavaBean实现了同样的功能扩充。
在开发方面,COM的开发远比JavaBean复杂和繁琐,学会ASP不难,但学会开发COM可不简单。而JavaBean就简单多了,从本文上述示例中可以看出开发JavaBean很方便。
在维护方面,COM必须在服务器上注册,如果修改了COM程序,就必须重新注册,甚至必须关机和重新启动。JavaBean则不需要注册,放在CLASSPATH包含的目录中就行了。如果JavaBean进行了修改,则JSWDK和Tomcat现在还需要关闭和重新运行(但不是关机),但开发者已经许诺将在以后的版本中做到不需要关闭服务器。
另外JavaBean是完全的OOP,可以针对不同的业务处理功能方便地建立一整套可重复利用的对象库,例如用户权限控制、email自动回复等等。
3、 JSP的适应平台更广
ASP目前仅适用于NT和IIS。虽然Unix下有ChiliSoft的插件来支持ASP,但是ASP本身的功能有限,必须通过ASP+COM的组合来扩充,Unix下的COM实现起来非常困难。
JSP则不同,几乎所有平台都支持Java,JSP+JavaBean可以在所有平台下通行无阻。NT下IIS通过一个插件,例如JRUN(http://www3.allaire.com/products/jrun/)或者ServletExec(http://www.newatlanta.com/),就能支持JSP。著名的Web服务器Apache已经能够支持JSP。由于Apache广泛应用在NT、Unix和Linux上,因此JSP有更广泛的运行平台。虽然现在NT操作系统占了很大的市场份额,但是在服务器方面Unix的优势仍然很大,而新崛起的Linux更是来势不小。
从一个平台移植到另外一个平台,JSP和JavaBean甚至不用重新编译,因为Java字节码都是标准的与平台无关的。笔者将在NT下实验的JSP网页原封不动地拿到Linux下就运行起来了,感觉非常满意。
九、 结论
综上所述,JSP可谓是构建动态网站的一个利器,故推荐给读者,祝愿你们掌握JSP,开发出优秀的网站。ASP程序员也请试一下,JSP里也有session、request、response/out等对象,亲自试试看如何。
附文
这里是关于JSP的重要参考资料,有兴趣的读者可以进一步阅读。
http://java.sun.com/products/jsp/faq.html
http://www.esperanto.org.nz/jsp/jspfaq.html
http://www.zdnet.com/pcweek/stories/news/0,4153,410709,00.html
http://developer.netscape.com/viewsource/kuslich_jsp/kuslich_jsp.html
http://web2.java.sun.com/products/jsp/jsp-asp.html
http://www.asptoday.com/articles/19991022.htm