溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java Web 開發(fā)中web、jsp的詳細介紹

發(fā)布時間:2020-09-08 16:37:26 來源:網絡 閱讀:353 作者:阿湯哥94 欄目:開發(fā)技術

一:web技術介紹

1.web開發(fā):主要是用html,java,css,javascript,dom技術開發(fā)網頁,網站。并且把這些開發(fā)好的網站或者網頁部署到一個可以提供服務的服務器上,然后讓外界可以直接去訪問這些網站和網頁中的資源。
2.web服務器:目前在Web應用中,有多種Web服務器可供選擇,常見的服務器有:
IIS:是源于Microsoft的公司的一種信息服務器,服務對象是基于Windows系統平臺的程序應用
Tomcat:Tomcat是Apache基金會開發(fā)的一個小型的輕量級應用服務器,技術先進,性能穩(wěn)定,而且免費,占用資源小、系統運行快。(安裝Tomcat的步驟在我的博客會寫喲?。。。?/p>

二:JSP介紹

1.jsp概述
JSP:(Java Server Page),是一種運行在服務器端的java頁面,最初是由Sun公司倡導、許多公司參與一同建立起來的一種動態(tài)網頁技術標準。
2.jsp工作原理
jap運行在服務端,當用戶通過瀏覽器請求訪問jsp資源時,Web服務器會使用jsp引擎對請求的jsp進行編輯和執(zhí)行,然后將生成的頁面返回給客戶端瀏覽器進行顯示,如下圖所示:
Java Web 開發(fā)中web、jsp的詳細介紹
3.jsp執(zhí)行過程
當jsp請求提交到服務器時,Web容器會通過以下三個階段進行處理。
翻譯階段:將編寫好的就是jsp文件通過jsp引擎轉換成可識別的Java文件(.java)。
編譯階段:將java文件編譯成可執(zhí)行的字節(jié)碼文件(.class文件)
執(zhí)行階段:經過翻譯和執(zhí)行的兩個階段,生成可被執(zhí)行的二進制字節(jié)碼文件,此時就進入執(zhí)行階段,執(zhí)行結束后,Web容器把生成的結果頁面返回到客戶端顯示。

4.jsp注釋
<%--JSP注釋--%> 這個是jsp專用的注釋,
同時jsp還支持html注釋,java注釋,java的注釋需要寫在jsp中

5.jsp腳本
JSP的腳本元素分成三種:
(1)腳本聲明 被翻譯成Java程序中的成員變量內部類
格式:
<%!
Java代碼 可以變量 定義類,在這里聲明的變量是全局變量
%>
(2)腳本表達式 被翻譯成out中的輸出語句
格式:
<%= 表達式%> 這個表達式后面不能使用分號,類似于輸出,如果需要輸出特殊字符,需要轉義字符
(3)3、腳本片段 被翻譯成Java程序中的代碼,service
格式:
<%
直接書寫Java程序 ,這里聲明的變量是局部變量
%>

6.jsp常見錯誤調試方法
Java Web 開發(fā)中web、jsp的詳細介紹
7.post和get
在html中,表單用于填寫數據,并通過提交實現數據的請求,提交表單的方式有兩種,分別是post和get,但是當用戶提交有中文數據的信息時,可能會出現亂碼。

原因:客戶端提交的數據,使用的utf-8編碼,然后服務器端使用的iso-8859-1解碼了(tomcat7以前默認的編碼),而在我們jsp程序獲取到的數據就是服務器解碼后的亂碼數據。
解決:我們需要把這些亂碼的數據全部恢復到正確的數據,就需要把亂碼的數據從新編碼,使用默認的編碼將亂碼之后的數據重新編碼到提交時候的數據
然后再根據我們使用的編碼進行解碼

兩種方式的區(qū)別以及解決亂碼的方式如下:
https://blog.51cto.com/14441795/2419949

8.jsp使用屬性存儲數據
在jsp中為了方便數據庫的使用,有時需要將數據通過request對象的屬性進行保存和讀取,這就需要使用request對象的兩種方法,分別是setAttribute()方法和getAttribute()方法

setAttribute()方法語法:public void setAttribute(String name,Object o)
該方法沒有返回值,參數name表示屬性名稱,參數o表示屬性的值,
例:request.setAttribute("mess","注冊失敗")


getAttribute()方法語法:public Object getAttribute(String name)
因為返回值是Object類型,所以在讀取數據時,必須將數據轉換成最初的類型,
例如:String mess=(String)request. getAttribute("mess");
注意:如果mess不等于null,表示可以得到實際的數據,可以進行使用;如果請求對象沒有與參數對應的屬性,getAttribute()方法會返回一個null值,所以在使用這個屬性值時要做非空判斷,否則會出現空指針異常。

9.轉發(fā)與重定向(頁面跳轉)
1)、請求轉換是服務器內部跳轉,所有地址欄上的路徑不會改變. 重定向是瀏覽器在次發(fā)送請求,地址欄上的路徑會發(fā)生改變.
2)、請求轉發(fā)只發(fā)送一次請求。 重定向會發(fā)送兩次請求
3)、請求轉發(fā)只能在當前應用內部跳轉. 重定向可以在內部跳轉也可以跳出當前應用.
4)、請求轉發(fā)時,因為是內部跳轉。它的路徑寫法是 /資源路徑。 重定向,它的路徑需要寫 /工程名/資源路徑. 5)、請求轉發(fā),可以共享reqeust。 重定向不可能,因為每一次都是一個新的request。
6)、請求轉換是通過reqeust發(fā)起 request.getRequestDispatcher().forward(); 重定向 response發(fā)起 response.sendRedirect();

7)重定向與轉發(fā)的選擇
--、重定向的速度比轉發(fā)慢,因為瀏覽器還得發(fā)出一個新的請求,如果在使用轉發(fā)和重定向都無所謂的時候建議使用轉發(fā)。
--、因為轉發(fā)只能訪問當前WEB的應用程序,所以不同WEB應用程序之間的訪問,特別是要訪問到另外一個WEB站點上的資源的情況,這個時候就只能使用重定向了。

10.jsp的9大內置對象
詳細講解見:
https://blog.51cto.com/14441795/2422160

11.在域對象存值
域對象一共有四個:pageContext,request,session, servletContext

setAttribute(String name, Object o) 向request域中存放一個映射關系,key為String類型,value為Object 類型
getAttribute(String name) 通過映射關系的key,獲取對應的值

pageContext:只在當前頁面有效,
Request:一次請求有效,使用同一個request
Session:會話級別,從打開瀏覽器的那一刻開始,一直到關閉瀏覽器,之間這段時間稱之為一次會話
ServletContext:應用級別,項目級別

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI