㈠ 關於jsp中的問題
其實它們都是JSP的語法,剛學的話可以先看看JSP的語法,看得多了見的多了就明白了。
在通常的jsp代碼中,腳本標識使用的比較頻繁,包括以下三種元素:聲明標識,JSP表達式和腳本程序。
<%=a.getId()%>中的<%= %>是jsp的表達式腳本標識,用於向頁面輸出信息
<%=a.getId()%>將輸出 a.getId()的結果
再舉個例子:
<% String name ="樓主" %>
用戶名:<%=name%>
以上代碼運行結果為如下:
用戶名:樓主
下面是部分的JSP語法,樓主可以在網上找到更多的資料來學習
1.page指令
page指令的設置語法格式是:<%@ page attribute1=」value1」 attribute2=」value2」…%>
下面介紹指令中包括的幾個常用屬性,並作簡要說明。
l import
import指令是所有page指令中,唯一可以多次設置的指令,而且累加每個設置。它用來指定jsp網頁中所需要使用到的一些類。例如:
<%@ page import=」java.io.*,java.util.Date」%>
l session
定義當前頁面是否參與http會話。當設置為」true」時,可以獲得隱含名為session的對象,為」false」時,則不能。默認設置為」true」。
l contentType
設置jsp網頁輸出時數據時,所使用的字元壓縮方式,以及所使用的字元集,當編寫中文網頁時,設置如下:
<%@page contentType=」text/html;charset=Gb2312」%>
此屬性的默認值為」text/html;charset=ISO-8859-1」。
l buffer
設置jsp網頁的緩沖區大小,默認為」8k」,如果設置為」none」,則表示不使用緩沖,所有的響應輸出都將被PrintWriter直接寫到ServletResponse中。
l isTreadSafe
定義當前頁面是否支持線程安全。如果為」true」,則該頁面可能同時收到jsp引擎發出的多個請求,反之,jsp引擎會對收到的請求進行排隊,當前頁面在同一時刻只能處理一個請求。默認為」true」。
l info
設置頁面的文本信息,可以通過Servlet.getServletInfo()的方法獲得該字元串。
l errorPage
定義指向另一個jsp頁面的URL。當頁面出現一個沒有被捕獲的異常時,錯誤信息將以throw語句拋出,而被設置為錯誤信息網頁的jsp頁面,將利用exception隱含對象,取得錯誤信息。
默認沒有錯誤處理頁面。
l isErrorPage
設置此jsp網頁是否為錯誤處理頁面。默認值為」false」。當設置為」true」時,jsp頁面將可存取隱含的exception對象,並通過該對象取得從發生錯誤之網頁所傳出的錯誤信息。取得錯誤信息的語法如下:
<% =exception.getMessage()%>
² 一個頁面錯誤處理的例子
產生錯誤的頁面文件為MakeError.jsp,處理錯誤的頁面文件為ErrorPage.jsp,它們的源程序如下:
MakeError.jsp
<%@ page errorPage="ErrorPage.jsp"%>
<html>
<head>
<title>產生錯誤頁面</title>
</head>
<body>
<%
int i=8,j=0;
out.println(ij);
%>
</body>
</html>
ErrorPage.jsp
<%@ page isErrorPage="true"%>
<html>
<head>
<title>錯誤處理頁面</title>
</head>
<body>
<font color=red>
錯誤原因:<%=exception.getMessage()%>
</font>
</body>
</html>
2.include指令
使用include指令可以把其他的文本文件加入到當前的jsp頁面,格式如下:
<%@ include file=」header.inc」%>
如此,則在當前頁面中加入header.inc源代碼然後再編譯整個文件。
可以使用include指令把一個頁面分成不同的部分,最後合成一個完整的文件,使用jsp的include指令有助於實現jsp頁面的模塊化。
3.taglib指令
該指令主要是在JSP頁面插入插件!具體的用法尚不熟悉~
接下來說說JSP頁面中的標准動作吧!
標准動作元素用於執行一些常用的JSP頁面動作,例如:將頁面轉向、使用JavaBean、設置JavaBean的屬性等。在JSP中,標准動作元素共有以下幾種:
l <jsp:param>
l <jsp:include>
l <jsp:forward>
l <jsp:plugin>
l <jsp:useBean>
l <jsp:setProperty>
l <jsp:getProperty>
其中<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>這三個是專門用來操作JavaBeans的。
下面分別介紹它們。
1. <jsp:param>
<jsp:param>動作用於傳遞參數,必須配合<jsp:include>、<jsp:forward>、<jsp:plugin>動作一起使用。
語法格式:
<jsp:param name = 「name1」 value = 「value1」/>
2. <jsp:include>
<jsp:include>動作用於動態載入HTML頁面或者JSP頁面。
語法格式:
<jsp:include page = 「網頁路徑」>
<jsp:param name = 「name1」 value = 「value1」/>
<jsp:param name = 「name2」 value = 「value2」/>
<jsp:include/>
在jsp頁面中,可以利用下面的語法取得返回的參數:
request.getParameter(「name1」);
若不傳遞參數時,則語法格式如下:
<jsp:include page = 「網頁路徑」/>
舉例:
a.jsp頁面代碼如下:
<jsp:include page = "b.jsp">
<jsp:param name = "name1" value = "value1"/>
<jsp:param name = "name2" value = "value2"/>
</jsp:include>
b.jsp頁面代碼如下:
名字1、;<%=request.getParameter("name1")%>
<hr color=red>
名字2、;<%=request.getParameter("name2")%>
執行結果如下:
「include標准動作」和「include指令」的差別在於:「include標准動作」包含的頁面在運行時被加入,而「include指令」在編譯時就被加入了。
3. <jsp:forward>
<jsp:forward>動作用於將瀏覽器顯示的頁面導向到另一個HTML頁面或者jsp頁面。
語法格式:
<jsp:forward page = 「網頁路徑」/>
當然,<jsp:forward>動作中也可以加入<jsp:param>參數,其設置和獲得參數的方法與<jsp:include>類似。
4. <jsp:plugin>
<jsp:plugin>動作用於載入applet,用途與HTML語法中的<Applet>及<Object>標記相同。該動作是在客戶端執行的,這里就不作介紹了。
5. <jsp:useBean>
(見後文的「JavaBeans」的使用)
6. <jsp:setProperty>
(見後文的「JavaBeans」的使用)
7. <jsp:getProperty>
(見後文的「JavaBeans」的使用)
另外,附加的講一下JSP中的內置對象
內置對象
在jsp頁面中有一些已經完成定義的對象,稱之為內置對象。這些對象可以不經過定義就直接使用,因為它們是由jsp頁面自己定義的。
jsp程序常用的內建對象有如下幾個:request、response、out、session、pageContext、application、config、page、exception。你可以在jsp頁面中直接使用它們,用以加強jsp程序的功能。
下面分別介紹它們。
1. request
與request相聯系的是HttpServletRequest類。通過getParameter方法可以獲得相應的參數值。
2. response
與response相聯系的是HttpServletResponse類。表示Web頁面針對請求的應答。
3. out
與out相聯系的是PrintWrite類。可以使用此對象將內容輸出到頁面中。
4. session
與session相聯系的是HttpSession類。用來傳遞客戶的會話內容。
5. pageContext
與pageContext相聯系的是pageContext類。用它能方便的訪問本頁面中設置的共享數據。
6. application
與application相聯系的是ServletContext類。用它能夠實現應用程序級別的數據共享。
7. config
與config相聯系的是ServletConfig類。用來在jsp頁面范圍內處理jsp配置。
8. page
代表jsp頁面編譯成的Servlet實例,一般不用。
9. exception
與exception相聯系的是Throwable類。用來捕獲jsp執行時拋出的異常。
㈡ 在java中怎麼訪問web-inf 目錄下的jsp頁面。
外部訪問來說,web-inf下的文件都是不可見的(即不能通過url獲得web-info下的任何文件),所以,直接訪問jsp是不可能的。可以使用view層框架(如struts)來提供jsp服務,將jsp文件放到web-info下避免客戶直接訪問到頁面,同時使用struts來進行jsp文件提取,並將編譯好的結果發送到客戶端。
WEB-INF是Java的WEB應用的安全目錄。所謂安全就是客戶端無法訪問,只有服務端可以訪問的目錄。如果想在頁面中直接訪問其中的文件,必須通過web.xml文件對要訪問的文件進行相應映射才能訪問。
(2)jsp頁面不用參數也可以訪問擴展閱讀:
WEB-INF 目錄的作用:
/WEB-INF/web.xml
Web應用程序配置文件,描述了 servlet 和其他的應用組件配置及命名規則。
/WEB-INF/classes/
包含了站點所有用的 class 文件,包括 servlet class 和非servlet class,他們不能包含在 .jar文件中(是該目錄不能包含在.jar文件中)。
/WEB-INF/lib/
存放web應用需要的各種JAR文件,放置僅在這個應用中要求使用的jar文件,如資料庫驅動jar文件。
/WEB-INF/src/
源碼目錄,按照包名結構放置各個java文件。
/WEB-INF/database.properties
資料庫配置文件
/WEB-INF/tags/
存放了自定義標簽文件,該目錄並不一定為 tags,可以根據自己的喜好和習慣為自己的標簽文件庫命名,當使用自定義的標簽文件庫名稱時,在使用標簽文件時就必須聲明正確的標簽文件庫路徑。
例如:當自定義標簽文件庫名稱為 simpleTags 時,在使用 simpleTags 目錄下的標簽文件時,就必須在 jsp 文件頭聲明為:<%@ taglibprefix="tags" tagdir="/WEB-INF /simpleTags" % >。
/WEB-INF/jsp/
jsp 1.2 以下版本的文件存放位置。改目錄沒有特定的聲明,同樣,可以根據自己的喜好與習慣來命名。此目錄主要存放的是 jsp 1.2 以下版本的文件,為區分 jsp 2.0 文件,通常使用 jsp 命名,當然你也可以命名為 jspOldEdition 。
/WEB-INF/jsp2/
與 jsp 文件目錄相比,該目錄下主要存放 Jsp 2.0 以下版本的文件,當然,它也是可以任意命名的,同樣為區別 Jsp 1.2以下版本的文件目錄,通常才命名為 jsp2。
META-INF
相當於一個信息包,目錄中的文件和目錄獲得Java 2平台的認可與解釋,用來配置應用程序、擴展程序、類載入器和服務
manifest.mf文件,在用jar打包時自動生成。