真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

使用HttpServletRequest對(duì)象的作用有哪些

這篇文章將為大家詳細(xì)講解有關(guān)使用HttpServletRequest對(duì)象的作用有哪些,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

在科爾沁左翼等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需定制設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,成都全網(wǎng)營(yíng)銷推廣,成都外貿(mào)網(wǎng)站制作,科爾沁左翼網(wǎng)站建設(shè)費(fèi)用合理。

使用HttpServletRequest可以防止盜鏈行為,什么是盜鏈行為,比如說在一個(gè)別的網(wǎng)站上超鏈接,指向我們的網(wǎng)頁中的某個(gè)數(shù)據(jù),這樣從他的網(wǎng)頁上就可以直接進(jìn)入到我的某個(gè)頁面,無需從我的指定路口進(jìn)入:

例如在一個(gè)簡(jiǎn)單的1.html文件中加入了我的【myservlet】web應(yīng)用下的某個(gè)Servlet訪問的超鏈接:

使用HttpServletRequest對(duì)象的作用有哪些

如果我的Servlet中代碼僅僅為為訪問輸出數(shù)據(jù),例如:

response.setContentType("text/html;charset=utf-8");
String data ="銀魂真是一部好動(dòng)漫";
response.getWriter().write(data);

那么點(diǎn)擊這個(gè)超鏈接肯定會(huì)訪問到這個(gè)Servlet:

使用HttpServletRequest對(duì)象的作用有哪些

那么我們?nèi)绻幌氡槐热酥苯油ㄟ^地址訪問或者超鏈接訪問怎么辦呢:

記得學(xué)習(xí)HTTP協(xié)議中的“referer”請(qǐng)求頭嗎,這個(gè)請(qǐng)求頭是告訴

在if判斷中判斷是否為空是防止直接將該web資源以輸入U(xiǎn)RL地址直接訪問,而另一個(gè)判斷是防止訪問該web資源不是從指定的地方來訪問進(jìn)來。

通過該代碼,如果我們繼續(xù)在1.html頁面中點(diǎn)擊超鏈接,則會(huì)自動(dòng)跳轉(zhuǎn)到我們?cè)O(shè)置好的index.jsp中:

使用HttpServletRequest對(duì)象的作用有哪些

而如果我們直接在瀏覽器中訪問Servlet也是會(huì)跳到這個(gè)頁面的。

只有在index.jsp中點(diǎn)擊我們?cè)O(shè)置好的超鏈接,才能訪問到:

使用HttpServletRequest對(duì)象的作用有哪些

接下來,我們來討論的使用HttpServletRequest響應(yīng)對(duì)象來獲取表單數(shù)據(jù),這是非常重要的知識(shí)點(diǎn),表單提交的數(shù)據(jù)根據(jù)提交方式的不同會(huì)放置在不同位置,例如采用POST方式則會(huì)將這些數(shù)據(jù)放置在HTTP請(qǐng)求數(shù)據(jù)實(shí)體中,無論采用哪種方式,都是可以用響應(yīng)對(duì)象的getParameter(String)等等方式獲取,這點(diǎn)在《Servlet的學(xué)習(xí)(十)》中已經(jīng)介紹。

現(xiàn)在,我們?cè)谛枰聞?chuàng)建一個(gè)HTML頁面編寫我們的表單代碼,和一個(gè)Servlet作為服務(wù)器端接收表單提交的數(shù)據(jù),將Servlet命名為ServletRequest,而表單的傳送服務(wù)器和選擇HTTP方式如下:

先來看

 

這兩種常見的輸入字符情況。

當(dāng)然還需要在表單中提供具有提交功能的標(biāo)簽才能提交,我們選擇

這樣的提交方式,效果如下:

使用HttpServletRequest對(duì)象的作用有哪些

在表單中這兩個(gè)都可以直接通過getParameter(String)方法獲取用戶輸入的數(shù)據(jù),代碼如下:

