JSP(Java Server Page)

JSP基礎(chǔ)

  1. JSP是簡(jiǎn)化Servlet編寫(xiě)的一種技術(shù),它將Java代碼和HTML語(yǔ)句混合在同一個(gè)文件中編寫(xiě),只對(duì)網(wǎng)頁(yè)中的動(dòng)態(tài)產(chǎn)生的內(nèi)容采用Java代碼來(lái)編寫(xiě),而對(duì)固定不變的靜態(tài)內(nèi)容采用靜態(tài)HTML頁(yè)面的方式編寫(xiě)。
  2. helloworld
    在eclipse中新建一個(gè)JSP頁(yè)面,在body節(jié)點(diǎn)內(nèi)的<% %>即可編寫(xiě)Java代碼.
<%
        Date date = new Date();
        System.out.println(date);
%>
  1. JSP可以放置在WEB應(yīng)用程序中的除了WEB-INF及其子目錄外的其他任何目錄中,JSP頁(yè)面的訪問(wèn)路徑與普通HTML頁(yè)面的訪問(wèn)路徑形式完全一樣。

JSP運(yùn)行原理

1)JSP本質(zhì)上是一個(gè)Servlet,WEB容器(Servlet引擎)收到以.jsp為擴(kuò)展名的URL的訪問(wèn)請(qǐng)求時(shí),它將把該訪問(wèn)請(qǐng)求交給JSP引擎去處理。
2) 每個(gè)JSP 頁(yè)面在第一次被訪問(wèn)時(shí),JSP引擎將它翻譯成一個(gè)Servlet源程序,接著再把這個(gè)Servlet源程序編譯成Servlet的class類(lèi)文件,然后再由WEB容器(Servlet引擎)像調(diào)用普通Servlet程序一樣的方式來(lái)加載和解釋執(zhí)行這個(gè)由JSP頁(yè)面翻譯成的Servlet程序。
3)JSP規(guī)范也沒(méi)有明確要求JSP中的腳本程序代碼必須采用Java語(yǔ)言,JSP中的腳本程序代碼可以采用Java語(yǔ)言之外的其他腳本語(yǔ)言來(lái)編寫(xiě),但是JSP頁(yè)面最終必須轉(zhuǎn)換成Java Servlet程序。
4)可以在WEB應(yīng)用程序正是發(fā)布之前,將其中所有的JSP頁(yè)面預(yù)先編譯成Servlet程序。

JSP隱含對(duì)象:沒(méi)有聲明的變量就可以使用,一共9個(gè)隱含對(duì)象

 public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
        throws java.io.IOException, javax.servlet.ServletException {

final java.lang.String _jspx_method = request.getMethod();
if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method) && !javax.servlet.DispatcherType.ERROR.equals(request.getDispatcherType())) {
response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSPs only permit GET POST or HEAD");
return;
}

    final javax.servlet.jsp.PageContext pageContext;
    javax.servlet.http.HttpSession session = null;
    final javax.servlet.ServletContext application;
    final javax.servlet.ServletConfig config;
    javax.servlet.jsp.JspWriter out = null;
    final java.lang.Object page = this;
    javax.servlet.jsp.JspWriter _jspx_out = null;
    javax.servlet.jsp.PageContext _jspx_page_context = null;

//...
//使用<% %>編寫(xiě)的代碼在此位置,可以用到request,response,pageContext,session,application,
//config,out,page這8個(gè)隱含對(duì)象。(實(shí)際上還可以使用一個(gè)叫exception的隱含對(duì)象)。

