日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JSP -- JSP语法

發布時間:2024/4/17 javascript 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JSP -- JSP语法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、什么是JSP?
? ? ? Java Server Pages,它和servlet技術一樣,都是SUN公司定義的一種慣用語開發動態web資源的技術

2、JSP技術的特點
  相比html而言,html只能為用戶提供靜態數據,而JSP技術云溪在頁面中嵌套java代碼,為用戶提供動態數據
  相比servlet而言,servlet很難對數據進行排版,而JSP除了可以用java代碼產生動態數據的同時,也很容易對數據進行排版

3、為什么JSP技術也是一種動態web資源的開發技術?
  因為JSP技術允許在頁面中嵌套java代碼,以產生動態數據,并且web服務器在執行jsp時,web服務器會傳遞web開發相關的對象給jsp,jsp通過這些對象,
  可以與瀏覽器進行交互,所以jsp當然也是一種動態web資源開發技術。

注意:在servlet向JSP跳轉的時候要用forward而不能用sendRedic(),因為數據存放在request域,而sendRedic()代表一次全新的請求,里面的信息帶不過去

4、JSP模板元素
  JSP頁面中的HTML內容稱之為JSP模版元素。
  JSP模版元素定義了網頁的基本骨架,即定義了頁面的結構和外觀。

5、JSP腳本表達式
  用于將程序數據輸出到客戶端
  語法:<%= 變量表達式 %>
  舉例:當前時間:<%= new java.util.Date() %>
  原理:
  JSP引擎在翻譯腳本表達式時,會將程序數據轉成字符串,然后在相應位置用out.print(…) 將數據輸給客戶端。

注意:JSP腳本表達式中的變量或表達式后面不能有分號(;)。

6、JSP腳本片段
  6.1 JSP腳本片斷(scriptlet)用于在JSP頁面中編寫多行Java代碼。
    語法:
    <%
      多行java代碼
    %>

注意:
  JSP腳本片斷中只能出現java代碼,不能出現其它模板元素, JSP引擎在翻譯JSP頁面中,會將JSP腳本片斷中的Java代碼將被原封不動地放到Servlet的_jspService方法中。
  JSP腳本片斷中的Java代碼必須嚴格遵循Java語法,例如,每執行語句后面必須用分號(;)結束。

6.2 在一個JSP頁面中可以有多個腳本片斷,在兩個或多個腳本片斷之間可以嵌入文本、HTML標記和其他JSP元素。
  多個腳本片斷中的代碼可以相互訪問,猶如將所有的代碼放在一對<%%>之中的情況
  單個腳本片斷中的Java語句可以是不完整的,但是,多個腳本片斷組合后的結果必須是完整的Java語句,
  <%
    for (int i=1; i<5; i++)
  {
  %>

    <H1>www.sina.org</H1>

  <%
  }
  %>

?

7、JSP聲明
? ? JSP頁面中編寫的所有代碼,默認會翻譯到servlet的service方法中, 而Jsp聲明中的java代碼被翻譯到_jspService方法的外面。語法:
? ? ? ? ?<% !
? ? ? ? ? ? ? java代碼
? ? ? ? ?%>
? ? 所以,JSP聲明可用于定義JSP頁面轉換成的Servlet程序的靜態代碼塊、成員變量和方法 。

Tip
? ? ?多個靜態代碼塊、變量和函數可以定義在一個JSP聲明中,也可以分別單獨定義在多個JSP聲明中。
? ? ?JSP隱式對象的作用范圍僅限于Servlet的_jspService方法,所以在JSP聲明中不能使用這些隱式對象。

8、JSP注釋
? JSP注釋的格式:
? ?<%-- 注釋信息 --%>
? ?JSP引擎在將JSP頁面翻譯成Servlet程序時,忽略JSP頁面中被注釋的內容。

9、JSP指令
  JSP指令(directive)是為JSP引擎而設計的,它們并不直接產生任何可見輸出,而只是告訴引擎如何處理JSP頁面中的其余部分。
  在JSP 2.0規范中共定義了三個指令:
? ? ?  page指令
  ? ? ?Include指令
  ? ? ?taglib指令


9.1 JSP指令的基本語法格式:
  <%@ 指令 屬性名="值" %>
舉例:<%@ page contentType="text/html;charset=gb2312"%>

9.2 如果一個指令有多個屬性,這多個屬性可以寫在一個指令中,也可以分開寫。
例如:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.util.Date"%>
也可以寫作:
<%@ page contentType="text/html;charset=gb2312" import="java.util.Date"%>

9.3 Page指令
<%@ page
[ language="java" ]
[ extends="package.class" ]
[ import="{package.class | package.*}, ..." ]
[ session="true | false" ]
[ buffer="none | 8kb | sizekb" ]
[ autoFlush="true | false" ]
[ isThreadSafe="true | false" ]
[ info="text" ]
[ errorPage="relative_url" ] 當出現錯誤時會跳到指定的errorPage
[ isErrorPage="true | false" ]
[ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ]
[ pageEncoding="characterSet | ISO-8859-1" ]
[ isELIgnored="true | false" ]
%>

9.4 使用page指令解決JSP中文亂碼

JSP程序存在有與Servlet程序完全相同的中文亂碼問題
輸出響應正文時出現的中文亂碼問題
讀取瀏覽器傳遞的參數信息時出現的中文亂碼問題

