1. 程式人生 > >java程式設計師菜鳥入門之十二jsp、EL表示式、jstl表示式

java程式設計師菜鳥入門之十二jsp、EL表示式、jstl表示式

一、jsp技術

1.jsp指令碼和註釋

jsp指令碼:
1)<%java程式碼%> ----- 內部的java程式碼翻譯到service方法的內部
2)<%=java變數或表示式> ----- 會被翻譯成service方法內部out.print()
3)<%!java程式碼%> ---- 會被翻譯成servlet的成員的內容


jsp註釋:  不同的註釋可見範圍是不同
1)Html註釋:<!--註釋內容--> ---可見範圍 jsp原始碼、翻譯後的servlet、頁面顯示html原始碼
2)java註釋://單行註釋  /*多行註釋*/ --可見範圍 jsp原始碼 翻譯後的servlet
3)jsp註釋:<%--註釋內容--%> ----- 可見範圍 jsp原始碼可見


2.jsp執行原理-----jsp本質就是servlet
jsp在第一次被訪問時會被Web容器翻譯成servlet,在執行過程:第一次訪問---->helloServlet.jsp---->helloServlet_jsp.java---->編譯執行(被翻譯後的servlet在Tomcat的work目錄中可以找到)

3.jsp指令(3個)
jsp的指令是指導jsp翻譯和執行的命令,jsp包括三大指令:
1)page指令 --- 屬性最多的指令(實際開發中page指令預設)屬性最多的一個指令,根據不同的屬性,指導整個頁面特性,格式:<%@ page 屬性名1= "屬性值1" 屬性名2= "屬性值2" ...%>
常用屬性如下:
language:jsp指令碼中可以嵌入的語言種類
pageEncoding:當前jsp檔案的本身編碼---內部可以包含contentType
contentType:response.setContentType(text/html;charset=UTF-8)
session:是否jsp在翻譯時自動建立session
import:匯入java的包
errorPage:噹噹前頁面出錯後跳轉到哪個頁面
isErrorPage:當前頁面是一個處理錯誤的頁面


2)include指令
頁面包含(靜態包含)指令,可以將一個jsp頁面包含到另一個jsp頁面中,格式:<%@ include file="被包含的檔案地址"%>


3)taglib指令
在jsp頁面中引入標籤庫(jstl標籤庫、struts2標籤庫),格式:<%@ taglib uri="標籤庫地址" prefix="字首"%>




4.jsp內建/隱式物件(9個)----- 筆試
jsp被翻譯成servlet之後,service方法中有9個物件定義並初始化完畢,我們在jsp 指令碼中可以直接使用這9個物件
名稱                型別                                                                       描述
out                javax.servlet.jsp.JspWriter                               用於頁面輸出
request     javax.servlet.http.HttpServletRequest               得到使用者請求資訊,
response        javax.servlet.http.HttpServletResponse               伺服器向客戶端的迴應資訊
config        javax.servlet.ServletConfig                               伺服器配置,可以取得初始化引數
session        javax.servlet.http.HttpSession                               用來儲存使用者的資訊
applicationjavax.servlet.ServletContext                               所有使用者的共享資訊
page        java.lang.Object                                               指當前頁面轉換後的Servlet類的例項
pageContextjavax.servlet.jsp.PageContext                               JSP的頁面容器
exceptionjava.lang.Throwable                                       表示JSP頁面所發生的異常,在錯誤頁中才起作用


(1)out物件
out的型別:JspWriter
out作用就是想客戶端輸出內容----out.write()
out緩衝區預設8kb 可以設定成0 代表關閉out緩衝區 內容直接寫到respons緩衝 器

(2)pageContext物件

           jsp頁面的上下文物件,作用如下:page物件與pageContext物件不是一回事                                                                    pageContext是一個域物件                                                                                                                                                              setAttribute(String name,Object obj)                                                                                                                                    

getAttribute(String name)                                                                                                                                                      removeAttrbute(String name)                                                                                                                                                
pageContext可以向指定的其他域中存取資料                                                                                                                           setAttribute(String name,Object obj,int scope)                                                                                                                     
getAttribute(String name,int scope)                                                                                                                                     removeAttrbute(String name,int scope)                                                                                                                              findAttribute(String name)---依次從pageContext域,request域,session域,application域中獲取屬性,在某個域中獲取後將不在向後尋找

四大作用域的總結:
        page域:當前jsp頁面範圍
        request域:一次請求
        session域:一次會話
        application域:整個web應用


2)可以獲得其他8大隱式物件
              例如: pageContext.getRequest()//獲取request域物件
                         pageContext.getSession()//獲取session域物件


5.jsp標籤(動作)
            1)頁面包含(動態包含):<jsp:include page="被包含的頁面"/>
            2)請求轉發:<jsp:forward page="要轉發的資源" />

靜態包含與動態包含的區別?

