My JSP的基礎示例
安裝和測試Tomcat
安裝Tomcat后,就可以得到下列目錄結構:
Jakarta-tomcat-
bin 可執行文件
common 內部類和web程序共享的類
classes 共享的Java類
endorsed 已注釋的Java類
lib 共享Jar文件
conf 配置文件
logs 服務器的記錄文件
server Tomcat內部的類
shared 共享的文件
temp 臨時的文件
webapps web程序的目錄
work 臨時文件的臨時目錄
對web開發人員而言,最中要的目錄是webapps,瀏覽器要讀取的文件都存放在這里。我們首要的目標是讓Tomcat能運作,在運行Tomcat之前,必須先設定環境變量:
JAVA_HOME——設為java的安裝目錄,也就是java bin目錄的上層目錄。
CATALINA_HOME——設為Tomcat的安裝目錄,也就是Tomcat bin目錄的上層目錄。
運行Tomcat。現在,Tomcat在運行了,打開瀏覽器,連接到http://localhost:8080,應該會打開Tomcat的歡迎頁面。這個URL里頭的“localhost”就是指本地的網頁服務器(對應到IP地址127.0.0.1),而8080是端口號,網頁服務器通常是用80端口,但是Tomcat為類避免和其他服務器沖突,于是改用8080。
建立新的Web服務器目錄:
可以將Tomcat服務器所在計算機的某個目錄設置為一個Web服務目錄,并為該Web服務目錄指定虛擬目錄,即隱藏Web服務目錄的實際位置,用戶只能通過虛擬目錄訪問Web服務目錄中的Jsp頁面。通過修改Tomcat服務器安裝目錄下conf目錄中的server.xml文件來設置新的Web服務器目錄。假設要將D:\MyJsp\star和C:\sun作為Web服務目錄,并讓用戶分別使用hello和moon虛擬目錄訪問web服務目錄D:\MyJsp\star和C:\sun下的Jsp頁面,應先應用記事本打開文件夾Tomcat\conf中的主配置文件server.xml,找到出現</HOST>的部分(server.xml文件尾部),然后在</HOST>的前面加入如下內容:
<Context path = “/hello” docbase = “D:\MyJsp\star” debug = “0” reloadable = “true”/>
<Context path = “/moon” docbase = “C:\sun” debug = “0” reloadable = “true”/>
注:xm文件區分大小寫的。
主配置文件server.xml修改后,必須重新啟動Tomcat服務器。這樣,用戶就可以將JSP頁面存放到目錄D:\MyJsp\star或C:\sun中,可以通過虛擬目錄hello或moon訪問JSP頁面,如將A.jsp放在目錄D:\MyJsp\star或C:\sun中,應在瀏覽器地址欄中輸入http://127.0.0.1:8080/hello/A.jsp或http://127.0.0.1:8080/moon/A.jsp。
設置端口號:
8080是Tomcat服務器的默認端口號。我們可以通過修改Tomcat服務器的conf目錄下的主配置文件server.xml來更改端口號。用記事本代開server.xml文件找到如下部分:
<Connector port = “8080” maxHttpHeaderSize = “8192” maxThreads = “150” minSpareThreads = “25” maxSpareThreads = “75” enableLookups = “false” redirectPort = “8443” acceptCount = “100” connectionTimeout = “20000” disableUploadTimeout = “true”>
將其中的port=”8080”更改為新的端口號既可,如改為”9080”等。如果Tomcat服務器所在的計算機沒有啟動其他占有端口80的網絡程序,也可以將Tomcat服務器端口號設置為80,這樣用戶在訪問JSP頁面時可以省略端口號,”http://127.0.0.1/first.jsp”。(這樣寫是因為我們是把firt.jsp非那根在ROOT根目錄中,所以沒有頂級目錄,直接就是頁面文件)
開發JSP:
以eclipse來編寫不需要編譯的JSP文件按,是最簡單的。這些文件可以把java程序包在“小腳本元素”(Scriptlet element)、“聲明元素”(declaration element)以及“表達式元素”(expression element)。最常用的是小腳本元素,可以把好幾行的java程序包起來。小腳本元素的開頭和結尾是“<%”和“%>”這兩種標記符號,例如下例。你可以用out對象的println()方法把文字送回給瀏覽器。示例代碼myJsp.jsp:
- <html>
- <head>
- <title>A Web Page</title>
- </head>
- <body>
- <h1>Working With JSP</h1>
- <%out.println("Using JSP");%>
- </body>
- </html>
要怎么安裝myJsp.jsp,Tomcat才能將之提供給客戶端的瀏覽器?示例:我們在Tomcat的webapps目錄下另建一個名為myJspc的子目錄,而這個新的myJspc目錄也必須有一個名為WEB-INF的子目錄,其中再含classes和lib這兩個子目錄:
Webapps
myJspc 存放范例的文件夾
WEB-INF 有關web應用程序的信息
classes web應用程序是用的java類
lib web應用程序是用的jar文件
此時,WEB-INF、classes、lib目錄都是空的,但是一定要存在,不然Tomcat不會把myJspc目錄視為存儲網頁文件的有效目錄。創建這些目錄之后,將myJsp.jsp存放到myJspc目錄下。然后,如果Tomcat正在運行,先關掉,在重新啟動。
要察看Jsp文件,可以讓瀏覽器連接到http://localhost:8080/myJspc/myJsp.jsp。Tomcat會把Jsp的java程序代碼轉譯成Servlet的形式,編譯后,再運行它,然后,你就能看到網頁展示的結果。
開發Servlet:
Jsp服務器實際上是建立在Java Servlet的基礎上,運行前先轉譯成Servlet。Servlet是純粹的java程序,下面是一個Servlet的范例myServlet.java:
- package org.eclipsebook.ch09;
- import java.io.*;
- import javax.servlet.*;
- import javax.servlet.http.*;
- public class myServlet extends HttpServlet{
- private static final long serialVersionUID = 1L;
- public void doGet(HttpServletRequest request,
- HttpServletResponse response)
- throws IOException, ServletException
- {
- response.setContentType("text/html");
- PrintWriter out = response.getWriter();
- out.println("<HTML>");
- out.println("<HEAD>");
- out.println("<TITLE>");
- out.println("A Servlet Example");
- out.println("</TITLE>");
- out.println("</HEAD>");
- out.println("<BODY>");
- out.println("<H1>");
- out.println("Working With Servlets");
- out.println("</H1>");
- out.println("Using servlets");
- out.println("</BODY>");
- out.println("</HTML>");
- }
- public static class test{
- public static void main(String[] args){
- System.out.println("inner class test.");
- }
- }
- }
像以上的Servlet都需要基于javax.servlet.http.HttpServlet類,而且只是改寫doGet()方法。這個doGet()方法會 一個請求對象(request object),其中的數據包括了瀏覽器的種類及來自任何HTML控件的數據。另外還有一個響應對象(response object),可以讓你把想響應的結果返回給客戶端瀏覽器。在此例中,我們要以response對象的getWriter()方法來取得printWriter對象,以之來響應瀏覽器,而且以PrinterWriter對象的println()方法把HTML送回給瀏覽器。接下來的步驟是:首先,創建一個myServlet項目,再把上列程序輸入該項目中,保存成myServlet.java,包名是org.eclipsebook.servlet。為類滿足import語句所導入的內容,我們要把Tomcat隨附的servlet.jar加入到編譯路徑中。你可以在jakarta-tomcat\common\lib\servlet.jar找到servlet.jar。將其加進編譯路徑中。
Webapps
myServlet
WEB-INF
classes
org
eclipsebook
servlet Servlet 程序所在的目錄
lib
為了讓Tomcat知道這個新類是Servlet,你要用一個web.xml文件,保存該web程序的配置文件。在web.xml文件中我們用兩個xml元素——<servlet>和<servlet-mapping>把URL myServlet連接到此Servlet實際的java程序。web.xml內容如下:
<?xml version="1.0" encoding = "ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Example Application</display-name>
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>org.eclipsebook.servlet.myServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myServlet</servlet-name>
<url-pattern>org.eclipsebook.servlet.myServlet</url-pattern>
</servlet-mapping>
</web-app>
輸入上述xml文件的程序代碼,保存web.xml,將之復制到WEB-INF目錄下。最后,關閉Tomcat,重新啟動它。http://localhost:8080/myServlet/org.eclipsebook.servlet.myServlet讓瀏覽器連接到。
【編輯推薦】