String username = request.getParameter("user");
String password = request.getParameter("password");

只要我們?cè)谟脩裘兔艽a中輸入數(shù)據(jù),再點(diǎn)擊提交,就可以將用戶名和密碼中的數(shù)據(jù)傳遞給服務(wù)器:

使用HttpServletRequest對(duì)象的作用有哪些

同時(shí),由原來的表單的HTML頁面會(huì)自動(dòng)跳轉(zhuǎn)到該Servlet的頁面上。

對(duì)于text和password兩種表單方式的健壯性判斷:

依據(jù):

1、如果表單中用戶名和密碼不填,那么直接提交后會(huì)是傳遞給服務(wù)器空字符串。

2、如果不是在表單,而是知道了平常表單提交后會(huì)跳轉(zhuǎn)的Servlet頁面,那么直接輸入該Servlet地址則是傳遞Null給服務(wù)器

因此必須加入健壯性語句:

String username = request.getParameter("user");
if(username!=null && !username.trim().equals("")) {
System.out.println("user:"+username);

}

password部分代碼同理。

接下來是單選按鈕,比如性別選擇:

性別 

使用HttpServletRequest對(duì)象的作用有哪些

只有標(biāo)簽中的”name”屬性一樣,才能具有單選的功能,同時(shí)”name”屬性也是在Servlet中獲取用戶單選數(shù)據(jù)的重要參數(shù),代碼:

String gender = request.getParameter("gender");

如果單選沒有選擇任何選項(xiàng),則提交會(huì)返回null,所以需加入健壯性語句:

String gender = request.getParameter("gender");
if(gender != null) {
System.out.println(gender);

}

接下來是下拉列表,下拉列表可以是作為選擇城市,如:

城市
 --選擇城市--
 北京
 上海
 杭州
 廈門

標(biāo)簽中的name屬性決定了這些復(fù)選框是否屬于同一個(gè)復(fù)選框組,也是同時(shí)也是作為Servlet中獲取表單復(fù)選框的數(shù)據(jù)的重要參數(shù),由于多個(gè)參數(shù)使用同一個(gè)參數(shù)名,所以必須使用getParameterValues(String)方法來獲取所有的被勾選的復(fù)選框,代碼如下(包含健壯性):

String[] hobbies = request.getParameterValues("hobby");
for(int i=0;hobbies!=null&&i

如果沒有勾選任何一個(gè)復(fù)選框,則不會(huì)向服務(wù)器Servlet傳送任何數(shù)據(jù)。所以如果直接接收可能會(huì)發(fā)生空指針異常,必須判斷是否接收到的字符串?dāng)?shù)組有數(shù)據(jù)(hobbies!=null)。

重要:

現(xiàn)在,我們?cè)僦匦禄氐?input type="text" name="user" /> 上,如果我們輸入的是中文數(shù)據(jù),點(diǎn)擊提交之后會(huì)是怎樣?

使用HttpServletRequest對(duì)象的作用有哪些

在控制臺(tái)看到的結(jié)果:

使用HttpServletRequest對(duì)象的作用有哪些

結(jié)果就是出現(xiàn)了中文亂碼問題。這是瀏覽器在發(fā)送時(shí)通常要看當(dāng)時(shí)的編碼,如:

使用HttpServletRequest對(duì)象的作用有哪些

或者:

使用HttpServletRequest對(duì)象的作用有哪些

但是??!

在Servlet收到request請(qǐng)求對(duì)象發(fā)來的數(shù)據(jù)時(shí),通過getParameter方法是默認(rèn)查詢“ISO-8859-1”碼表的,所以造成了編碼不一致!

解決方式也很簡(jiǎn)單,只要在Servlet中將獲取的request對(duì)象選擇正確的解碼方式即可,只要在代碼前添加一句:

request.setCharacterEncoding("UTF-8");

就可以獲取表單中正確的中文數(shù)據(jù)了:

使用HttpServletRequest對(duì)象的作用有哪些

