servlet這週小總結

2021-06-01 03:28:32 字數 3111 閱讀 3710

一、重定向與**的區別

2、重定向實際上產生了兩次請求

**只有一次請求

重定向: 傳送請求 -->伺服器執行-->響應請求,返回給瀏覽器乙個新的位址與響應碼-->瀏覽器根據響應碼,判定該響應為重定向,自動傳送乙個新的請求給伺服器,請求位址為之前返回的位址-->伺服器執行-->響應請求給瀏覽器

**:傳送請求 -->伺服器執行-->進行請求的重新設定,例如通過request.setattribute(name,value)-->根據**的位址,獲取該位址的網頁-->響應請求給瀏覽器

重定向:以前的request中存放的變數全部失效,並進入乙個新的request作用域。

**:以前的request中存放的變數不會失效,就像把兩個頁面拼到了一起。

二、**include與forward的區別:forward方法是把請求的內容**到另外的乙個servlet.而include是把另乙個servlet處理過後的內容拿過來.

如果寫上response.getwriter(0.print("haha");

include會在頁面上顯示haha,而forward不顯,這就是區別!哈哈

三、servletcontext讀取資源三種方式

1、使用getservletcontext().getresourceasstream(路徑)去讀資源檔案,這個路徑是相對於web應用的根目錄。

如://第一種方式讀取外部的資源檔案

2、傳統方式:bufferedreader bf = new bufferereader(new filereader(path));這個是重點

path=context.getrealpath("web-inf/classes/db.properties");這個是重點

3、第三種方式:url url = context.getresource("web-inf/classes/db.properties");

inputstream is =  url.openstream();

四、中文亂碼問題,出現亂碼的解決方案:

1、 以post方法提交的資料中有中文字元, 可以在獲取請求引數值之前,呼叫request.setcharacterencoding(「utf-8」),指定請求正文使用的字元編碼是utf-8;

2、在向瀏覽器傳送資料之前呼叫 response.setheader("content-type", "text/html;charset=utf-8");這是最好的一種解決方法

3、用outputstream輸出數字時出現亂碼解決:response.getoutputstream().write((97+"").getbytes()); //97任意數字

4、response.getoutputstream().write("".getbytes());

response.getoutputstream().write("中國".getbytes("utf-8"))。

設定訊息頭

response.setheader("content-disposition", "attachment;filename="+urlencoder.encode(file.getname(),"utf-8"));

五、隨機

/1、通知瀏覽器以方式開啟

response.setheader("content-type", "image/jpeg");

//2、建立

bufferedimage image=new bufferedimage(width, height, imagetype);

//3、得到圖型

graphics g=image.getgraphics();

//4、設定背景色

setbackground(g);

//向上寫邊框

setborder(g);

//向上寫干擾線

setrandomline(g);

//向上寫資料

setfont(g);

//8、把寫給瀏覽器

imageio.write(image, "jpeg", os);

解決方案://清除瀏覽器快取

response.setintheader("expires", 0);

response.setheader("cache-control", "no-cache");

response.setheader("pragma", "no-cache");

//可能採用的協議不一樣,所以三個接合使用,缺一不可 

六、request常用方法

獲得客戶機資訊

•getrequesturl方法返回客戶端發出請求時的完整url。

•getrequesturi方法返回請求行中的資源名部分。

•getquerystring 方法返回請求行中的引數部分。

•getremoteaddr方法返回發出請求的客戶機的ip位址

•getremotehost方法返回發出請求的客戶機的完整主機名

•getremoteport方法返回客戶機所使用的網路埠號

•getlocaladdr方法返回web伺服器的ip位址。

•getlocalname方法返回web伺服器的主機名

•getmethod得到客戶機請求方式

獲得客戶機請求頭

•gethead(name)方法

•getheaders(string name)方法

•getheadernames方法

獲得客戶機請求引數(客戶端提交的資料)

•getparameter(name)方法

•getparametervalues(string name)方法

•getparameternames方法

•getparametermap方法  //

七、防盜煉的實現

//獲取當前頁是從**個頁面來的,如果不是則盜鏈本站

Servlet問題總結

1.servlet生命週期方法是 init servletconfig 只被呼叫一次 service servletrequest,servletresponse 被呼叫0 n次 destory 只被呼叫一次 2.http預設請求方法是 get 3.httpservlet對get請求的處理方法是 d...

servlet流程總結

servle使用流程 設定請求編碼格式 設定響應編碼格式 獲取請求資訊 處理請求資訊 響應處理結果 亂碼解決 1.使用string進行資料重新編碼 string uname new string uname.getbytes iso8859 1 utf 8 2.使用公共配置 get方式 步驟一 re...

Servlet 小知識點

自定義eclipse工具中的new 快捷鍵專案列表。1.servlet 重要的方法是service方法。既可以處理post請求,也可以處理get請求。在複寫service方法時不要呼叫父類service,因為它會根據當前請求的型別呼叫當前servlet的dopost方法或者doget方法。容易出現4...