Jsp 環境目前最流行的是 Tomcat5.0。Tomcat5.0 本身包含一個 Web 服務器,若是是測試,就不必把 Tomcat 與 IIS 或 Apache 集成起來。在 Tomcat 自帶的 Web 服務器下能夠進行 Jsp 測試。
安裝 Tomcat5.0 前須要安裝 JDK(若是是 Windows server 2003 就必須安裝 JDK,由於 Windows server 2003 是不帶 JVM 的-Windows server 2003 發行時 MS 和 SUN 恰好鬧彆扭呢)。安裝完後,要設置幾個環境變量:html
JAVA_HOME = E:/j2sdk1.4.2_04
CLASSPATH = E:/j2sdk1.4.2_04/lib;E:/j2sdk1.4.2_04/lib/tools.jar
Path 中加 .;E:/j2sdk1.4.2_04/bin;
CATALINA_HOME = E:/Tomcat 5.0
TOMCAT_HOME = E:/Tomcat 5.0java
解釋以下:個人 JDK版本是 1.4.2,安裝在 E:/j2sdk1.4.2_04 文件夾下。mysql
環境變量 JAVA_HOME 和 CATALINA_HOME 是必定要加的(至少參考資料都是這麼說的)。CLASSPATH 也說要加,可是我沒加彷佛也沒什麼影響。Path 中加 「.;E:/j2sdk1.4.2_04/bin;」也同樣,我不加 jsp 也能運行起來,可是在 DOS 窗口下手工編譯 .java 類到 .class 文件有影響,由於找不到 javac.exe 編譯命令文件。至於 path 中加的那個點「.」,我原來在 resin 下是須要的,在 Tomcat 下還沒肯定它是否是必須的。
你們還發現 CATALINA_HOME 和 TOMCAT_HOME 的值是同樣的,我估計 TOMCAT_HOME 是 Tomcat 的舊版本使用的,如今用的都是 CATALINA_HOME。不過這2個好象並非不相容的,都加上,或者加其中任意一個,Jsp 都不手影響。不過我建議用一個 CATALINA_HOME 就算了。web
Tomcat5.0 設置虛擬路徑比較方便了,由於能夠在 Web 環境下管理。http://[url]:8080/admin 能夠進入管理界面(管理員admin密碼在 Tomcat 安裝過程當中能夠設置),在 Tomcat Server-Service (Catalina)-Host (localhost)下能夠添加 Context,相似於 IIS
裏的虛擬路徑:Document Base 指的是從實際 E:/Tomcat 5.0/webapps/ROOT 爲起點的文件路徑,Path 指的是從虛擬「/」開始的虛擬路徑名,如「/mytest」。這裏 Tomcat 好象設計的有點不完善,只要加了新的 Context,保存,再點「Commit Changes」按鈕,再點Context 去看時,界面就會退到登陸界面,可是有時頁面就出錯了,必須再次手工進入http://[url]:8080/admin。加了 Context,Apache Tomcat 服務必須「關閉/啓動」一下(在Windows管理控制檯的服務裏)。有資料說在 http://localhost:8088/manager 管理界面下能夠 Start 和 Stop 來從新啓動對應的 Context,可是我 Stop 後就是 Start 不起來。點了一下 Undeploy,就把 Context 刪除了,注意:把 Context 對應的物理文件夾也給刪除了!!就是說你作了個應用,移到這裏,若是不當心,就給刪了-比病毒還厲害。當心啊!!sql
下來我說一下 Jsp 鏈接 mySQL 的問題。若是用 Jsp 去鏈接 Access,我感受就是把裙子穿在男人身上。Access 和 ASP 纔是天造地設的一對。Jsp 鏈接 mySQL 或者 Oracle 纔算合情合理。緣由我認爲是:用 Jsp 作開發,其優點就是跨 OS 平臺,若是用 Jsp + Access 組合,跨平臺的優點就沒有了。ASP 和 Access 已經工做的很好了,也簡單,你何須要彆扭的去用 Jsp 開發?固然,若是您對 Jsp 很是熟悉(或者對 Asp 很是不熟悉),或者很是喜歡 Jsp(或者很是不喜歡 Asp),或者您有大量的數據積累在 Access 裏,您要用 Jsp+Access 在技術上也不是不行的。
mySQL 的安裝很是簡單,基本安裝完畢都能正常使用,創建數據庫,設置用戶,均可以在 mySQL 的環境下完成。就是對用慣了 GUI 界面的人,感受不順手。網上能下載到一些 mySQL 的圖形用戶界面的管理工具,但好象不是免費的。數據庫
用 Jsp 鏈接 mySQL 數據庫,從表裏取數據,寫一段代碼測試一下:服務器
程序代碼1:
<!--首先導入一些必要的packages-->
<%@ page import="java.io.*"%>
<%@ page import="java.util.*"%>
<!--告訴編譯器使用SQL包-->
<%@ page import="java.sql.*"%>
<!--設置中文輸出-->
<%@ page contentType="text/html; charset=GB2312" %>oracle
<html>
<head>
<title>mySQL test</title>
</head>
<body>
<%
Connection con;
Statement stmt;
ResultSet rs;app
//加載驅動程序,下面的代碼爲加載MySQL驅動程序
Class.forName("com.mysql.jdbc.Driver");webapp
//註冊MySQL驅動程序
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//用適當的驅動程序鏈接到數據庫
//String dbUrl = "jdbc:mysql://localhost:3306/mysql?useUnicode=true&characterEncoding=GB2312";
//String dbUser = "root"; //用戶名
//String dbPwd = "abcd1001"; //密碼
//創建數據庫鏈接
//con = java.sql.DriverManager.getConnection(dbUrl, dbUser, dbPwd);
String dbUrl ="jdbc:mysql://localhost:3306/mysql?user=root&password=abcd1001&useUnicode=true&characterEncoding=gb2312";
con = DriverManager.getConnection(dbUrl);
//建立一個JDBC聲明
stmt = con.createStatement();
//增長新記錄
//stmt.executeUpdate("INSERT INTO books (id,name,title,price) VALUES ('999','Tom','Tomcat Bible',44.5)");
//查詢記錄
rs = stmt.executeQuery("select * from user");
//輸出查詢結果
out.println("<table border=1 width=400>");
while (rs.next())
{
String col1 = rs.getString(1);
String col2 = rs.getString(2);
String col3 = rs.getString(3);
String col4 = rs.getString(4);
//打印所顯示的數據
out.println("<tr><td>"+col1+"</td><td>"+col2+"</td><td>"+col3+"</td><td>"+col4+"</td></tr>");
}
out.println("</table>");
//關閉數據庫連結
rs.close();
stmt.close();
con.close();
%>
</body>
</html>
程序代碼2:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url ="jdbc:mysql://localhost/chclyb?user=root&password=abcd1001&useUnicode=true&characterEncoding=8859_1";
//testDB爲你的數據庫名
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
第一個字段內容爲:<%=rs.getString(1)%>
第二個字段內容爲:<%=rs.getString(2)%><br>
<%}%>
<%out.print("數據庫操做成功,恭喜你");%>
<%rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
個人以上 2 段代碼都能工做。注意以上2段代碼的 Class.forName(…) 部分的不一樣:
Class.forName("com.mysql.jdbc.Driver"); //在程序代碼1中
Class.forName("org.gjt.mm.mysql.Driver").newInstance(); //在程序代碼2中
程序代碼 2 中的代碼是爲了兼容 mySQL 的老版本而保留的,如今都用 Class.forName("com.mysql.jdbc.Driver"); 驅動了。
以上的代碼拷貝到 Tomcat 的虛擬路徑下能成功執行嗎?恐怕不行。由於還有個重要的事情沒有作:須要給 Tomcat5.0 安裝 mySQL 的 JDBC 驅動程序!這個問題,網上的大多數文章都沒講,給貼一段鏈接 mySQL 的代碼,就讓咱們去鏈接數據庫了,連不上的!
mySQL 的驅動須要從網上下載,下載完畢,拷貝到 E:/Tomcat 5.0/common/lib 路徑下(我下載下來文件名是mysql-connector-java-3.2.0-alpha-bin.jar),把 Tomcat 服務來個Stop/start 安裝就結束了。文件名能夠改的,不影響使用,由於這是個壓縮包,Tomcat 能自動認識到包裏的內容,並把有關類註冊進來。前面說的 Class.forName(…) 部分的不一樣能夠在包裏找到答案,由於包里正有 com/mysql/jdbc/Driver 和 org/gjt/mm/mysql/Driver 2 個路徑,下面放的類文件是同樣的。
用 Jsp 鏈接 Oracle 數據庫測試,就好說了,可是一樣必須在 E:/Tomcat 5.0/common/lib 路徑下拷貝和註冊 Oracle 的 JDBC 驅動,這個驅動文件不必在網上四處打聽,顯得很菜的樣子(我當初就是這樣!),這個文件在 Oracle 的 E:/oracle/ora90/jdbc/lib 路徑下,文件名是 classes12.jar。個人示例代碼以下:
程序代碼3:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%
Class.forName("oracle.jdbc.driver.OracleDriver"); //.newInstance();
String url="jdbc:oracle:thin:@10.0.1.1:1521:mydb"; //mydb爲數據庫的SID,10.0.1.1 爲 數據庫服務器 IP
String user="system";
String password="abcd1001";
Connection conn= DriverManager.getConnection(url, user, password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from test"; //test 是表名,要先創建這個表,再送幾條記錄
ResultSet rs=stmt.executeQuery(sql);
while(rs.next())
{
%>
第一個字段內容爲:<%=rs.getString(1)%>
第二個字段內容爲:<%=rs.getString(2)%> <br>
<%
}
out.print("數據庫操做成功,恭喜。");
rs.close();
stmt.close();
conn.close();
%>
</body>
</html>
關於 Oracle 數據庫:我安裝的是 Oracle9i 企業版(Windows server 2003 下),安裝完畢後,Oracle 將佔用 80 端口運行自帶的 Apache1.3 Web服務器,還佔用 8080 端口運行 TNSLSNR 服務(TNSLSNR.EXE文件在 X:/oracle/ora90/BIN 下),提供一些 log 及文檔。因此建議安裝 Oracle 的機器就不要安裝 IIS 了,若是 IIS 先啓動起來,Oracle 的 http 服務就不能啓動了。也不能佔用 8080 端口。問題是若是還安裝 Tomcat,Tomcat 默認正好用的是 8080 端口,因此安裝 Tomcat 時最好把端口設成別的值,如 8088。
Oracle 裏創建表,必須先創建表空間,還能夠加一個數據文件(也能夠不加,由於創建表空間時默認已經建了一個數據文件。之後能夠視須要再添加)。再創建一個用戶(之後的「方案」名和用戶名同樣)。創建表時,要選擇表空間和方案名,最好把表創建在對應的方案下,把他們對應起來,之後好管理。若是把表創建在別的「方案」下,用 SQL*plus 語句訪問時要用 [方案].[表名]的格式。
稀稀拉拉說了這麼多,是個人一些筆記類的東西。有些東西真的不太懂的,由於剛剛接觸了一些非 Microsoft 的東西。但願高手指出我說的和理解不對的地方。新手也不要徹底接收個人東西,多想一下,看在您的環境下,我說的能不能調試成功。
個人其餘文章在個人我的網站上:「十萬個爲何」電腦學習網:http://www.why100000.com。