注意,對(duì)于響應(yīng)對(duì)象的setCharacterEncoding方法只對(duì)HTTP協(xié)議的POST方式有效,對(duì)GET方式無效。

如果我們將表單提交方式改為GET,那么提交表單中有中文數(shù)據(jù)的話依然在Servlet中會(huì)出現(xiàn)亂碼。

如果想使GET方式也不會(huì)出現(xiàn)中文亂碼,并沒有好的捷徑方法。先要通過getParameter獲取請(qǐng)求數(shù)據(jù)(這時(shí)在Servlet中以ISO8859碼表進(jìn)行解碼),然后再通過ISO8859進(jìn)行編碼成字節(jié)數(shù)組,最后通過創(chuàng)建字符串對(duì)象的方式選擇UTF-8解碼表解出最開始客戶端編碼的數(shù)據(jù)。

代碼如下:

String userTemp = request.getParameter("user");
String username = new String(userTemp.getBytes("ISO8859-1"),"utf-8");

即可。

當(dāng)然這種方式對(duì)POST方式也是有效的。

另外一種對(duì)GET方式是修改Tomcat中的配置文件(這種方式只適合GET方式,用POST方式還是會(huì)亂碼)。通過Tomcat服務(wù)器的首頁,選擇“Configuration”查看配置文檔,選擇“Connector”下的“HTTP”:

使用HttpServletRequest對(duì)象的作用有哪些

在這個(gè)文檔中有一個(gè)URIEncoding屬性,是指可以在server.xml文件中配置這個(gè)屬性,如果沒有這個(gè)屬性,則Tomcat默認(rèn)采用ISO8859-1編碼:

使用HttpServletRequest對(duì)象的作用有哪些

通過在server.xml文件中的標(biāo)簽中添加設(shè)置即可:

使用HttpServletRequest對(duì)象的作用有哪些

由于是在Tomcat中修改server.xml文件,所以服務(wù)器需要重啟。

經(jīng)過這種方式,就無需在代碼中再設(shè)置任何編碼表,所有在服務(wù)器端都會(huì)采用“URIEncoding”屬性設(shè)置的碼表。但這個(gè)方式不建議使用。

同樣在“Configuration”的配置文檔中的“Connector”下的“HTTP”說明文檔中,有useBodyEncodingForURI這么個(gè)屬性:

使用HttpServletRequest對(duì)象的作用有哪些

當(dāng)在server.xml文件中的標(biāo)簽中添加設(shè)置了這個(gè)屬性,還未完成:

使用HttpServletRequest對(duì)象的作用有哪些

還必須在Servlet中同時(shí)調(diào)用了響應(yīng)對(duì)象的setCharacterEncoding方法,就能再次使GET方式不會(huì)出現(xiàn)亂碼:

request.setCharacterEncoding("utf-8");
String username = request.getParameter("user");

同樣,這種配置server.xml文件的方式依然不建議采用。

最后說明一點(diǎn),在HTML編程中,我們也可以使用超鏈接來提交數(shù)據(jù),當(dāng)然這樣的方式屬于HTTP中的GET方式,原理類似于在瀏覽器地址URL后手動(dòng)添加參數(shù),比如如下代碼:

用戶名為中文

跟隨的參數(shù)為中文??!

兩種解決方式:

1、在這個(gè)超鏈接上必須將這個(gè)中文進(jìn)行URL編碼,必須在JSP中進(jìn)行編寫(在后面的篇章中會(huì)介紹如何使用);

2、或者使用上述GET處理中文亂碼的第一種方式,進(jìn)行雙次編碼:

String userTemp = request.getParameter("user");
String username = new String(userTemp.getBytes("ISO8859-1"),"utf-8");

關(guān)于使用HttpServletRequest對(duì)象的作用有哪些就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。


本文題目:使用HttpServletRequest對(duì)象的作用有哪些
標(biāo)題路徑:http://weahome.cn/article/psjsgs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部