Java Server Page
生活随笔
收集整理的這篇文章主要介紹了
Java Server Page
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
JSP
- JSP全稱是Java Server Page,基于Java和Servlet一樣是sun公司推出的一套開發動態web資源的技術,稱為JSP/Servlet規范。JSP的本質其實就是一個Servlet。
- jsp是一種動態網頁技術標準,jsp部署在服務器上可以處理客戶端的請求,并根據請求內容動態生成HTML、XML或其他格式文檔的Web網頁,再響應給客戶端
- JSP的內容(標簽)轉成Java文件也是使用resp.getWriter().write去實現的,
JSP和HTML以及Servlet的適用場景:
| HTML | 只能開發靜態資源,不能包含java代碼,無法添加動態數據。 |
| Servlet | 寫java代碼,可以輸出頁面內容,但是很不方便,開發效率極低。 |
| JSP | 它包括了HTML的展示技術,同時具備Servlet輸出動態資源的能力。但是不適合作為控制器來用。 |
JSP執行過程:
Jsp指令:
使用指令需要jar包,在Tomcat目錄下的lib中的jsp-api.jar,復制到IDEA即可
Page指令:
| buffer | JspWriter用于輸出JSP內容到頁面上。告知引擎,設定他的緩存大小。默認8kb |
| autoFlush | 控制out對象的 緩存區 |
| contentType | 告知引擎,響應正文的MIME類型。contentType=“text/html;charset=UTF-8” |
| errorPage | 指定當JSP頁面發生異常時需要轉向的錯誤處理頁面 |
| isErrorPage | 告知引擎,是否抓住異常。如果該屬性為true,頁面中就可以使用exception對象,打印異常的詳細信息。默認值是false |
| pageEncoding: | 告知引擎,翻譯jsp時(從磁盤上讀取jsp文件)所用的碼表。pageEncoding="UTF-8"相當于告知引擎用UTF-8讀取JSP |
| extends | 指定servlet從哪一個類繼承 |
| import | 導入要使用的Java類 |
| info | 定義JSP頁面的描述信息 |
| isThreadSafe | 指定對JSP頁面的訪問是否為線程安全 |
| language | 定義JSP頁面所用的腳本語言,默認是Java |
| session | 告知引擎是否產生HttpSession對象,即是否在代碼中調用request.getSession()。默認是true |
| isELIgnored | 告知引擎,是否忽略EL表達式,默認值是false,不忽略 |
| isScriptingEnabled | 確定腳本元素能否被使用 |
Include指令:
JSP可以通過include指令來包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是該JSP文件的一部分,會被同時編譯執行。
Include指令的語法格式如下:
<%@ include file="文件相對 url 地址" %>Taglib指令:
JSP API允許用戶自定義標簽,一個自定義標簽庫就是自定義標簽的集合。
Taglib指令引入一個自定義標簽集合的定義,包括庫路徑、自定義標簽。
屬性:
- ? uri:外部標簽的URI地址。
- ? prefix:使用標簽時的前綴。
Taglib指令的語法:
<%@ taglib uri="uri" prefix="prefixOfTag" %>Jsp隱式對象:
什么是隱式對象呢?它指的是在jsp中,可以不聲明就直接使用的對象。它只存在于jsp中,因為java類中的變量必須要先聲明再使用。其實jsp中的隱式對象也并非是未聲明,只是它是在翻譯成.java文件時聲明的。所以我們在jsp中可以直接使用。
| request | javax.servlet.http.HttpServletRequest | |
| response | javax.servlet.http.HttpServletResponse | |
| session | javax.servlet.http.HttpSession | Page指令可以控制開關 |
| application | javax.servlet.ServletContext | |
| page | Java.lang.Object | 當前jsp對應的servlet引用實例 |
| config | javax.servlet.ServletConfig | |
| exception | java.lang.Throwable | page指令有開關 |
| out | javax.servlet.jsp.JspWriter | 字符輸出流,相當于printwriter |
| pageContext | javax.servlet.jsp.PageContext | 很重要 |
PageContext對象:
-它是JSP獨有的對象,Servlet中沒有這個對象。本身也是一個域(作用范圍)對象,但是它可以操作其他3個域對象中的屬性。而且還可以獲取其他8個隱式對象。
生命周期:
PageContext是一個局部變量,所以它的生命周期隨著JSP的創建而誕生,隨著JSP的結束而消失。每個JSP頁面都有一個獨立的PageContext。
四大域對象:
| PageContext | 頁面范圍 | 最小只能在當前頁面用 | 范圍小,開發中用的少 |
| ServletContext | 請求范圍 | 一次請求或當前請求轉發用 | 請求轉發后再次轉發時請求域丟失 |
| HttpSession | 會話范圍 | 多次請求組數據共享時使用 | 多次請求共享數據,但不同的客戶端不能共享 |
| ServletContext | 應用范圍 | 最大,整個應用都可以使用 | 如果對數據有修改需要做同步處理,少用 |
MVC模型:
- M(Model)模型:用于封裝數據,封裝的是數據模型
- V(View)視圖:用于顯示數據,動態資源用JSP頁面,靜態資源用HTML頁面
- C(Controller)控制器:用于處理請求和響應
JSP代碼演示:
<%--page指令--%> <%@ page import="java.util.ArrayList" %> <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"language="java" errorPage="error.jsp" %><%--include指令 可以包含其他頁面--%> <%@include file="/include.jsp" %> <!DOCTYPE html><%--taglib:可以引入外部標簽庫--%> <%-- <%@taglib uri=標簽庫的地址 prefix=前綴名稱 %> --%> <%@taglib prefix="" %> <html> <head><title>JSP - Hello World</title> </head> <body> <%--這是jsp的注釋格式--%><%System.out.println("這個輸出只能打印到控制臺");out.println("這個才是輸出到頁面,但是沒有換行<br>"); %><%--表達式--%> <%="相當于out.println<br>"%> <%= request.getAttribute("username”)%><%--聲明變量和方法--%> <%--加!代表聲明的是成員變量不加!代表的是聲明局部變量聲明方法必須加! --%> <%! String s = "itzhuzhu";%> <% String s = "itzhuzhu";// 隱式對象:可以直接調用request.getSession();response.getWriter().write("隱式對象:可以直接調用");pageContext.setAttribute("直接用","直接用"); %><%// 定義數組ArrayList<Object> objects = new ArrayList<>(); %> <%=s%><%--定義方法--%> <%! public void method() {System.out.println(s); }%></body> </html>總結
以上是生活随笔為你收集整理的Java Server Page的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 智能机器人建房子后房价走势_人工智能未来
- 下一篇: java frame清除控件_java