JSP入門及語法

一、JSP概述

1、JSP:Java Server Pages(運行在服務(wù)器端的頁面)。就是Servlet。
學(xué)習(xí)JSP學(xué)好的關(guān)鍵:時刻聯(lián)想到Servlet即可。
2、JSP的原理
    JSP會被Tomcat翻譯成一個Servlet。該Servlet在Tomcat\work\catalina\locahot\day09\....
3、JSP、Servlet開發(fā)的最佳實踐:
    Servlet:一般作為控制組件,處理業(yè)務(wù)邏輯
    JSP:一般作為顯示組件,顯示數(shù)據(jù)

二、JSP的語法

1、JSP的模板元素:(先寫HTML)
        就是JSP中的那些HTML標(biāo)記
        作用:頁面布局和美化
2、JSP的Java腳本表達(dá)式:
        作用:輸出數(shù)據(jù)到頁面上
        語法:<%=表達(dá)式%>(實際上就是調(diào)用輸出流打印到頁面上)
3、JSP中的Java腳本片段:(實際開發(fā)中,應(yīng)做到JSP中不能出現(xiàn)一行Java腳本片段)
        作用:書寫Java代碼邏輯
        語法:<%
                語句1;
                語句2;
              %>
        原理:其中的語句會原封不動的被服務(wù)器翻譯到對應(yīng)的Servlet的service方法中。
4、JSP的聲明:(了解其原理)
        作用:定義類的成員
        語法:<%!
                你的Java代碼
                %>
5、JSP的注釋:
        作用:注釋Java腳本代碼
        語法:<%--這是注釋--%>

三、JSP的指令:給JSP引擎用的(服務(wù)器用的)

    基本的語法格式:<%@ 指令名稱 屬性1="值1" 屬性2="值2" ....%>
    作用:告訴服務(wù)器,該如何處理JSP中除了指令之外的內(nèi)容的。
    
3.1page
    作用:定義JSP頁面的各種屬性
    屬性:
        language:指示JSP頁面中使用腳本語言。默認(rèn)值java,目前只支持java。
        extends:指示JSP對應(yīng)的Servlet類的父類。不要修改。
        *import:導(dǎo)入JSP中的Java腳本使用到的類或包。(如同Java中的import語句)
                    JSP引擎自動導(dǎo)入以下包中的類:
                            javax.servlet.*
                            javax.servlet.http.*
                            javax.servlet.jsp.*
                注意:一個import屬性可以導(dǎo)入多個包,用逗號分隔。
        *sessioin:指示JSP頁面是否創(chuàng)建HttpSession對象。默認(rèn)值是true,創(chuàng)建
        *buffer:指示JSP用的輸出流的緩存大小.默認(rèn)值是8Kb。
        autoFlush:自動刷新輸出流的緩存。
        isThreadSafe:指示頁面是否是線程安全的(過時的)。默認(rèn)是true。
                true:不安全的。
                false:安全的。指示JSP對應(yīng)的Servlet實現(xiàn)SingleThreadModel接口。
        *errorPage:指示當(dāng)前頁面出錯后轉(zhuǎn)向(轉(zhuǎn)發(fā))的頁面。
                    目標(biāo)頁面如果以"/"(當(dāng)前應(yīng)用)就是絕對路徑。
                    
                    配置全局錯誤提示頁面:
                        web.xml
                         <error-page>
                            <exception-type>java.lang.Exception</exception-type>
                            <location>/error.jsp</location>
                          </error-page>
                          <error-page>
                            <error-code>404</error-code>
                            <location>/404.jsp</location>
                          </error-page>
        *isErrorPage:指示當(dāng)前頁面是否產(chǎn)生Exception對象。
        *contentType:指定當(dāng)前頁面的MIME類型。作用與Servlet中的response.setContentType()作用完全一致
        *pageEncoding:通知引擎讀取JSP時采用的編碼(因為要翻譯)
                還有contentType屬性的作用。
        *isELIgnored:是否忽略EL表達(dá)式。${1+1}。默認(rèn)值是false。
        
    page指令最簡單的使用方式:<%@ page pageEncoding="UTF-8"%>
