教你如何配置自已的Java環(huán)境
工欲善其事,必先利其器。在運(yùn)行JSP程序之前,必須做一些準(zhǔn)備工作。首先要有一個(gè)WEB伺服器,Apache或IIS都可以;其次要有一個(gè)執(zhí)行Java程序的的編譯器;再次還要有一個(gè)支持JSP的引擎,目前有很多引擎可供選擇,例如tomcat、weblogic、resin等。
本文介紹的留言板程序在作者的機(jī)器上可以順利運(yùn)行,詳細(xì)Java環(huán)境配置如下:
操作系統(tǒng): Windows 2000 SERVER
Java編譯器: JDK1.3
WEB伺服器: Apache1.13.2 + Tomcat3.1引擎
數(shù)據(jù)庫: Access 2000
Apache和Tomcat安裝后的配置有點(diǎn)挑戰(zhàn)性,下面是我的安裝過程:
1).安裝JDK1.3
a).雙擊 J2SDK1_3_0-WIN.exe 文件,安裝到 C:\jdk1.3 目錄下;
b).更新下列環(huán)境變量,把
C:\jdk1.3\lib\tools.jar;C:\jdk1.3\lib\dt.jar;C:\myclasses加入到CLASSPATH中。
更新方法:右擊 我的電腦-屬性-高級-環(huán)境變量;
c).重起計(jì)算機(jī)。
2).安裝Apache1.13.2
a).雙擊 apache_1_3_12_win32.exe 文件,安裝到 C:\Apache 目錄下;
b).用記事本修改 C:\Apache\conf\httpd.conf:
I).PORT:設(shè)置Apache Web Server運(yùn)行時(shí)使用的端口號,我把它改成Port 8080,以后在瀏覽器上輸入http://ip:8080 就可以訪問到Apache Web Server服務(wù)器;
II).SERVERNAME:我把SERVERNAME設(shè)置為202.38.126.134(這是我的機(jī)器的IP地址);
III).Apache安裝完后在"開始-程序"菜單組中多了Apache Web Server菜單組,運(yùn)行其中的Install Apache as a service,這樣的話在“開始-設(shè)置-控制面板-服務(wù)”中就多了一個(gè)名為Apache的服務(wù),您可以用它來啟動或停止Apache服務(wù);
IV).打開“開始-設(shè)置-控制面板-服務(wù)”,選Apache,按"開始"啟動Apache服務(wù)。
c).在IE中輸入http://ip:8080 (ip是你使用的機(jī)器的ip地址),Apache運(yùn)行否?
3).安裝Tomcat3.1
a).用WinZIP把tomcat.zip解壓縮到一個(gè)目錄下,***弄成C:/tomcat;
b).打開C:\Apache\conf\httpd.conf文件,在該文件***加上類似這樣一句話:
Include C:/tomcat/conf/tomcat.conf;
c).修改Tomcat運(yùn)行的端口號,注意Tomcat自己有一個(gè)獨(dú)立的HTTP服務(wù)器,它必須使用一個(gè)還未被使用的端口號,我使用PORT:80,在C:\tomcat\conf\server.xml中修改;
d).將SET TOMCAT_HOME=c:\tomcat
- SET JAVA_HOME=c:\jdk1.3 加到 C:\tomcat\bin\tomcat.bat文件中,修改完的文件如下:
- ......
- rem Guess TOMCAT_HOME if it is not present
- SET TOMCAT_HOME=c:\tomcat
- SET JAVA_HOME=c:\jdk1.3 if not "%TOMCAT_HOME%" == "" goto gothome
下面還有......
e).雙擊C:\tomcat\startup.bat啟動Tomcat;
f).在瀏覽器上輸入http://ip/,如果能看到Tomcat Version 3.1這一頁,就表示Tomcat安裝成功了。
到此準(zhǔn)備工作也就差不多了,***在Tomcat目錄下創(chuàng)建一個(gè)目錄,用來存放編寫的程序,具體情況如下:
C:\tomcat\fox --存放 .html和 .jsp 文件
C:\tomcat\fox\images --存放圖片文件
C:\tomcat\fox\global --存放數(shù)據(jù)庫
C:\tomcat\fox\WEB-INF\classes --存放JAVA類文件
為了使這個(gè)目錄下的JSP程序能順利運(yùn)行,還需要在 C:\tomcat\conf\server.xml文件中加上幾行代碼:
- <Context path="/fox" docBase="fox"
- defaultSessionTimeOut="30"isWARExpanded="true"
- isWARValidated="false" isInvokerEnabled="true"
- isWorkDirPersistent="false"/>
添加完代碼后的server.xml文件看起來如下所示:
- ......
- <Context path="" docBase="webapps/ROOT" debug="0" reloadable="true" >
- </Context>
- ?。糃ontext path="/redfox" docBase="redfox" defaultSessionTimeOut="30" isWARExpanded="true" isWARValidated="false" isInvokerEnabled="true" isWorkDirPersistent="false"/>
- <Context path="/test" docBase="webapps/test" debug="0" reloadable="true" >
- ?。?Context>
下面還有......
現(xiàn)在編寫一個(gè)名為 test.jsp的程序,存于 C:\tomcat\fox\test.jsp
- <html>
- ?。糱ody>
- <%java.util.Date date=new java.util.Date(); %>
- Hello! the time is now
- ?。?out.println(date);%>
- ?。?body>
- ?。?html>
在IE中鍵入 http://ip/fox/test.jsp,如果能看到當(dāng)前的時(shí)間,那么恭喜:可以開始編寫留言板程序了。
一.創(chuàng)建數(shù)據(jù)庫
1).打開Access2000,創(chuàng)建一個(gè)新的數(shù)據(jù)庫,我將這個(gè)數(shù)據(jù)庫命名為 foxdb.mdb,存在C:\tomcat\fox\global\foxdb.mdb。接下來在 eagle.mdb中創(chuàng)建一個(gè)表,命名為 foxtable,表中有五個(gè)字段,全為文本格式:
其中“URL”用于記錄留言者的 IP 。至于各字段的長度,我把“留言”定為200,其它四個(gè)各為20。
2).指定ODBC數(shù)據(jù)源,其名為foxdb ,指向 C:\tomcat\fox\global\foxdb.mdb。
二.編寫用戶的留言界面 foxnote.html,存于C:\tomcat\fox\foxnote.html:
- <html>
- ?。糱ody>
- ?。糵orm method="post" action="foxnoteinsert.jsp">
- ?。糱r>姓名:
- ?。糹nput name=username size=15 value="">
- ?。糱r>郵箱:
- ?。糹nput name=email size=15 value="">
- ?。糱r>留言:
- ?。糱r>
- ?。紅extarea name=doc rows="5" cols="40">
- ?。?textarea>
- ?。糱r>
- ?。糹nput type=submit value="遞交">
- ?。糹nput type=reset value="重填">
- ?。?form>
- </bocy>
- ?。?html>
三.編寫 foxnoteinsert.jsp ,將用戶的留言寫進(jìn)數(shù)據(jù)庫表中:
- <body bgcolor="#FFFFFF">
- ?。?@ page import="java.sql.*,MyUtil,java.util.*"%>
- ?。?
- Connection con=null;
- String username=MyUtil.gb2312ToUnicode(request.getParameter("username"));
- String email=MyUtil.gb2312ToUnicode(request.getParameter("email"));
- String doc=MyUtil.gb2312ToUnicode(request.getParameter("doc"));
- String url=request.getRemoteAddr();
- try {
- Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con=DriverManager.getConnection("jdbc:odbc:foxdb","","");
- String str="insert into foxtable values(?,?,?,?);";
- PreparedStatement pstmt=con.prepareStatement(str);
- pstmt.setString(1,username);
- pstmt.setString(2,email);
- pstmt.setString(3,doc);
- pstmt.setString(4,url);
- pstmt.executeUpdate();
- pstmt.close();
- con.close();
- }
- catch(Exception e) {
- out.println(e.getMessage());
- }
- %>
這個(gè)程序中有一些要說明的地方,就是其中用到了一個(gè) JavaBean :MyUtil.class 。
MyUtil 的作用是字符串之間的轉(zhuǎn)換。必需關(guān)注的是JSP的字符串以Unicode碼表示,而留言板界面的表單卻是以 gb2312 碼表示。所以將用戶的留言寫進(jìn)數(shù)據(jù)庫還需要碼間的轉(zhuǎn)換。如果不轉(zhuǎn)換而把留言直接寫到數(shù)據(jù)庫表,則會產(chǎn)生亂碼。下面是 MyUtil 的原代碼,存于C:\tomcat\fox\WEB-INF\classes\MyUtil.java ,編譯后的MyUtil.class文件也存于此?! ?/P>
- import java.io.*;
- public class MyUtil{
- public static String gb2312ToUnicode(String s){
- try{
- return new String(s.getBytes("ISO8859_1"),"gb2312");
- }
- catch(UnsupportedEncodingException uee){
- return s;
- }
- }
- public static String unicodeTogb2312(String s){
- try{
- return new String(s.getBytes("gb2312"),"ISO8859_1");
- }
- catch(UnsupportedEncodingException uee){
- return s;
- }
- }
- }
四.編寫 foxnoteview.jsp ,用于瀏覽數(shù)據(jù)庫表中已有的留言,存于C:\tomcat\fox\foxnoteview.jsp ,代碼如下:
- <html>
- ?。糱ody>
- ?。?@ page contentType="text/html;charset=gb2312" language="java" import="java.sql.*"%>
- <%
- Connection con=null;
- try
- {
- Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
- con=DriverManager.getConnection("jdbc:odbc:foxdb","","");
- Statement statement=con.createStatement();
- ResultSet rs=statement.executeQuery("select * from foxtable");
- %>
- ?。紅able border="1" width="100%" cellspacing="0" cellpadding="0" align="center" bordercolorlight="#CCCCFF" bordercolordark="#FFFFFF">
- <tr bgcolor="#FFFFFF">
- ?。紅d width="15%" height="25" align="center"><i>作者</i></td>
- <td width="28%" height="25" align="center"><i>發(fā)表時(shí)間</i></td>
- ?。紅d width="22%" height="25" align="center"><i>Email</i></td>
- <td width="35%" height="25" align="center"><i>留言內(nèi)容</i></td>
- ?。?
- while(rs.next()){
- out.println("<TR><td align=center><font size=2 color=#999999>"+rs.getString("作者")+"</TD>");
- out.println("<TD><font size=2color=#999999>"+rs.getString("Email")+"</font></TD>");
- out.println("<TD><font size=2 color=#999999>"+rs.getString("留言")+"</font></TD>");
- out.println("<TD><font size=2 color=#999999>"+rs.getString("URL")+"</font></TD></TR>");
- }
- rs.close();
- con.close();
- }
- catch(Exception e)
- {
- out.println(e.getMessage());
- }
- %>
- ?。?table>
- ?。?body>
- </html>
到此,整個(gè)留言板程序就算是完工了。留言板在數(shù)據(jù)庫應(yīng)用中比較簡單,但是加以變化則可以編寫出各種各樣的應(yīng)用程序,操作各種各樣的數(shù)據(jù)庫^_^
【編輯推薦】