JSP引擎將JSP頁面翻譯成Servlet源文件時也可能導致中文亂碼問題
  JSP引擎將JSP源文件翻譯成的Servlet源文件默認采用UTF-8編碼,而JSP開發人員可以采用各種字符集編碼來編寫JSP源文件,因此,JSP引擎將JSP源文件翻譯成Servlet
  源文件時,需要進行字符編碼轉換。
  如果JSP文件中沒有說明它采用的字符集編碼,JSP引擎將把它當作默認的ISO8859-1字符集編碼處理。

如何解決JSP引擎翻譯JSP頁面時的中文亂碼問題
  通過page指令的contentType屬性說明JSP源文件的字符集編碼
  page指令的pageEncoding屬性說明JSP源文件的字符集編碼q

10、include指令
  include指令用于引入其它JSP頁面,如果使用include指令引入了其它JSP頁面,那么JSP引擎將把這兩個JSP翻譯成一個servlet。所以include指令引入通常也稱之為靜態引入。

語法:
  <%@ include file="relativeURL"%>
  其中的file屬性用于指定被引入文件的相對路徑。
  file屬性的設置值必須使用相對路徑,如果以“/”開頭,表示相對于當前WEB應用程序的根目錄(注意不是站點根目錄),否則,表示相對于當前文件。

細節
1. 被引入的文件必須遵循JSP語法。
2. 被引入的文件可以使用任意的擴展名,即使其擴展名是html,JSP引擎也會按照處理jsp頁面的方式處理它里面的內容,為了見明知意,JSP規范建議使用.jspf(JSP fragments)作為靜態引入文件的擴展名。
3. 由于使用include指令將會涉及到2個JSP頁面,并會把2個JSP翻譯成一個servlet,所以這2個JSP頁面的指令不能沖突(除了pageEncoding和導包除外)。

11、JSP運行原理和九大隱式對象

JSP運行原理

1. 每個JSP 頁面在第一次被訪問時,WEB容器都會把請求交給JSP引擎(即一個Java程序)去處理。 JSP引擎先將JSP翻譯成一個_jspServlet(實質上也是一個servlet),
? ?然后按照servlet的調用方式進行調用。
2. 由于JSP第一次訪問時會翻譯成servlet,所以第一次訪問通常會比較慢,但第二次訪問,JSP引擎如果發現JSP沒有變化,就不再翻譯,而是直接調用,所以程
序的執行效率不會受到影響。
3. JSP引擎在調用JSP對應的_jspServlet時,會傳遞或創建9個與web開發相關的對象供_jspServlet使用。JSP技術的設計者為便于開發人員在編寫JSP頁面時獲得
這些web對象的引用,特意定義了9個相應的變量,開發人員在JSP頁面中通過這些變量就可以快速獲得這9大對象的引用。

九大隱式對象及其對應關系
request ---> HttpServletRequest
response ---> HttpServletResponse
session ---> HttpSession
application ---> servletContext
config ---> servletConfig
out JspWriter -----> PrintWriter
exception
page this
pageContext

12、out隱式對象
1、out隱式對象用于向客戶端發送文本數據。
2、out對象是通過調用pageContext對象的getOut方法返回的,其作用和用法與ServletResponse.getWriter方法返回的PrintWriter對象非常相似。
3、JSP頁面中的out隱式對象的類型為JspWriter,JspWriter相當于一種帶緩存功能的PrintWriter,設置JSP頁面的page指令的buffer屬性可以調整它
? ? ?的緩存大小,甚至關閉它的緩存。
4、只有向out對象中寫入了內容,且滿足如下任何一個條件時,out對象才去調用ServletResponse.getWriter方法,并通過該方法返回的PrintWriter
? ? ?對象將out對象的緩沖區中的內容真正寫入到Servlet引擎提供的緩沖區中:
  a) 設置page指令的buffer屬性關閉了out對象的緩存功能
  b) out對象的緩沖區已滿
  c) 整個JSP頁面結束

注意:同時使用out和response.getwriter()輸出數據。會出現文本顯示順序的問題,只要是看是否刷新了緩沖區,然后進行分析

13、pageContext
? 1、 pageContext對象(非常重要,進入其它對象的入口)

? ?pageContext對象是JSP技術中最重要的一個對象,它代表JSP頁面的運行環境,這個對象不僅封裝了對其它8大隱式對象的引用,它自身還是一個域對象,
? ?可以用來保存數據。并且,這個對象還封裝了web開發中經常涉及到的一些常用操作,例如引入和跳轉其它資源、檢索其它域對象中的屬性等。

通過pageContext獲得其他對象
getException() 返回exception隱式對象
getPage() 返回page隱式對象
getRequest() 返回request隱式對象
getResponse() 返回response隱式對象
getServletConfig() 返回config隱式對象
getServletContext() 返回application隱式對象
getSession() 返回session隱式對象
getOut() 返回out隱式對象

pageContext封裝其它8大內置對象的意義

2. pageContext作為域對象
pageContext對象的方法
public void setAttribute(java.lang.String?name,java.lang.Object?value)
public java.lang.Object?getAttribute(java.lang.String?name)
public void?removeAttribute(java.lang.String?name)
pageContext對象中還封裝了訪問其它域的方法
public java.lang.Object?getAttribute(java.lang.String?name,int?scope)
public void setAttribute(java.lang.String?name, java.lang.Object?value,int?scope)
public void?removeAttribute(java.lang.String?name,int?scope)
代表各個域的常量
PageContext.APPLICATION_SCOPE
PageContext.SESSION_SCOPE
PageContext.REQUEST_SCOPE
PageContext.PAGE_SCOPE

  findAttribute方法 (*重點,查找各個域中的屬性)

轉載于:https://www.cnblogs.com/xushuai123/archive/2013/03/24/2979762.html

總結

以上是生活随笔為你收集整理的JSP -- JSP语法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。