日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

【Servlet】JSP学习-概念和运行原理

發布時間:2024/2/28 javascript 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Servlet】JSP学习-概念和运行原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么需要JSP?

與HTML相比:根據后臺的業務,可以動態輸出HTML,網頁內容是可以改變的。
與原生Servlet相比:不需要自己寫輸出語句resp.getWriter().write("");

所以,servlet也稱作動態網頁技術。但是使用servlet極大不利于網頁語言的編程,影響開發效率。

雖然servlet也可以寫網頁,但用java作為邏輯處理、請求處理更合適。
做處理之后的響應不太方便。

這時候會想,如果可以直接寫HTML代碼就好了——使用JSP,在保留servlet的優點的同時,可以像編寫HTML一樣,流暢的編寫網頁信息。可以在里面做業務邏輯判斷,可以直接寫HTML標簽,不需要寫輸出語句。

JSP學習

JSP 全名為Java Server Pages,中文名叫java 服務器頁面,其根本是一個簡化的Servlet 設計,它是由Sun Microsystems 公司倡導、許多公司參與一起建立的一種動態網頁技術標準。

特點:

本質上還是Servlet
跨平臺,一次編寫處處運行
組件(組件含義為核心內容)跨平臺
健壯性和安全性

Jsp 的訪問原理:

瀏覽器發起請求,請求JSP,請求被Tomcat 服務器接收,執行JspServlet 將請求的JSP 文件轉義成為對應的java 文件(也是Servlet),然后執行轉義好的java 文件。

Jsp 的語法和指令:

JSP 的page 指令
JSP 的taglib 指令
Jsp 的局部代碼塊
Jsp 的全局代碼塊
Jsp 的腳本端
Jsp 的注釋
Jsp 的靜態引入(JSP 的include 指令)
Jsp 的動態引入
頁面轉發(forword 標簽)

Jsp 的內置對象:

PageContext 對象
Request 對象
Session 對象
Application 對象
Response 對象
Out 對象
Page 對象
Exception 對象
Config 對象

使用:

JSP 負責頁面展現,Servlet 負責業務邏輯處理。

資源路徑總結:

Jsp 中路徑:

相對路徑:…/…/資源
絕對路徑:/虛擬項目名/資源路徑

