JavaScript筆記,JSP 筆記

 2023-11-18 阅读 23 评论 0

摘要:概念 JSP 是Java Server Page 的縮寫,是Servlet 的簡化。它是由Sun 公司提出的,并由許多公司參與制定的一種動態網頁標準。 其主要特點是在HTML 頁面中加入Java 代碼片段,或者使用各種JSP 標簽,包括使用用戶標簽,構成JSP 網頁。 【早期使用

概念

JSP 是Java Server Page 的縮寫,是Servlet 的簡化。它是由Sun 公司提出的,并由許多公司參與制定的一種動態網頁標準。

其主要特點是在HTML 頁面中加入Java 代碼片段,或者使用各種JSP 標簽,包括使用用戶標簽,構成JSP 網頁。

【早期使用JSP 頁面的用戶非常廣泛,一個Web 應用可以全部由JSP 頁面組成,只輔以少量的JavaBean 即可。自J2EE 標準出現以后,人們逐漸認識到使用JSP充當過多的角色是不合適的Q 因此, JSP 慢慢發展成學一的表現層技術,不再承擔業務邏輯組件及持久層組件的責任。】

JSP 是Servlet 的擴展,在沒有JSP 之前,就已經出現了Servlet 技術。Servlet 是利用輸出流動態生成HTML 頁面,包括每一個HTML 標簽和每個在HTML 頁面中出現的內容。

JavaScript筆記、?

注釋

JSP 注釋用于表明在程序開發過程中的開發提示,它不會輸出到客戶端。

JSP 注釋的格式如下:

〈%--在注釋內容--%>

與JSP 注釋形成對比的是HTML 注釋, HTML 注釋的格式是

javaweb筆記、<!--注釋內容-->

JSP 頁面會編譯成一個Servlet 類,每個Servlet 在容器中只有一個實例:而在JSP 中聲明的變量是類的成員變量,成員變量只在創建實例時初始化,該變量的值將一直保存,直到實例銷毀。值得注意的是, infoO的值也可正常輸出。因為JSP 聲明的方法其實是在JSP 編譯生成的Servlet 類的方法一Java 里的方法是不能獨立存在的,即使在JSP 頁面中也不行。

?

表達式

JSP 提供了一種輸出表達式值的簡單方法,輸出表達式值的格式如下:

〈%=表達式%〉

javaweb知識點總結、?

腳本

JSP 腳本的應用非常廣泛,可通過Java 代碼鑲嵌在HTML 代碼中,即使用JSP 腳本。

因此,所有能在Java 程序中執行的代碼,都可以通過JSP 腳本執行。

看下面的代碼:

<! -- Java 腳本,這些腳本會對HTML 的標簽產生作用一〉

javascript筆記總結、〈%

for(int i = 0 ; i < 10 ; i++) {

%〉

<td><%=i%></td>

<%}%>

上面的JSP 頁面,其簡單的循環將導致<tr/>標簽循環10 次,即生成一個10 行

js基礎筆記?的表格,并在表格中輸出表達式值

?

三個編譯指令

JSP 的編譯指令是通知JSP 引擎的消息,它不直接生成輸出。編譯指令都有默認值,因此開發人員無須為每個指令設置值。

常見的編譯指令有三個。

page: 該指令是針對當前頁面的指令。

JSP頁面。include: 用于指定如何包含另一個頁面。

tablib: 用于定義和訪問自定義標簽。

?

編譯指令的格式如下:

<%@ 編譯指令名 屬性名="屬性值"…%>

?

JAVA筆記?page 指令

page 指令,通常位于JSP 頁面的頂端,對同一個頁面可以有多個page 指令。

page指令的語法格式如下:

〈%@ page

[language="Java"]

[extends="package.class"]

[import= "package. class | package. *},…"]

[session=true | false"]

[buffer="none | 8kb | size kb"]

[autoFlush="true | false"]

[isThreadSafe="true | false"]

[info="text"]

[errorPage="relativeURL"]

[contentType=mimeType[ ;charset=characterSet]" | "text/html;charSet= ISO-8859-1"]

[isErrorPage=" true | false"]

%〉

下面依次介紹page 的各個屬性。

language: 聲明當前JSP 頁面使用的腳本語言的種類,因為頁面是JSP 頁面,該屬性的值通常都是java 。

extends: 確定JSP 程序編譯時所產生的Java 類,需要繼承的父類,或者需要實現的接口的全限定類名。

import: 用來導入包,下面幾個包是默認自動導入的,不需要顯式導入。默認導入的包有: java .lang.* javax.servlet.* javax.servlet.jsp.* javax.servlet. http

session: 設定這個JSP 頁面是否需要HTIP session 。

buffer: 指定輸出緩沖區的大小。輸出緩沖區的JSP 內部對象: out 用于緩存JSP頁面對客戶瀏覽器的輸出,默認值為8k,可以設置為none ,也可以設置為其他的值,單位為kb 。

autoFlush: 當輸出緩沖區即將溢出時,是否需要強制輸出緩沖區的內容。設置為true 時為正常輸出:如果設置為false ,會在buffer 溢出時產生一個異常。

info: 設置該JSP 程序的信息,也可以看做其說明,可以通過Servlet. getServletInfo

方法獲取該值。如果在JSP 頁面中,可直接調用getServletInfo方法獲取該值,因為JSP 頁面的實質就是Servlet 。

errorPage: 指定錯誤處理頁面。如果本程序產生了異常或者錯誤,而該JSP 頁面沒有對應的處理代碼,則會自動調用該指令所指定的JSP 頁面。使用JSP 頁面時,可以不處理異常,即使是checked 異常。

isErroePage: 設置本JSP 頁面是否為錯誤處理程序。如果該頁面本身己是錯誤處理頁面,則無須使用errorPage 屬性。

contentType: 用于設定生成網頁的文件格式和編碼方式,即MIME 類型和頁面宇符集類型,默認的MIME 類型是textlhtml; 默認的字符集為ISO-8859-1。

?

include 指令

使用include 指令,可以將一個外部文件嵌入到當前JSP 文件中,同時解析這個頁面

中的JSP 語句(如果有的話)。這是個靜態的include 語旬,不會檢查所包含JSP 頁面的變化。

include 既可以包含靜態的文本,也可以包含動態的JSP 頁面。靜態的編譯指令

include ,是將被包含的頁面加入進來,生成一個完整的頁面。

include 編譯指令的語法:

〈%@ include file="relativeURLSpec" %〉

如果被嵌入的文件經常需要改變,建議使用<jsp:include>操作指令,因為它是動態的include 語句。

JSP 的7 個動作指令

動作指令與編譯指令不間,編譯指令是通知Servlet 引擎的處理消息,而動作指令只

是運行時的腳本動作。編譯指令在將JSP 編譯成Servlet 時起作用:處理指令通常可替換

成Java 腳本,是JSP 腳本的標準化寫法。

?

JSP 動作指令主要有如下7 個。

jsp:forward: 執行頁面轉向,將請求的處理轉發到下一個頁面。

jsp:param: 用于傳遞參數,必須與其他支持參數曲標簽一起使用。

jsp:include: 用于動態引入一個JSP 頁面。

jsp:p1ugin: 用于下載JavaBean 或Applet 到客戶端執行。

jsp:useBean: 使用JavaBean 。

jsp:setProperty: 修改JavaBean 實例的屬性值。

jsp:getProperty: 獲取JavaBean 實例的屬性值。

?

【forward 指令】

forward 指令用于將頁面響應控制轉發給另外的頁面。既可以轉發給靜態的HTML

頁面,也可以轉發到動態的JSP 頁面,或者轉發到容器中的Servlet

JSP 的forward 指令的格式如下:

對于JSP 1. 0 ,使用如下語法:

<jsp: forward page=" {relativeURL | <%=expression%>}"/>

對于JSP 1. 1 以上,可使用如下語法:

<jsp:forward page=" { relativeURL | <%=expression %>}">

{<jsp:param.../>}

</jsp:forward>

<jsp:forward page="forward-result.jsp">

<jsp:param name="age" value="29"/>

</jsp:forward>

?

【include 指令】

include 指令是一個動態include 指令,也用于導入某個頁面,它的導入會每次檢查

被導入頁面的改變。下面是include 指令的使用格式:

<jsp: include page=" {relativeURL I <%=expression%>}" flush= “true” />

或者

<jsp:include page="{relativeURL I <%=expression%>}" flush="true 與

<jsp:param name="parameterName" value="patameterValue"l>

</jsp:include>

flush 屬性用于指定輸出緩存是否轉移到被導入文件中。如果指定為true,則包含在被導入文件中:如果指定為false,則包含在原文件中。對于JSP 1.1舊版本,只能設置為false。

對于第二種格式,可用于在導入頁面中加入參數值。

?

【useBean, setProperty, getProperty 指令】

這三個都是與JavaBean 相關的指令,其中第一個指令用于在JSP 頁面中初始化一個Java 實例; setProperty 指令用于修改JavaBean 實例的屬性; getProperty 用于獲取JavaBean實例的屬性。

useBean 的語法格式如下:

<jsp:useBean id="name" class="classname" scope="page | request | session | application" />

id 屬性是JavaBean 的實例名, class 屬性確定JavaBean 的實現類。

其中scope 屬性用于確定JavaBean 實例的生存范圍,該范圍有以下四個值。

page: 該JavaBean 實例僅在該頁面有效。

request: 該JavaBean 實例在本次請求有效。

session: 該JavaBean 實例在本次session 內有效。

application: 該JavaBean 實例在本應用內一直有效。

setProperty 的語法格式如下:

<jsp:setProperty name="BeanName" proterty="propertyName" value="value"/>

其中name 屬性確定需要設定JavaBean 的實例名; property 屬性確定需要設置的屬性名; value 屬性則確定需要設置的屬性值。

getProperty 的語法格式如下:

<jsp:setProperty name="BeanName" proterty="propertyName" />

其中name'屬性確定需要輸出的JavaBean 的實例名; property 屬性確定需要輸出的屬性名。

?

【plugin 指令】

plugin 指令主要用于下載服務器端的JavaB ean 或Applet 到客戶端執行。由于程序在

客戶端執行,因此客戶端必須安裝虛擬機。

plugin 的語法格式如下:

<jsp:plugin type=bean | applet"

code="classFileName"

codebase="classFileDiretoryName"

[name=" instanceName"]

[archive="URLtoArchive"]

algin= "bottom 1 top I middle 1 left 1 right"]

[heigh="displayPixels"]

[width="displayPixels"]

[hspace="leftRightPixels"]

[vspace="topBottomPiexels"]

[jreversion=JREVersionNumber11.2"]

[nspluginurl="URLToPlugin"]

[iepluginurl="URLToPlugin"]>

[<jsp:parames>

[jsp:param name="parameterName" value="parameterValue"I>]

</jsp:params>]

[<jsp:fallback>text message for user that can no see the plugin

</jsp:fallback> ]

</jsp:plugin>

關于這些屬性的說明如下。

type: 指定被執行的Java 程序的類型。

code: 指定被執行的文件名,該屬性值必須以" .class" 擴展名結尾。

codebase: 指定被執行文件所在的目錄。

name: 給該程序起一個名字用來標識該程序。

archive: 指向一些要預先載入的將要使用到的類的路徑。

hspace,vspace: 顯示左右,上下的留白。

jreversion: 能正確運行該程序必需的JRE 版本,默認值是1.2

nsplugin,ieplugin:Netscape Navigator, Internet Exploer下載運行所需JRE 的地址。

<jsp:fallback>指令:當不能正確顯示該Applet 時,代替顯示的提示信息。

?

【pararn 指令】

可以與以下三個指令結合使用:

jsp:include

jsp:forward

jsp:plugin

當與include 指令結合使用時, pararn 指令用于將參數值傳入被導入的頁面:當與

forward 指令結合使用時, pararn 指令用于將參數值傳入被轉向的頁面:當與plugin 指令

結合使用時,則用于將參數傳入頁面中的JavaBean 實例或Applet 實例。

pararn 指令的語法格式如下:

<jsp:param name="pararnName" value="paramValue"/>

?

9 個內置對象

application: javax.servlet. ServletContext 的實例,該實例代表JSP 所屬的Web 應用

本身,可用于JSP 頁面,或者Servlet 之間交換信息。

常用的方法有

getAttribute(String attNarne) , setAttribute(String attNarne , String attValue)

和getInitParameter(String paramNarne)等。

config: javax.servlet. ServletConfig 的實例,該實例代表該JSP 的配置信息。

常用的方法有

getInitPararneter(String paramNarne) 及getInitPararneternarnes() 等方法。事實上, JSP 頁面通常無須配置,也就不存在配置信息。因此,該對象更多地在Servlet 中有效。

exception: java.lang.Throwable 的實例,該實例代表其他頁面中的異常和錯誤。只有當頁面是錯誤處理頁面,即編譯指令page 的isErrorPage 屬性為true 時,該對象才可以使用。常用的方法有getMessageO和printStackTrace等。

out: javax.servlet.jsp.JspWriter 的實例,該實例代表JSP 頁面的輸出流,用于輸出內容,形成HTML 頁面。

page: 代表該頁面本身,通常沒有太大用處。也就是Servlet 中的this ,其類型就是生成的Servlet 。

pageContext: javax.servlet.jsp.PageContext 的實例,該對象代表該JSP 頁面上下文,使用該對象可以訪問頁面中的共享數據。常用的方法有getServletContext和getServletConfig等。

request: javax.servlet. http:HttpServletRequest 的實例,該對象封裝了一次請求,客

戶端的請求參數都被封裝在該對象里。這是一個常用的對象,獲取客戶端請求參

數必須使用該對象。常用的方法有getPararneter(String paramNarne),

getPararneterValues(String paramName),

setAttribute(String atttibuteName,Object attributeValue),

getAttribute(String attributeName)和setCharacterEncoding(String env)等。

response: javax.servlet.http.HttpServletResponse 的實例,代表服務器對客戶端的響應。通常,也很少使用該對象直接響應,輸出響應使用out 對象,而response 對象常用于重定向。常用的方法有sendRedirect(j ava.lang.String location)等。

session: javax.servlet.http.HttpSession 的實例,該對象代表一次會話。從客戶端瀏覽器與站點建立連接起,開始會話,直到關閉瀏覽器時結束會話。常用的方法有:

getAttribute(String attName), setAttribute(String attName, String attValue)等。

?

JSP 定義

JSP 屬性定義使用<jsp-property-group/>元素配置,主要包括如下四個方面。

·是否允許使用表達式語言:使用<el-ignored/>元素確定,默認值為false 。

·是否允許使用Java 腳本:使用<scripting-invalid/>元素確定,默認值為false 。

·聲明JSP 頁面的編碼:使用<page-encoding/>元素確定。

·使用隱式包含:使用<include-prelude/>和<include-codal>元素確定。

看下面的配置文件:

<?xm1 version="1.0" encoding="ISO-8859-1"?>

<!--Serv1et2.4 以上版本的Web 應用配置的根元素->

<web-app xm1ns=''http://java.sun.com/xml/ns/j2ee"

xmlns:xsi=''http://www.w3.org /2 001/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">

<1-- 關于JSP 的配置信息-->

<jsp-config>

<]sp-property-group>

<!-- 對哪個文件應用配置-->

<url-pattern>/test1.jsp</url-pattern>

<!--忽略表達式語言-->

<el-ignored>true</el-ignored>

<'--頁面編碼方式-->

<page-encoding>GBK</page-encoding>

<'--不允許使用Java 腳本-->

<scripting-invalid>true</scripting-invalid>

<'--隱式導入頁面頭-->

〈工nclude-prelude>/inc/top.jspf</inc1ude-prelude>

<'--隱式導入頁面尾-->

<include-coda>/inc/bottom.jspf</include-coda>

</jsp-property-group>

<]sp-property-group>

