My JSP的基礎(chǔ)示例
安裝和測(cè)試Tomcat
安裝Tomcat后,就可以得到下列目錄結(jié)構(gòu):
Jakarta-tomcat-
bin 可執(zhí)行文件
common 內(nèi)部類和web程序共享的類
classes 共享的Java類
endorsed 已注釋的Java類
lib 共享Jar文件
conf 配置文件
logs 服務(wù)器的記錄文件
server Tomcat內(nèi)部的類
shared 共享的文件
temp 臨時(shí)的文件
webapps web程序的目錄
work 臨時(shí)文件的臨時(shí)目錄
對(duì)web開發(fā)人員而言,最中要的目錄是webapps,瀏覽器要讀取的文件都存放在這里。我們首要的目標(biāo)是讓Tomcat能運(yùn)作,在運(yùn)行Tomcat之前,必須先設(shè)定環(huán)境變量:
JAVA_HOME——設(shè)為java的安裝目錄,也就是java bin目錄的上層目錄。
CATALINA_HOME——設(shè)為Tomcat的安裝目錄,也就是Tomcat bin目錄的上層目錄。
運(yùn)行Tomcat。現(xiàn)在,Tomcat在運(yùn)行了,打開瀏覽器,連接到http://localhost:8080,應(yīng)該會(huì)打開Tomcat的歡迎頁面。這個(gè)URL里頭的“l(fā)ocalhost”就是指本地的網(wǎng)頁服務(wù)器(對(duì)應(yīng)到IP地址127.0.0.1),而8080是端口號(hào),網(wǎng)頁服務(wù)器通常是用80端口,但是Tomcat為類避免和其他服務(wù)器沖突,于是改用8080。
建立新的Web服務(wù)器目錄:
可以將Tomcat服務(wù)器所在計(jì)算機(jī)的某個(gè)目錄設(shè)置為一個(gè)Web服務(wù)目錄,并為該Web服務(wù)目錄指定虛擬目錄,即隱藏Web服務(wù)目錄的實(shí)際位置,用戶只能通過虛擬目錄訪問Web服務(wù)目錄中的Jsp頁面。通過修改Tomcat服務(wù)器安裝目錄下conf目錄中的server.xml文件來設(shè)置新的Web服務(wù)器目錄。假設(shè)要將D:\MyJsp\star和C:\sun作為Web服務(wù)目錄,并讓用戶分別使用hello和moon虛擬目錄訪問web服務(wù)目錄D:\MyJsp\star和C:\sun下的Jsp頁面,應(yīng)先應(yīng)用記事本打開文件夾Tomcat\conf中的主配置文件server.xml,找到出現(xiàn)</HOST>的部分(server.xml文件尾部),然后在</HOST>的前面加入如下內(nèi)容:
<Context path = “/hello” docbase = “D:\MyJsp\star” debug = “0” reloadable = “true”/>
<Context path = “/moon” docbase = “C:\sun” debug = “0” reloadable = “true”/>
注:xm文件區(qū)分大小寫的。
主配置文件server.xml修改后,必須重新啟動(dòng)Tomcat服務(wù)器。這樣,用戶就可以將JSP頁面存放到目錄D:\MyJsp\star或C:\sun中,可以通過虛擬目錄hello或moon訪問JSP頁面,如將A.jsp放在目錄D:\MyJsp\star或C:\sun中,應(yīng)在瀏覽器地址欄中輸入http://127.0.0.1:8080/hello/A.jsp或http://127.0.0.1:8080/moon/A.jsp。
設(shè)置端口號(hào):
8080是Tomcat服務(wù)器的默認(rèn)端口號(hào)。我們可以通過修改Tomcat服務(wù)器的conf目錄下的主配置文件server.xml來更改端口號(hào)。用記事本代開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”更改為新的端口號(hào)既可,如改為”9080”等。如果Tomcat服務(wù)器所在的計(jì)算機(jī)沒有啟動(dòng)其他占有端口80的網(wǎng)絡(luò)程序,也可以將Tomcat服務(wù)器端口號(hào)設(shè)置為80,這樣用戶在訪問JSP頁面時(shí)可以省略端口號(hào),”http://127.0.0.1/first.jsp”。(這樣寫是因?yàn)槲覀兪前裦irt.jsp非那根在ROOT根目錄中,所以沒有頂級(jí)目錄,直接就是頁面文件)
開發(fā)JSP:
以eclipse來編寫不需要編譯的JSP文件按,是最簡(jiǎn)單的。這些文件可以把java程序包在“小腳本元素”(Scriptlet element)、“聲明元素”(declaration element)以及“表達(dá)式元素”(expression element)。最常用的是小腳本元素,可以把好幾行的java程序包起來。小腳本元素的開頭和結(jié)尾是“<%”和“%>”這兩種標(biāo)記符號(hào),例如下例。你可以用out對(duì)象的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才能將之提供給客戶端的瀏覽器?示例:我們?cè)赥omcat的webapps目錄下另建一個(gè)名為myJspc的子目錄,而這個(gè)新的myJspc目錄也必須有一個(gè)名為WEB-INF的子目錄,其中再含classes和lib這兩個(gè)子目錄:
Webapps
myJspc 存放范例的文件夾
WEB-INF 有關(guān)web應(yīng)用程序的信息
classes web應(yīng)用程序是用的java類
lib web應(yīng)用程序是用的jar文件
此時(shí),WEB-INF、classes、lib目錄都是空的,但是一定要存在,不然Tomcat不會(huì)把myJspc目錄視為存儲(chǔ)網(wǎng)頁文件的有效目錄。創(chuàng)建這些目錄之后,將myJsp.jsp存放到myJspc目錄下。然后,如果Tomcat正在運(yùn)行,先關(guān)掉,在重新啟動(dòng)。
要察看Jsp文件,可以讓瀏覽器連接到http://localhost:8080/myJspc/myJsp.jsp。Tomcat會(huì)把Jsp的java程序代碼轉(zhuǎn)譯成Servlet的形式,編譯后,再運(yùn)行它,然后,你就能看到網(wǎng)頁展示的結(jié)果。
開發(fā)Servlet:
Jsp服務(wù)器實(shí)際上是建立在Java Servlet的基礎(chǔ)上,運(yùn)行前先轉(zhuǎn)譯成Servlet。Servlet是純粹的java程序,下面是一個(gè)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()方法。這個(gè)doGet()方法會(huì) 一個(gè)請(qǐng)求對(duì)象(request object),其中的數(shù)據(jù)包括了瀏覽器的種類及來自任何HTML控件的數(shù)據(jù)。另外還有一個(gè)響應(yīng)對(duì)象(response object),可以讓你把想響應(yīng)的結(jié)果返回給客戶端瀏覽器。在此例中,我們要以response對(duì)象的getWriter()方法來取得printWriter對(duì)象,以之來響應(yīng)瀏覽器,而且以PrinterWriter對(duì)象的println()方法把HTML送回給瀏覽器。接下來的步驟是:首先,創(chuàng)建一個(gè)myServlet項(xiàng)目,再把上列程序輸入該項(xiàng)目中,保存成myServlet.java,包名是org.eclipsebook.servlet。為類滿足import語句所導(dǎo)入的內(nèi)容,我們要把Tomcat隨附的servlet.jar加入到編譯路徑中。你可以在jakarta-tomcat\common\lib\servlet.jar找到servlet.jar。將其加進(jìn)編譯路徑中。
Webapps
myServlet
WEB-INF
classes
org
eclipsebook
servlet Servlet 程序所在的目錄
lib
為了讓Tomcat知道這個(gè)新類是Servlet,你要用一個(gè)web.xml文件,保存該web程序的配置文件。在web.xml文件中我們用兩個(gè)xml元素——<servlet>和<servlet-mapping>把URL myServlet連接到此Servlet實(shí)際的java程序。web.xml內(nèi)容如下:
<?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,將之復(fù)制到WEB-INF目錄下。最后,關(guān)閉Tomcat,重新啟動(dòng)它。http://localhost:8080/myServlet/org.eclipsebook.servlet.myServlet讓瀏覽器連接到。
【編輯推薦】