您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Web中Jsp說什么”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Web中Jsp說什么”這篇文章吧。
Jsp全稱Java Server Pages,也就是在我們JavaWeb中的動態(tài)頁面。
Jsp能夠以HTML頁面的方式呈現(xiàn)數(shù)據,是一個可以嵌入Java代碼的HTML。
Jsp其本質就是一個Servlet。Servlet能做的事情JSP都能做。
Jsp必須運行在服務器中,不能直接使用瀏覽器打開。
Jsp是Web網頁的技術標準,主要語法組成包括:指令,html模板元素,腳本片段(小腳本),表達式,聲明,注釋,后綴是*.jsp。
Jsp主要負責顯示及獲取數(shù)據
Jsp是動態(tài)頁面,html是靜態(tài)頁面
動態(tài)頁面 | 靜態(tài)頁面 | |
---|---|---|
運行原理 | 通過服務器解析后,將數(shù)據在瀏覽器中顯示 | 直接在瀏覽器中解析運行 |
維護成本 | 較低,可以修改后臺數(shù)據,進而影響頁面中的數(shù)據 | 較高,必須將修改后的頁面覆蓋原頁面 |
數(shù)據庫 | 可以連接數(shù)據庫 | 不可連接數(shù)據庫 |
訪問速度 | 較慢 | 較快 |
書寫代碼 | 可以書寫java代碼 | 不能書寫java代碼 |
注意事項
1、jsp頁面是一個類似于html的一個頁面。 jsp直接存放到WebContent目錄下,和html一樣訪問jsp的時候,也和訪問html一樣
2、jsp的默認編碼集是iso-8859-1,修改jsp的默認編碼為UTF-8
實際上Tomcat在運行JSP時,并不是直接顯示的我們所編寫的JSP頁面,而是將JSP頁面轉換成了一個Java類,它實際上就是一個Servlet。
讓我們來找到那個目錄,對于Eclipse來說是在:工作空間下,右鍵Tomcat服務點擊Browse Deployment Location...
在work目錄下的...work\Catalina\localhost\day07_jsp\org\apache\jsp文件夾中
打開index_jsp.java文件查看里面的內容:發(fā)現(xiàn),生成的類繼承于HttpJspBase類。這是一個jsp文件生成Servlet程序要繼承的基類!并且這個HttpJspBase類繼承于HttpServlet類。
那么當我們訪問 一個xxx.jsp文件后翻譯成java文件的全名是 xxx_jsp.java文件。
在tomcat下的conf目錄中的web.xml配置好了JSP的映射信息
以后在訪問同一個jsp文件
如果文件未改變,不會被翻譯和編譯
如果文件改變,會翻譯和編譯
指令
語法格式:<%@ %>
三大指令:<%@ page %> ,<%@ include %> ,| <%@ taglib %>
模板元素
html&css&js&jQuery等...
格式 :<%%>
作用:在_jspService()方法中,書寫java代碼。
<% int i = 0;%>
格式: <%=%>
作用:將數(shù)據顯示到頁面,與out.print()作用相同。
<%=i%>
聲明
格式:<%!%>
作用:在翻譯后的class helloworld_jsp這個Servlet類中,書寫java代碼。
注釋
java:單行注釋://,多行注釋:/**/
html:<!-- -->
jsp:<%-- --%>
JSP注釋 | Java注釋 | HTML注釋 | |
---|---|---|---|
JSP頁面 | 可見 | 可見 | 可見 |
Java代碼 | 不可見 | 可見 | 可見 |
瀏覽器 | 不可見 | 不可見 | 可見 |
語法格式
<%@ 指令名 屬性=屬性值 屬性2=屬性值2 ... %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
屬性
language:語言,值為java且僅java。
contentType:與response.setContentType()作用一致,設置瀏覽器編碼。
pageEncoding:設置Jsp頁面的編碼字符集。
import:導包
isErrorPage:設置當前頁面是否為錯誤頁面,默認值"false"。
true:設置當前頁面為錯誤頁面,可以使用exception內置對象,捕獲異常 。
false:設置當前頁面不是錯誤頁面,不可以使用exception內置對象,捕獲異常 。
errorPage:設置當前頁面錯誤時的跳轉目標頁面。錯誤需要在_jspService()中才可以捕獲。
<%@include file="被包含文件的路徑" %>
作用:將目標文件包含到當前文件中。
特點:被包含的文件不會被翻譯&編譯。(先包含,再翻譯)
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
屬性
prefix用來指定前綴名,我們通過該名來使用JSTL。
uri相當于庫的唯一標識,因為JSTL由多個不同的庫組成,使用該屬性指定要導入哪個庫。
作用:引入標簽庫。
JSP動作標簽與HTML標簽不同,HTML標簽由瀏覽器來解析,而JSP動作標簽需要服務器(Tomcat)來運行。
作用:在頁面中用于轉發(fā)操作
<jsp:forward page="target.jsp"></jsp:forward>
轉發(fā)子標簽;在轉發(fā)時設置請求參數(shù),通過request.getParameter()在目標頁面獲取請求參數(shù)。
<jsp:forward page="target.jsp"> <jsp:param value="paramValue" name="paramName"/> </jsp:forward>
注意:如果轉發(fā)動作標簽不需要設置請求參數(shù),該標簽開始與結束標簽內部,不允許書寫任何內容,(包括空格)
作用:動態(tài)包含,將其他頁面包含到當前頁面中。
<jsp:include page="target.jsp"></jsp:include>
特點:被包含的文件同時會被翻譯&編譯。(先翻譯,再包含)
本質原理:當使用動態(tài)包含時,Tomcat會在生成的Servlet中加入如下代碼:
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "target.jsp", out, false);
@include指令 | jsp:include標簽 | |
---|---|---|
特點 | 靜態(tài)包含 | 動態(tài)包含 |
語法的基本形式 | <%@ include file=”…”%> | <jsp:include page=”…”/> |
包含動作發(fā)生的時機 | 翻譯期間 | 請求期間 |
是否生成java文件 | 不生成 | 生成 |
合并方式 | 代碼復制 | 合并運行結果 |
包含的內容 | 文件實際內容 | 頁面輸出結果 |
代碼沖突 | 有可能 | 不可能 |
編譯次數(shù) | 1 | 包含的文件 + 1 |
適用范圍 | 適用包含純靜態(tài)內容(CSS,HTML,JS),或沒有非常耗時操作。或大量java代碼的jsp | 包含需要傳遞參數(shù)。含有大量java代碼,運算,耗時很長的操作。 |
JSP容器為每個頁面提供的Java對象,開發(fā)者可以直接使用它們而不用顯式聲明
類型:PageContext
定義:代表頁面域對象,用來代表整個JSP頁面。
作用:
頁面域對象
九大隱式對象的“大哥”,可以直接調用其他八大隱式對象。
在Servlet中獲取方式:無。
類型:HttpServletRequest
定義:代表瀏覽器向服務器發(fā)送的請求報文,該對象由服務器創(chuàng)建,最終以參數(shù)的形式發(fā)送到doGet()和doPost()方法中。
每當客戶端請求一個JSP頁面時,JSP引擎就會制造一個新的request對象來代表這個請求。request對象提供了一系列方法來獲取HTTP頭信息,cookies,HTTP方法等等。
作用(詳見Servlet中request對象)
獲取請求參數(shù)
獲取url地址參數(shù)
請求轉發(fā)
向請求域中保存數(shù)據(獲取數(shù)據&移除數(shù)據)
獲取請求頭信息
在Servlet中獲取方式:doGet()或doPost()中直接使用。
類型:HttpSession
定義:代表瀏覽器與服務器之間的會話。
作用
session對象用來跟蹤在各個客戶端請求間的會話。
會話域對象,
在Servlet中獲取方式 :request.getSession();
類型:ServletContext
定義:Servlet上下文,代表當前web應用。
Web容器在啟動時,它會為每個Web應用程序都創(chuàng)建一個唯一對應的ServletContext對象,意思是Servlet上下文,代表當前Web應用。
作用
獲取項目的上下文路徑(帶/的項目名):getContextPath()
獲取虛擬路徑所映射的本地真實路徑:getRealPath(String path)
獲取WEB應用程序的全局初始化參數(shù)(基本不用)
4. 獲取Web應用初始化參數(shù):application.getInitParameter("ParamName");
在Servlet中獲取方式:使用this.getServletContext()方法獲取。
類型:Object
作用:this,當前類對象。
類型:HttpServletResponse
定義:代表服務器向瀏覽器發(fā)送的響應報文,該對象由服務器創(chuàng)建,最終以參數(shù)的形式發(fā)送到doGet()和doPost()方法中。
作用:
向頁面(響應體)中響應數(shù)據,數(shù)據包括文本、Html等。
重定向
設置響應頭信息
在Servlet中獲取方式:doGet()或doPost()中直接使用
類型:ServletConfig
定義:代表當前Servlet的配置信息,每一個Servlet都有一個唯一對應的ServletConfig對象。
作用:
獲取Servlet名稱:getServletName()
獲取全局上下文ServletContext對象:getServletContext()
獲取Servlet初始化參數(shù):getInitParameter(String) / getInitParameterNames()。
在Servlet中獲取方式:this.getServletConfig()
類型:JspWriter
定義:代表當前頁面的輸出流。
作用:與Servlet中的PrintWriter功能類似,將數(shù)據響應到頁面,響應的數(shù)據可以是頁面、頁面片段、字符串等。
在Servlet中獲取方式:無
類型:Throwable
定義:代表當前頁面的異常對象。
作用:捕獲處理頁面中的異常信息。
在Servlet中獲取方式:new Throwable()
九大內置對象,都是我們可以在【代碼腳本】中或【表達式腳本】中直接使用的對象。
程序中的域對象,主要負責在不同web資源之間進行數(shù)據交換,(如:servlet和jsp之間的數(shù)據交換)。
每個域對象內部都維護了一個Map<String , Object>,域對象的共同方法。
設置屬性到域中:void setAttribute(String key , Object value);
從域中獲取指定的屬性:Object getAttribute(String key);
移除域中指定屬性:void removeAttribute(String key);
pageContext: 當前頁面中共享數(shù)據有效,離開當前頁面失效。
每個頁面都有自己唯一的一個pageContext對象。
注意servlet中沒有該對象。
request: 當前請求中共享數(shù)據有效。
當前請求:轉發(fā)、直接訪問一個頁面為當前請求。
不在當前請求:重定向、 打開頁面再點擊頁面中的超鏈接不在當前請求 。
session: 一次會話范圍中共享數(shù)據有效。
當前會話:當前瀏覽器不關閉&不更換瀏覽器即為當前會話。
只關心瀏覽器是否關閉,不關心服務器關閉重啟。
不同瀏覽器不共享會話。
application: 在服務器運行的一次過程中共享數(shù)據有效。
服務器關閉銷毀
域對象 | 作用范圍 | 起始時間 | 結束時間 |
---|---|---|---|
pageContext | 當前JSP頁面 | 頁面加載 | 離開頁面 |
request | 同一個請求 | 收到請求 | 響應 |
session | 同一個會話 | 開始會話 | 結束會話 |
application | 當前Web應用 | Web應用加載 |
Web應用卸載 |
以上是“Web中Jsp說什么”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業(yè)資訊頻道!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。