<1- 對哪個文件應用配置->

<url-pattern>/test2.jsp</url-pattern>

<el-ignored>false</el-ignored>

<!-- 頁面編碼方苯-->

<page-encoding>GBK</page-encoding>

<!一允許使用Java 腳本一〉

<scripting-invalid>false</scripting-invalid>

</jsp-property-group>

</jsp-config>

</web-app>

注意:如果在不允許使用Java 腳本的頁面中使用Java 腳本,則頁面將出現錯誤。

即test1 .jsp 頁面中不允許出現Java 腳本。

?

表達式語言的內置對象

使用表達式語言可以直接獲取請求參數,可獲取頁面中某個JavaBean 的屬性值,獲取請求頭及獲取session 屬性值等,這些都得益于表達式語言的內置對象。

表達式語言包含如下11 個內置對象。

pageContext: 代表該頁面的pageContext 對象,與JSP 的pageContext 內置對象相同。

pageScope: 用于獲取page 范圍的屬性值。

requestScope: 用于獲取request 范圍的屬性值。

sessionScope: 用于獲取session 范圍的屬性值。

applicationScope: 用于獲取application 范圍的屬性值。

param: 用于獲取請求的參數值。

paramValues: 用于獲取請求的參數值,與param 的區別在于,該對象用于獲取屬