3.2include(靜態(tài)包含,開發(fā)中能用靜的不用動的)
    作用:包含其他的組件。
    語法:<%@include file=""%>file指定要包含的目標(biāo)組件。路徑如果以"/"(當(dāng)前應(yīng)用)就是絕對路徑。
    原理:把目標(biāo)組件的內(nèi)容加到源組件中,輸出結(jié)果。
    
    動態(tài)包含:
        采用動作元素:<jsp:include page=""/>路徑如果以"/"(當(dāng)前應(yīng)用)就是絕對路徑。
        
    
3.3taglib
    作用:引入外部的標(biāo)簽
    語法:<%@taglib uri="標(biāo)簽名稱空間" prefix="前綴"%>
        <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

四、JSP的內(nèi)置對象(9個JSP內(nèi)置對象)

JSP的內(nèi)置對象引用名稱            對應(yīng)的類型

request                         HttpServletRequest
response                        HttpServletResponse
session                         HttpSession(有開關(guān)的:page指令的session屬性的取值)
application                     ServletContext
config                          ServletConfig
page                            this(當(dāng)前Servlet對象)
exception                       java.lang.Throwable(有開關(guān)的:page指令的isErrorPage屬性改為true)

out                             JspWriter
pageContext                     javax.servlet.jsp.PageContext非常重要
        有三大作用:
                1、本身是一個域?qū)ο蟆M瑫r還能操作其他三個域?qū)ο螅≒ageContext ServletRequest HttpSession  ServletContext)
                        本身表示的域范圍是本頁面。
                                void setAttribute(String name,Object value)
                                void removeAttribute(String name)
                                Object getAttribute(String name)
                        操作其他的三個域?qū)ο?                                void setAttribute(String name,Object value,int scope)
                                void removeAttribute(String name,int scope)
                                Object getAttribute(String name,int scope)
                                
                                參數(shù)int scope是由PageContext類提供的靜態(tài)變量規(guī)定的。
                                            PageContext.PAGE_SCOPE:頁面范圍(是PageContext本身中的那個Map,代號page)
                                            PageContext.REQUEST_SCOPE:請求范圍(是ServletRequest中的那個Map,代號request)
                                            PageContext.SESSION_SCOPE:請求范圍(是HttpSession中的那個Map,代號session)
                                            PageContext.APPLICATION_SCOPE:請求范圍(是ServletContext中的那個Map,代號application)
                                            
                                            
                        (非常有用)Object findAttribute(String name):依次按照page request session application范圍搜索指定名稱的對象,找到為止。
                        
                2、獲取其他8個隱式對象
                3、提供了轉(zhuǎn)發(fā)和包含的方便方法
                    RequestDispatcher rd = request.getRequestDispatcher("/url");
                    rd.forward(request,response);
                    
                    pageContext.forward("url");
                    pageContext.include("url");

五、四大域?qū)ο?兩個資源之間互傳數(shù)據(jù))

JSP中隱式對象的名稱             范圍名稱            具體的類型
pageContext                     page                javax.servlet.jsp.PageContext
request                         request             javax.servlet.ServletRequest  (顯示完數(shù)據(jù)就沒有用了)
session                         session             javax.servlet.http.HttpSession (顯示完數(shù)據(jù)了,過一會自己還要用)
application                     application         javax.servlet.ServletContext (顯示完數(shù)據(jù)了,大家都要用。不建議使用,如果使用,必須同步處理)

六、JSP常用的動作元素

<jsp:include/>
<jsp:forward/>
<jsp:param/>:在包含和轉(zhuǎn)發(fā)時,利用該標(biāo)簽傳遞請求參數(shù)

六、如何調(diào)試JSP出現(xiàn)的錯誤

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 1.什么是JSP (1)jsp全稱是Java Server Pages,它和Servlet技術(shù)一樣都是sun公司定...
    yjaal閱讀 3,836評論 5 99
  • 前面講了servlet入門實踐現(xiàn)在開始介紹jsp入門實踐,開發(fā)環(huán)境的搭建請參考我前面的tomcat的文章,jsp入...
    伊豚wall閱讀 3,430評論 2 56
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,688評論 18 399
  • 文/王剛 1988年5月25日,路遙在陜北甘泉縣招待所為《平凡的世界》畫上了最后一個句號。時至今日,《平凡的世界》...
    書房記閱讀 1,800評論 0 7
  • 未來會是怎樣,誰也不知道 我羨慕所有有想法有主見有夢想的人 我很想有支配我未來的能力 展望未來 聆聽聲...
    或許南城閱讀 183評論 0 0

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