級別:初級
基本內容
首先是用J2SE+TOMCAT搭建開發平臺,然后會用實例分別對javabean和servlet進行測試,同時也會談到一些中文處理上的問題。文章內容可能會有點雜亂和零散,但這也是學習jsp最基礎的知識,要想學好jsp還得靠自己多努力學習。
為什么要寫這樣一篇文章?
認識我的朋友可能會知道,我平時只是寫和翻譯一些J2ME方面的開發的文章,而我為什么要寫一篇關于JSP入門的文章呢?原因有二,其一,最近小弟也在學習一些與web相關的知識,有不少收獲和心得,想告訴大家,好讓后來者少走彎路,其二,有位好友最近正準備學習jsp方面的知識,便有了寫這篇文章的想法。由于小弟水平有限,如果有任何錯誤和問題,請及時與我聯系e-mail:numenzq@yahoo.com.cn,我好做出糾正和回復?,F在就言歸正傳,進入正題。
系統開發平臺配置
1、 Windows2000 SP5
2、 J2SE
下載地址:http://java.sun.com/j2se/1.5.0/download.jsp
3、 TOMCAT
下載地址:http://tomcat.apache.org/download-55.cgi#5.5.15
如果你已經安裝過上述軟件的舊版本,則可以跳過這個步驟看下面的文章,不過我建議你盡量使用最近發布的版本,其好處就不用我多說了吧。如果你還沒安裝上面的軟件,請使用我上面給出的地址下載該軟件。下載完后,根據提示安裝好相應軟件即可,tomcat是壓縮吧,直接解壓后便可以使用。搭建一個簡單的平臺就這么簡單,你已經開始佩服自己了吧,呵呵~。下面我們將了解如何配置環境變量的。
環境變量配置
大家都應該知道,編寫JAVA程序需要配置環境變量,不過這是一個簡單的工作,就讓我們輕松的來完成它吧,我們找到修改環境變量的對話框,然后把下面的配置添加進去,當然你也可以在命令行里添加這些配置,不過我相信大家還是愿意使用圖形界面哈。不過大家得注意的是,我假設把上面的軟件都是直接安裝在D:/跟目錄下的。
JAVA_HOME=D:/JAVA/jdk
TOMCAT_HOME=D:/apache-tomcat-
path=%JAVA_HOME%/bin
classpath=.;%JAVA_HOME%/lib/rt.jar;%JAVA_HOME%/lib/tools.jar;%TOMCAT_HOME%/common/lib/servlet-api.jar
測試
現在萬事俱備,只差編寫代碼和測試了。在實際編碼之前,我們還是測試一下我們這個開發平臺是否正常。我們用經典的hello world來測試J2SE,代碼如下:
public class helloworld {
public helloworld() {}
public static void main(String[] args) {
System.out. } } 我們把上面這個代碼保存在D:/根目錄下,在命令行下編譯和運行該程序,如果能輸出“hello,你好!”則說明你J2SE安裝和環境設置沒有問題。提示:你也可以使用java –version來檢查你的程序是否安裝正確。 現在我們來測試Tomcat吧,在Tomcat安裝目錄下的bin文件夾里運行startup.bat,啟動Tomcat,然后在瀏覽器里鍵入:http://localhost:8080,只要能看見那只長得并不怎么樣的貓就行了。這樣一來,我們既肯定了之前的工作,又可以安心的編碼了。如果上面兩步測試存在問題的話,你就得認真檢查一下了。 實例 終于開始編碼了,現在我們將會編寫helloBean.java和helloServlet.java文件,很顯然,兩個文件是分別通過javabean和servlet的方式在頁面上顯示“hello,你好!”的。先讓我們來看看使用javabean的實現方法吧。 其實javabean就是一個普通的java類文件,不過需要滿足一些特性,比如說:javabean文件里需要一個本類的無參構造函數,屬性的get/set方法等。關于javabean的更詳細的資料可以參考其他書籍。其實可以把javabean理解為一個提供方法的類,然后在jsp里創建該類的對象,通過這個對象來調用相應的方法而已。Javabean就這么簡單。為了讓大家容易理解,下面是一個簡單的javabean文件。 //helloBean.java package hello; public class helloBean { private String str = "hello,你好!"; public helloBean() {} public String getStr() { return str; } public void setStr(String _str) { str = _str; } } 在上面的程序中,helloBean有一個屬性str,并有與該屬性配對的getStr和setStr方面。既然之前說是要在jsp里顯示str的內容,那么應該有一個jsp頁面來調用它吧,下面我們就來看這個jsp頁面是如何實現的: 上面的代碼很短,但已經足夠實現我們所需要的操作了,關鍵語句在標簽里,正如我們之前所說,先創建一個名為helloBean的對象,說明它的使用范圍和類文件所在地址;接下來則是調用getStr方法獲得str的值并顯示;最后修改str的值后,再次讀取該值并顯示在屏幕上。 不過怎樣來測試現有的代碼呢?這個問題很簡單,我們使用的web服務器是tomcat,我們在tomcat在進入webapps目錄,為了不和其他項目混淆,我們先為這個項目建立一個文件夾,我取名字為jsp-test;然后在jsp-test里建立WEB-INF文件夾,這個文件夾里存放著這個項目的類文件(classes)、庫文件(lib)和配置文件(web.xml)等。因為當客戶請求該項目時tomcat服務器會自動根據配置文件在WEB-INF文件下尋找相應的文件,并做出響應。好了,我們現在就試試helloBean,我們得先把helloBean.java編譯成helloBean.class文件,如剛才所說,我們把編譯好的helloBean.class文件存放到WEB-INF目錄下,起目錄結構為:D:/apache-tomcat- 其實servlet跟javabean一樣,也是一個java類文件,并滿足一些特殊要求,如:需要繼承Servlet或HtppServlet類等。我們主要是是servlet的GET和POST方法來響應頁面請求。一個簡單的servlet代碼如下: //helloServlet.java package hello; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class helloServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out=response.getWriter(); out.println(""); out.println(""); out.println(""); out.println(""); out.println(""); out.println("hello,你好!"); out.println(""); out.println(""); out.flush(); } } 可能你也注意到了,helloServlet除了繼承了HttpServlet類外,不管是POST還是GET方法時,都是在doPost方法中實現的,這些為了程序的簡單易讀。當然了,你也可以根據不同的要求來修改代碼。還值得注意的是,輸出語句里的信息其實就是一個基本的Html代碼,這也是響應給客戶端的信息。同樣的,要運行該servlet也需要一個jsp來實現:
這個jsp代碼很簡單,就是當表單里的按鈕按下時,通過post方法響應action。還記得先前我說過的配置文件嗎?因為調用servlet前需要在配置文件里說明servlet類存放的地址和映射地址,所以我們編寫一個web.xml文件如下:該文件應存放在WEB-INF目錄下。
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
現在來測試我們的servlet吧!怎么樣,能看到“hello,???”,那就恭喜你了,你已經測試成功了。既然是測試成功了,那為什么看不到中文的“你好”呢?這個很簡單,只需要修改一個地方就是了,我們打開之前的helloServlet類,在doPost方法的最前面加上:
response.setContentType("text/html;charset=gb2312");
這樣就ok了,你把修改后的helloServlet.java編譯后,在啟動tomcat運行看看效果吧,現在就能顯示中文了:)。雖然在上例的中文問題解決了,但是并沒有用傳遞參數,如果用GET/POST方法來傳遞參數會是什么樣的結果呢?其實大家不用擔心,關于這個問題,我覺得ponky在“Tomcat下中文的徹底解決”一文里講得以已經很清楚了,原文地址是:http://www.matrix.org.cn/resource/article/1/1098.html,其實很簡單的,如果通過get方法來傳遞參數,則需要在D:/apache-tomcat-
URIEncoding="GBK",添加后為:
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
URIEncoding="GBK" />
如果是使用post方法的話,則需要把
D:/apache-tomcat-
D:/apache-tomcat-
然后在web.xml文件里添加如下代碼:
這樣就可解決中文問題了,下面是ponky寫的測試代碼,在這里我們就借用來測試一下。
你提交了:
如果以上所有步驟都成功,能得到正常的結果話,那就得恭喜你了,你就可以根據你的要求來寫你的代碼:~)為了大家方便,我這里把源文件也傳上來提大家下載。
下載源文件
總結
這篇文章是關于jsp入門的基本文章,對jsp接觸不多或不了解的人,應該會有幫助。這些代碼都很簡單,是為了方便大家了解。如果大家想深入學習相關知識,可以參考其他教程和文章。另外,為了幫我的朋友入門,下一篇文章將會講到jsp與數據庫連接的相關知識。希望大家多多支持。
(出處:http://www.49028c.com)
新聞熱點
疑難解答