1. 程式人生 > >JavaWeb——JSP技術

JavaWeb——JSP技術

response att fin 服務器配置 java 直接 content find 寫到

一、JSP腳本和註釋

JSP腳本

1)內嵌Java代碼

<%java代碼%>   // 內部的java代碼翻譯到service方法的內部

2)直接輸出到頁面上

<%=java變量或表達式>   // 會被翻譯成service方法內部out.print()

3)設置Servlet成員內容

<%!java代碼%>   // 會被翻譯成servlet的成員的內容

JSP註釋

1)Html註釋:

<!--註釋內容-->   // 可見範圍 jsp源碼、翻譯後的servlet、頁面 顯示html源碼

2)java註釋:

//單行註釋 /*多行註釋*/   // 可見範圍 jsp源碼 翻譯後的servlet

3)jsp註釋:

<%--註釋內容--%>   // 可見範圍 jsp源碼可見

JSP運行原理:

jsp本質就是servlet,jsp在第一次被訪問時會被Web容器翻譯成servlet再執行

過程:

第一次訪問---->helloServlet.jsp---->helloServlet_jsp.java---->編譯運行

PS:被翻譯後的servlet在Tomcat的work目錄中可以找到

二、JSP指令

jsp的指令是指導jsp翻譯和運行的命令,jsp包括三大指令:

1)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="前綴"%>

三、JSP內置/隱式對象

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

用來保存用戶的信息

application

javax.servlet.ServletContext

所有用戶的共享信息

page

java.lang.Object

指當前頁面轉換後的Servlet類的實例

pageContext

javax.servlet.jsp.PageContext

JSP的頁面容器

exception

java.lang.Throwable

表示JSP頁面所發生的異常,在錯誤頁中才起作用

1、out對象

out的類型:JspWriter

out作用就是想客戶端輸出內容----out.write()

out緩沖區默認8kb 可以設置成0 代表關閉out緩沖區 內容直接寫到respons緩沖器

技術分享圖片

2、pageContext對象

jsp頁面的上下文對象,作用如下:

page對象與pageContext對象不是一回事

1)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()
  • pageContext.getSession()

四、jsp標簽(動作)

1)頁面包含(動態包含):

<jsp:include page="被包含的頁面"/>

2)請求轉發:

<jsp:forward page="要轉發的資源" />

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

技術分享圖片

JavaWeb——JSP技術