靜態包含:先合併後編譯
動態包含:先編譯後合併


二、EL技術

1.EL 表示式概述
          EL(Express Lanuage)表示式可以嵌入在jsp頁面內部,減少jsp指令碼的編寫,EL出現的目的是要替代jsp頁面中指令碼的編寫。


2.EL從域中取出資料(EL最重要的作用)
             jsp指令碼:<%=request.getAttribute(name)%>
             EL表示式替代上面的指令碼:${requestScope.name}

            EL最主要的作用是獲得四大域中的資料,格式${EL表示式}
            EL獲得pageContext域中的值:${pageScope.key};
            EL獲得request域中的值:${requestScope.key};
            EL獲得session域中的值:${sessionScope.key};
            EL獲得application域中的值:${applicationScope.key};
            EL從四個域中獲得某個值${key};
            同樣是依次從pageContext域,request域,session域,application域中獲取屬性,在某個域中獲取後將不在向後尋找

           1)獲得普通字串
           2)獲得User物件的值
           3)獲得List<User>的值


3.EL的內建物件11個
pageScope,requestScope,sessionScope,applicationScope--- 獲取JSP中域中的資料
param,paramValues - 接收引數(相當於request.getParameter()  rrquest.getParameterValues())
header,headerValues- 獲取請求頭資訊(相當於request.getHeader(name))
initParam- 獲取全域性初始化引數(相當於this.getServletContext().getInitParameter(name))
cookie- WEB開發中cookie(相當於request.getCookies()---cookie.getName()---cookie.getValue())
pageContext- WEB開發中的pageContext.
pageContext                   獲得其他八大物件


${pageContext.request.contextPath}相當於<%=pageContext.getRequest().getContextPath%>  這句程式碼不能實現
獲得WEB應用的名稱


三、JSTL技術

1.JSTL概述
JSTL(JSP Standard Tag Library),JSP標準標籤庫,可以嵌入在jsp頁面中使用標籤的形式完成業務邏輯等功能。jstl出現的目的同el一樣也是要代替jsp頁面中的指令碼程式碼。JSTL標準標準標籤庫有5個子庫,但隨著發展,目前常使用的是他的核心庫

 2.JSTL核心庫的常用標籤
1)<c:if test=””>標籤
其中test是返回boolean的條件
2)<c:forEach>標籤
使用方式有兩種組合形式遍歷集合、陣列

相關推薦

java程式設計師入門jspEL表示式jstl表示式

一、jsp技術 1.jsp指令碼和註釋 jsp指令碼: 1)<%java程式碼%> ----- 內部的java程式碼翻譯到service方法的內部 2)<%=java變數或表示式> ----- 會被翻譯成service方法內部out.print()

java程式設計師入門之一javaweb專案開發環境

一、java開發環境 1、jdk的下載安裝 JDK:JDK是java語言的軟體開發包,是整個java開發的核心,包含了java的執行環境(jvm+java系統類庫)和java工具,執行java程式的最小環境為jre,開發java程式的最小環境為JDK。 JDK的下載:ora

java程式設計師進階()oracle基礎詳解()oracle查詢語句和資料排序

本文所以練習都是基於oracle自帶提供的一個數據庫進行的。資料庫中包含員工表emp。部門資訊表dept。員工工資工總表下面是三個表的表結構:一:基本查詢語句1.最簡單的查詢所有列語句Select * from emp;2.查詢指定列表的查詢語句Select empno ,e

java程式設計師進階(七)linux基礎入門(五)linux檔案/目錄的許可權和歸屬管理

在linux中的每一個檔案或目錄都包含有訪問許可權,這些訪問許可權決定了誰能訪問和如何訪問這些檔案和目錄。相應的每一個檔案和目錄都有所屬的屬主和屬組,合理的設定檔案和目錄的屬組和屬主在檔案/目錄管理中佔據著很重要的地位,所以,今天我就和大家一起來看一下有關檔案/目錄的許可權和歸屬的相關設定

java程式設計師進階(六)linux基礎入門(四)linux下VIM文字編輯器使用

  linux下編寫配置檔案最好的編輯工具莫過於vim了。Vim的功能實在太多太全,Vim的很多功能也許我們很少用得到,真正為大家常用的功能可能只佔到所有功能的冰山一角。Vim終歸只是一個編寫程式碼或編輯文件的工具,所以只要掌握一些足夠我們使用的功能即可。 做個廣告

java程式設計師進階(五)linux基礎入門(三)linux使用者和組管理

我們大家都知道,要登入linux作業系統,我們必須要有一個使用者名稱和密碼。每一個使用者都由一個惟一的身份來標識,這個標識叫做使用者ID.系統中的每一個使用者也至少需要屬於一個"使用者分組".同樣,使用者分組也是由一個惟一的身份來標識的,該標識叫做使用者分組ID(GID).每位使用者的許可

java程式設計師進階(四)linux基礎入門)linux檔案及目錄命令管理

大家都知道,熟悉命令操作的開發人員,Linux作業系統命令操作效率要高於圖形介面的操作,所以瞭解和學習linux基本命令操作是學習linux作業系統的首要任務,本文主要介紹以下四個知識點:   1.      She

java程式設計師進階(十三)linux基礎入門(一)vmvare下安裝linux RedHat圖解(超詳細篇)

對於linux,我從大二就想學習一下,但一直苦於無從下手,所以一直拖到現在,鑑於筆者瞭解很多人在linux入門的困難在何處,所以我認為本套入門基礎文章還是挺適合想學習linux的朋友,本系列文章大約十篇文章左右,近期會不斷更新下來,沒有linux基礎但又想學習linux的朋友可以關注一下本系列

java程式設計師進階(七) HTTP權威指南 HTTP連線管理及對TCP效能的考慮

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

java程式設計師進階(五)oracle基礎詳解(五)oracle資料庫體系架構詳解

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

java程式設計師進階(八)分享一個爬取B2B網站資訊的程式

      前段時間,女朋友如願以償的找到了銷售的工作,第一天正式上班還挺高興,第二天就開始愁眉苦臉了。就是因為他這銷售實在是太麻煩,以後每天要到一些B2B網站去找一些客戶資訊,每天要找幾百條,剛開始我還安慰的說,沒事,以後我幫你找,我接手這工作第一天還很老實,第一天用了不到一個小時的時間幫忙找了八十條,但到

Java程式設計師從笨(三)23種設計模式工廠模式

設計模式的六大原則 開閉原則是最基礎的設計原則,其它的五個設計原則都是開閉原則的具體形態,依照java的語言的稱謂,開閉原則是抽象類,其它的五個原則是具體實現類 開閉原則:軟體實體應當對外擴充套件開放,對修改關閉,通俗點說就是應該在不修改原有程式碼的

DotNet入門無限極分類(一)設計篇

對數 tar null 擴展 creat nvarchar 鏈表 文章 數據庫設計 寫這個教程的原因,是因為,無限極分類,在許多項目中,都用得到。而對於新手來說,不是很好理解,同時,操作上也有一些誤區或者不當之處。所以我就鬥膽,拋磚引玉一下,已一個常見的後臺左側頻道樹為例子

程式設計師面試100題一 陣列迴圈移位

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

switch語句與三種迴圈語句,JAVA程式設計師程式設計新手入門基礎學習筆記

Java是一種可以撰寫跨平臺應用軟體的面向物件的程式設計語言。Java 技術具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應用於PC、資料中心、遊戲控制檯、科學超級計算機、行動電話和網際網路,同時擁有全球最大的開發者專業社群。 自己整理了-份201 8最全面前端學習資料,從最基礎的HTML+

程式設計師面試100題叉樹中兩個節點的最近公共父節點

                這個問題可以分為三種情況來考慮:情況一:root未知,但是每個節點都有parent指標此時可以分別從兩個節點開始,沿著parent指標走向根節點,得到兩個連結串列,然後求兩個連結串列的第一個公共節點,這個方法很簡單,不需要詳細解釋的。情況二:節點只有左、右指標,沒有parent

Java程式設計師的網際網路轉型

在開始講乾貨之前,先了解下網際網路。網際網路的生命線是客戶體驗,短時的砸錢可以迅速擴充套件使用者量,但是如何保持客戶黏度才是真正的重點。網際網路的精神就一個字“快”!快包含兩層意義:第一層對於系統來說(效能快、終端響應快、擴充套件快),第二層對於開發人員(輕量級、上手快、開源)。只有夠快才可以提高客戶體驗,沒

Java程式設計師的Scala入門教程

Java 8擁有了一些初步的函數語言程式設計能力:閉包等,還有新的併發程式設計模型及Stream這個帶高階函式和延遲計算的資料集合。在嘗試了Java 8以後,也許會覺得意猶未盡。是的,你會發現Scala能滿足你在初步嘗試函數語言程式設計後那求知的慾望。 安裝Scala

啟航 —— 記:一名初中學歷Java程式設計師的自考本科

      前言         對於一名低學歷的程式設計師來說,學歷、數學、英語成了我在這個行業長遠發展的三大攔路虎。而在這三大攔路虎中,學歷甚至比數學、英語還重要,因為它決定著你是否有機會進入某個公司的大門。         半年之前,我報考了北京師範大學網路教育

Java 程式設計師的網際網路轉型

武林中,"天下武功出少林"指各門各派的武功都與少林武學有一定的淵源,技術也是相同的道理,對於 Java 領域的應用而言,傳統行業與網際網路行業的技術都來自 J2SE 和 J2EE 的生態圈,但是兩個行業的側重點不同,傳統行業側重於嚴格的規範、複雜的流程、豐富的功能,因此