1. 程式人生 > >javaWeb(三)Jsp基礎

javaWeb(三)Jsp基礎

1..JSP 預設地址WebContent(WebRoot,WebApp) 為根目錄的檔案所在路徑 以當前頁面為例

該頁面位於WebContent/pages/index.jsp WebContent為根目錄 則可以省略

/pages/index.jsp

jsp在第一次訪問的時候會慢一點,會被編譯成servlet,之後就會很快速

servlet 在第一次訪問的會慢,servlet物件只在第一次訪問的時候建立一次

ps:jsp頁面 現在的專案基本上已經禁止通過url去直接訪問jsp頁面了,現在無論如何,訪問一個網址也必須經過servlet

--在jsp頁面中新增java程式碼的方式為 <% %> 在jsp頁面中 有內建物件 out

使用內建物件c.print() 可以將java資料輸出到頁面

<%= %> 輸入JSP表示式

2.作用域 四種 作用域他們都有共同的方法

setAttribute 輸入

getAttribute 獲取

--pageContext --碟子-- 的作用域就是當前頁面 只能當前頁面放置 當前頁面拿;

--request --碗--在使用重定向的時候 會有兩次請求, 第二次請求的request沒有放

--盆--所以不能拿到(只要不起新請求一直存在)

--session --缸-- 當前頁面放 當前會話拿, 不關閉瀏覽器保持會話連線

--application -----

只要伺服器不重啟就會一直存在(注意 該作用域 -所有客戶端共享)

3.JSP(動態網頁的java+html)使用

優點:頁面表現簡單 缺點:邏輯處理麻煩

一般使用JSP(做頁面)+servlet(寫邏輯)+javabean(封裝資料)

-JSP語法

---編譯器指令 include,page,taglib

--page指令

<%@ page contentType="text/html;charset=utf-8"%>

<%@ page import="jaba.util.*">

--include指令

<%@include file="相對位置"%>

常用語法:

<jsp:include page="MyJsp.jsp"></jsp:include>

<%String a="Myjsp2.jsp";%>

<jsp:include page="<%=a%>"></jsp:include>

<jsp:include page="Mysql.jsp">

<jsp:param name="a" value="AAA"/>

<jsp:param, name="b" value="BBB"/>

<jsp:include>

靜態匯入

<%@include file="logo.jsp"%>

是在servlet引擎轉義時,就把此檔案內容包含進去(兩個檔案的原始碼整

合到一起,全部放到jspServlet方法中) 所以只生成了一個servlet,所以兩

頁面不能有同名的變數,執行效率稍微高一點,耦合性較高,不夠靈活

動態匯入

<jsp:include page="logo.jsp"></jsp:include>

實在servlet轉義之後,請求的此頁面,所以生成了兩個servlet,所以可有

相同的變數,生成兩個servlet,相當於兩個類之間的呼叫,耦合低靈活

指令碼語法

--註釋:<!-- -- > <%-- ...--%>

--宣告<%!...%>

--表示式<%=...%>

--java指令碼段<%...%>

動作語法

<jsp.forward>,<jsp,include>,<jsp,plugin><jsp.getProperty><jsp.setProperty><jsp.useBean>

4.jsp隱式物件()

--request 物件表示的來自客戶端的請求.例如在form表單中填寫的資訊,是最常用的物件關於他的方法使用較多的是 getparameter/gerParameterNames/getParameterValue 通過呼叫者幾個方法來獲取請求物件中包含的引數的值

--response 物件代表的是對客戶端的響應,也就是可以通過response物件來組織傳送到客戶端的資料,但是由於組織方式比較底層,一般不用,需要向客戶端傳送文字時直接使用 out 物件即可(out加了緩衝 效率更高)

--out 物件代表了伺服器端向客戶端傳送資料的物件, 與response 物件不同 out物件傳送的內容是瀏覽器需要顯示的內容,是文字一級的,可以通過 out 物件直接向客戶端寫一個由程式動態生成的HTML檔案,常用的方法除了 print 和 println之外 還有 clear()/clearBuffer()/flush()/

getBufferSize 和getRemaining 這因為out 物件內部包含了一個緩衝區,所以需要一些對緩衝區進行操作的方法 常用方法有 setAttribute()

--session物件 代表伺服器與客戶端所建立的會話,當需要在不同的JSP頁面保留客戶資訊的情況下使用,比如線上購物或者客戶軌跡跟蹤等

--application 物件負責提供應用程式在伺服器中執行時的一些全域性資訊,常用的方法有getMimeType和getRealPath等 一個專案中一般只有一個application物件

--pageContext 頁面上下文物件 封裝了當前jsp頁面的執行的資訊,它提供了返回jsp頁面的其他隱式物件的方法

pageContext. + .....

getRequest()--getResponse()--getPage()--getServletContext()--getApplication()--getOut()--getSession()--getException()--getServletConfig()---findAttribute()

forward通過此方法可以重定向

include通過此方法可以包含頁面

--config 物件提供了一些配置資訊,常用的方法有getInitPara 和getInitParameterNames 以獲得Servlet初始化的引數

--page 物件代表了正在執行的由jsp檔案產生的類物件 一般不建議使用

--exception 物件則代表了jsp檔案執行時所產生的例外物件,此物件不能再一般jsp檔案中直接使用, 只能在使用了<%@ page isErrorPage="true"%> 的jsp檔案中使用