<%@page language="java" import="java.util.*,java.lang.*" pageEncoding="utf-8" contentType="text/html; charset=utf-8"%> <%@page session="true" %> <%@page errorPage="error.jsp" %> <%@page isErrorPage="true" %> <%--Jsp的三種注釋 前端語言注釋:會被轉譯,也會被發送,但是不會被瀏覽器執行java語言注釋:會被轉譯,但是不會被servlet執行Jsp注釋:不會被轉譯。Jsp的page指令學習<%@page 屬性名="屬性值" 屬性名="屬性值"...%>language:聲明jsp要被轉譯的語言。import:聲明轉譯的java文件要導入的包,不同的包使用逗號隔開。pageEncoding:設置jsp文件的數據編碼格式。contentType="text/html; charset=utf-8" 設置jsp數據響應給瀏覽器時,瀏覽器的解析和編碼格式。session:設置轉譯的servlet中是否開啟session支持,默認開啟,true表示開啟。false表示關閉。errorPage:設置jsp運行錯誤跳轉的頁面.extends:設置jsp轉譯的java文件要繼承的父類(包名+類名)。 作用:配置jsp文件的轉譯相關的參數。Jsp的局部代碼塊:特點:局部代碼塊中聲明的java代碼會被原樣轉譯到jsp對應的servlet文件的_JspService方法中代碼塊中聲明的變量都是局部變量。使用:<% java代碼 %>缺點:使用局部代碼塊在jsp中進行邏輯判斷,書寫麻煩,閱讀困難。開發:servlet進行請求邏輯處理,使用jsp進行頁面展現。Jsp的全局代碼塊:特點:聲明的java代碼作為全局代碼轉譯到對應的servlet類中。使用:<%! 全局代碼 %>注意:全局代碼塊聲明的代碼,需要使用局部代碼塊調用。Jsp的腳本段語句:特點:幫助我們快速的獲取變量或者方法的返回值作為數據響應給瀏覽器。使用:<%=變量名或者方法%>注意:不要在變量名或者方法后使用分號。 位置:除jsp語法要求以外的任意位置。Jsp的靜態引入和動態引入:靜態引入:<%@include file="要引入的jsp文件的相對路徑" %>特點:會將引入的jsp文件和當前jsp文件轉譯成一個java(Servlet)文件使用。在網頁中也就顯示了合并后的顯示效果。注意:靜態引入的jsp文化不會單獨轉譯成java(Servlet)文件。當前文件和靜態引入的jsp文件中不能夠使用java代碼塊聲明同名變量。動態引入:<jsp:include page="要引入的jsp文件的相對路徑"></jsp:include>特點:會將引入的jsp文件單獨轉譯,在當前文件轉譯好的java文件中調用引入的jsp文件的轉譯文件。在網頁中顯示合并后的顯示效果。注意:動態引入允許文件中聲明同名變量。jsp的轉發標簽:優點:降低jsp代碼的冗余,便于維護升級。jsp的轉發標簽forward:使用: <jsp:forward page="要轉發的jsp文件的相對路徑"></jsp:forward>特點:一次請求地址欄信息不改變。注意:在轉發標簽的兩個標簽中間除了寫<jsp:param name="str" value="aaa" />子標簽不會報錯,其他任意字符都會報錯。<jsp:param name="str" value="aaa" />name屬性為附帶的數據的鍵名value為附帶的數據內容注意:會將數據以?的形式拼接在轉發路徑的后面。jsp的九大內置對象:內置對象:jsp文件在轉譯成其對應的Servlet文件的時候自動生成的并聲明的對象。我們在jsp頁面中直接使用即可。注意:內置對象在jsp頁面中使用,使用局部代碼塊或者腳本段語句來使用。不能夠在全局代碼塊中使用。內容:九個對象pageContext:頁面上下文對象,封存了其他內置對象。封存了當前jsp的運行信息。注意:每個Jsp文件單獨擁有一個pageContext對象。作用域:當前頁面。request:封存當前請求數據的對象。由tomcat服務器創建。一次請求session:此對象用來存儲用戶的不同請求的共享數據的。一次會話application:也就是ServletContext對象,一個項目只有一個。存儲用戶共享數據的對象,以及完成其他操作。項目內response:響應對象,用來響應請求處理結果給瀏覽器的對象。設置響應頭,重定向。out:響應對象,Jsp內部使用。帶有緩沖區的響應對象,效率高于response對象。page:代表當前Jsp的對象。相當于java中的this。exception:異常對象。存儲了當前運行的異常信息。注意:使用此對象需要在page指定中使用屬性isErrorPage="true"開啟。config:也就是ServletConfig,主要是用來獲取web.xml中的配置數據,完成一些初始化數據的讀取。四個作用域對象:pageContext:當前頁面.解決了在當前頁面內的數據共享問題。獲取其他內置對象。request:一次請求。一次請求的servlet的數據共享。通過請求轉發,將數據流轉給下一個servlet。session:一次會話.一個用戶的不同請求的數據共享。將數據從一次請求流轉給其他請求。application:項目內.不同用戶的數據共享問題。將數據從一個用戶流轉給其他用戶。作用:數據流轉Jsp的路徑:在jsp中資源路徑可以使用相對路徑完成跳轉,但是:問題一:資源的位置不可隨意更改。問題二:需要使用../進行文件夾的跳出。使用比較麻煩。使用絕對路徑:(必須會)/虛擬項目名/項目資源路徑例如:<a href="/jsp/jspPro.jsp">jspPro.jsp</a><a href="/jsp/a/a.jsp">a.jsp</a><br />注意:在jsp中資源的第一個/表示的是服務器根目錄,相當于:localhost:8080使用jsp中自帶的全局路徑聲明:<%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><base href="<%=basePath%>">作用:給資源前面添加項目路徑: http://127.0.0.1:8080/虛擬項目名/--%> <html><head><title>jsp基本語法學習</title><meta charset="utf-8"/></head><body><h3>jsp基本語法學習</h3><hr /><!-- 局部代碼塊 --><%//聲明java代碼域--局部代碼塊聲明String str="jsp中使用邏輯校驗很難受";int a=2;if(a>3){%><b>jsp學習很簡單</b><%} else{%><i> <%=str%></i><%test();} %><!--全局代碼塊 --><%!int b=5;public void test(){System.out.println("我是全局代碼塊聲明");}%><!--jsp的靜態引入 --><%@include file="includeStatic.jsp" %><!-- jsp的動態引入 --><jsp:include page="includeActive.jsp"></jsp:include><!-- jsp的轉發forward標簽 --><%-- <jsp:forward page="forward.jsp"><jsp:param value="aaa" name="str"/></jsp:forward> --%><!-- jsp的 九大內置對象學習--><%//獲取請求數據String s=request.getParameter("str");request.getAttribute("str");%><%=s%><%//response.sendRedirect("forward.jsp");%><!--Jsp的路徑 --><br /><a href="/jsp/a/a.jsp">a.jsp</a><br /><a href="a/b/b.jsp">b.jsp</a><br /></body> </html>

總結

以上是生活随笔為你收集整理的【Servlet】JSP学习-概念和运行原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。