javaweb

如果是servlet 則可以通過servletContext 讀取web資源文件

如果不是servlet則只能通過類裝載器去讀取了(類裝載器有弊端,文件不能太大,二不能及時更新)

web工程中,對於java類我們是無法直接讀取web資源的,因此如果想要java程序讀取web資源,我們通常使用類裝載器(UserDao)爲任意src下的java文件

java文件運行的話,服務器通過類裝載器去裝載classes目錄下的所有java類(src目錄下的內容發佈的時候會發布到web工程下的classes目錄中)的所有資源文件

我們可以通過UserDao.class.getClassLoader().getResourceAdStream("fileName");/、通過任何一個類,我們可以獲得加載該類的類裝載器,通用的應該只有一個吧????,可以加載所有的資源文件


對於某些資源,如數據庫連接的數據,我們只需要加載一次就可以了,這是我們可以把加載數據庫相關的代碼,放到靜態代碼塊中




在web工程中,類裝載器對類的加載只加載一次,如果以前加載過該類並且沒有銷燬,則不會再次加載該類

注意以下兩種方式的區別,第一種是類加載器的方式,第二種是普通的輸入流的方式,如果在程序運行期間改變properties中的內容,第一種方式獲取是還是以前的內容,第二種方式是改變後的內容



程序以什麼碼錶輸出到客戶端,就在respond中指定客戶端瀏覽器以什麼樣的編碼讀取這些數據



<meta>標籤可以模擬http相應頭,我們可以用<meta>標籤來控制瀏覽器的行爲

,如指定編碼格式

out.write("<meta http-wquiv='content-type' content='text/html' cahrset=UTF-8>");這和在respond添加header頭信息是一樣的(如上圖)

respond.setHeader("content-type","text/html.charset=UTF-8")//注意這樣寫訪問servlet時會下載文本


printWriter 字符流輸出,只能輸出字符串

outputStream 字節流,可以輸出所有的內容形式


setContentType("text/html;charset=UTF-8")//這句話可以代替上邊兩句話,內部調用了上邊兩個函數.解決亂碼問題

第一句話控制respond以什麼編碼格式寫出數據

第二句話控制瀏覽器以什麼編碼格式打開返回的數據


  服務端向客戶端遊覽器發送文件時,如果是瀏覽器支持的文件類型,一般會默認使用瀏覽器打開,比如txt、jpg等,會直接在瀏覽器中顯示,如果需要提示用戶保存,就要利用Content-Disposition進行一下處理,關鍵在於一定要加上attachment:

Response.AppendHeader("Content-Disposition","attachment;filename=FileName.txt");


文件下載時,如果文件文成是中文,則需要把中文經過URL編碼

URLEncoder.encode(filename,encodetype);

URLEncoder.encode(filename,"UTF-8");



重定向:

respond.setStatus(302);

respond.setHeader("location","/error.html");

OR

respond.setRedirect("error.html");//特點放兩次請求,地址會變

注意重定向和轉發的區別,轉發不會改變地址欄,

重定向的用處,登陸和購買



獲取rquest數據的幾種方式





web    servlet一般不輸出數據跳轉到jsp輸出數據, 跳轉後一定要return,否則可能出現異常


forword時會清空respond 中的數據,respond頭信息仍然有效


respond可以實現轉發,

request也可以實現轉發




web中各種地址的寫法

書寫地址時主要看改地址是誰要使用

對於1,我們知道是請求轉發,轉發到另一個servlet中處理,因此是在web工程中使用,因此書寫時應相對於當前web應用根目錄

2,sendRedirect我們知道是重定向,讓瀏覽器去發送另一個請求,是瀏覽器要調用改資源地址,因此是相對於tomcat容易而言的

3,4相對於web應用根目錄而言的

5表單,點擊是瀏覽器發送一個請求,是瀏覽器調用的,因此是相對於tomcat目錄而言的



發佈了20 篇原創文章 · 獲贊 4 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章