性值為數組的屬性值。

header: 用于獲取請求頭的屬性值。

headerValues: 用于獲取請求頭的屬性值,與header 的區別在于,該對象用于獲取屬性值為數組的屬性值。

initParam: 用于獲取請求Web 應用的初始化參數。

cookie: 用于獲取應用的Cookie 值。

表達式語言的自定義函數

表達式語言除了可以使用基本的運算符外,還可以使用自定義函數。通過使用自定

義函數,加強了表達式語言的功能。

自定義函數的用法非常類似于標簽的用法,同樣需要定義函數處理類和使用標簽庫。

下面介紹定義函數的開發過程。

(1)開發函數處理類:函數處理類就是普通類,這個普通類中包含若干個靜態方法,

每個靜態方法都可定義成一個函數。

public class Functions{

?????? //對字符串進行反轉

?????? public static String reverse( String text ){

????????????? return new StringBuffer(text).reverse().toString();

?????? }

?????? //統計字符串的個數

?????? public static int countChar( String text) {

????????????? return text.length();

?????? }

}

(2) 使用標簽庫定義函數,定義函數方法與定義標簽庫方法相同。下面是定義函的配置文件:

<?xml version="l.O" encoding="UTF-8" ?>

<1 一標簽庫配置文件的根元素一〉

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/200l/XMLSchema-instance"

xsi:schemaLocation="http://j ava.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"

version="2.0">

<jsp-version>2.0</jsp-version>

<tlib-version>l.O</tlib-version>

<1-- 定義第一個函數>

<function>

<!- 定義第一個函數:reverse-->

<name>reverse</name>

<!一定義函數的處理類>

<function-class>lee.Functction/function-class>

<!- 定義函數的對應的方法-->

<function-signature>java.lang.String reverse( java.lang.String )

</function-signature>

</function>

<function〉

<!-- 定義第二個函數: countChar-->

<name>countChar</name>

<!一定義函數的處理類->

<function-class>lee.Functions</function-class>

<1- 定義函數的對應的方法->

<function-signature>int countChar( java.lang.String )</function-signature>

</function>

</taglib>


轉載于:https://www.cnblogs.com/javaTest/archive/2012/01/29/2589309.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/175789.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息