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檔案中使用