1)request: HttpServletRequest的一個(gè)對(duì)象
2)response: HttpServletResponse的一個(gè)對(duì)象(JSP頁(yè)面中幾乎不會(huì)調(diào)用該對(duì)象任何方法)
3)pageContext:頁(yè)面的上下文,是PageContext的一個(gè)對(duì)象。可以從該對(duì)象中獲取到其他8個(gè)隱含對(duì)象,也可以從中獲取到當(dāng)前頁(yè)面的其他信息。(學(xué)習(xí)自定義標(biāo)簽時(shí),使用它。)

  1. session: 代表瀏覽器和服務(wù)器的一次會(huì)話,是HttpSession的一個(gè)對(duì)象。
  2. application:代表當(dāng)前應(yīng)用,是ServletContext對(duì)象。
  3. config:當(dāng)前JSP對(duì)應(yīng)的Servlet的ServletConfig 對(duì)象。若需要訪問(wèn)當(dāng)前JSP配置的初始化參數(shù),需要通過(guò)映射的地址才可以。
    映射JSP:
<servlet>
    <servlet-name>hellojsp</servlet-name>
    <jsp-file>/hello.jsp</jsp-file>
    <init-param>
        <param-name>test</param-name>
        <param-value>testvalue</param-value>
    </init-param>
  </servlet>
  
  <servlet-mapping>
    <servlet-name>hellojsp</servlet-name>
    <url-pattern>/hellojsp</url-pattern>
  </servlet-mapping>
  1. out: JspWriter對(duì)象,調(diào)用out.println()可以直接把字符打印到瀏覽器上。
    8)page:指向當(dāng)前JSP對(duì)應(yīng)的Servlet對(duì)象的引用,但為Object類(lèi)型,只能調(diào)用Object類(lèi)的方法(幾乎不用)。
    9)exception:在聲明了page 指令的isErrorPage="true"時(shí)才可以使用。
<%@ page isErrorPage="true" %>

pageContext,request,session,application(對(duì)屬性的作用域范圍從小到大)
out, response,config, page, excpetion

JSP基本語(yǔ)法

1)JSP模板元素:JSP頁(yè)面中的靜態(tài)HTML內(nèi)容稱(chēng)之為模板元素。
2)JSP表達(dá)式(expression)提供了將一個(gè)java變量或表達(dá)式的計(jì)算結(jié)果輸出到客戶端的簡(jiǎn)化方式,它將要輸出的變量或表達(dá)式直接封裝在<%=和 %>之中。
3)JSP腳本片斷(scriptlet)是指嵌套在<%和%>之中的一條或多條Java程序代碼,多個(gè)腳本片斷中的代碼可以相互訪問(wèn)

  1. JSP聲明:JSP聲明將Java代碼封裝在<%!和%>之中,它里面的代碼將被插入進(jìn)Servlet的_jspService方法的外面。(在JSP頁(yè)面中幾乎從來(lái)不這樣使用)
  2. JSP注釋?zhuān)?br> <%-- JSP注釋 --%>

JSP指令

  • JSP指令是為JSP引擎而設(shè)計(jì)的,它們并不直接產(chǎn)生任何可見(jiàn)輸出而只是告訴引擎如何處理JSP頁(yè)面中的其余部分。
  • 在目前的JSP 2.0中,定義了page、include和taglib三種指令。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • JSP內(nèi)置對(duì)象(9個(gè)常用的內(nèi)置對(duì)象) 1.request對(duì)象request 對(duì)象是 javax.servlet.h...
    小沙鷹168閱讀 221評(píng)論 0 0
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,728評(píng)論 18 399
  • 1.什么是JSP (1)jsp全稱(chēng)是Java Server Pages,它和Servlet技術(shù)一樣都是sun公司定...
    yjaal閱讀 3,837評(píng)論 5 99
  • 1.學(xué)習(xí)內(nèi)容 JSP技術(shù)入門(mén)和常用指令 JSP的內(nèi)置對(duì)象&標(biāo)簽介紹 EL表達(dá)式&EL的內(nèi)置對(duì)象 2.JSP技術(shù)入門(mén)...
    WendyVIV閱讀 2,327評(píng)論 1 18
  • 斷斷續(xù)續(xù)減肥2個(gè)月啦,瘦了差不多6.7斤的樣子,但是還不夠,畢竟我是一個(gè)基數(shù)大(目前69kg的樣子)而身高只有15...
    Doris李閱讀 190評(píng)論 0 0

友情鏈接更多精彩內(nèi)容