成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaWEB開(kāi)發(fā)09——Request

張巨偉 / 2991人閱讀

摘要:概述在創(chuàng)建時(shí)會(huì)覆蓋方法,或這些方法都有兩個(gè)參數(shù),一個(gè)為代表請(qǐng)求的和代表響應(yīng)。方法中的的類型是,而方法的的類型是,是的子接口,功能和方法更加強(qiáng)大。

1.HttpServletRequest概述
在創(chuàng)建Servlet時(shí)會(huì)覆蓋service()方法,或doGet()/doPost(),這些方法都有兩個(gè)參數(shù),一個(gè)為代表請(qǐng)求的request和代表響應(yīng)response。
service方法中的request的類型是ServletRequest,而doGet/doPost方法的request的類型是HttpServletRequest,HttpServletRequest是ServletRequest的子接口,功能和方法更加強(qiáng)大。
2.request的運(yùn)行流程

3.通過(guò)抓包工具抓取Http請(qǐng)求
因?yàn)閞equest代表請(qǐng)求,所以我們可以通過(guò)該對(duì)象分別獲得Http請(qǐng)求的請(qǐng)求行,請(qǐng)求頭和請(qǐng)求體。

請(qǐng)求行:請(qǐng)求資源-http協(xié)議版本:1.1/1.0

請(qǐng)求頭

格式:鍵值對(duì)key:value

請(qǐng)求頭是瀏覽器自動(dòng)封裝的,這些是瀏覽器要告知服務(wù)器的一些信息

請(qǐng)求體

請(qǐng)求參數(shù)(post提交的請(qǐng)求參數(shù))

get提交:請(qǐng)求參數(shù)在url地址后面?

post提交:請(qǐng)求參數(shù)在http請(qǐng)求體重封裝

4.通過(guò)request獲得請(qǐng)求行
獲得客戶端的請(qǐng)求方式:String getMethod()

獲得請(qǐng)求的資源:
String getRequestURI()
StringBuffer getRequestURL()
String getContextPath() ---web應(yīng)用的名稱
String getQueryString() ---- get提交url地址后的參數(shù)字符串
username=zhangsan&password=123
request.getRemoteAddr() --- 獲得訪問(wèn)的客戶端IP地址

//1.獲得請(qǐng)求方式
String method = request.getMethod();
System.out.println("method:" + method);

//2.獲得請(qǐng)求的資源相關(guān)的內(nèi)容
String requestURI = request.getRequestURI();
System.out.println("requestURI:" + requestURI);

StringBuffer requestURL = request.getRequestURL();
System.out.println("requestURL:" + requestURL);

//3.獲得web應(yīng)用的名稱
String contextPath = request.getContextPath();
System.out.println("web應(yīng)用:" + contextPath);

//4.地址后的參數(shù)的字符串
String queryString = request.getQueryString();
System.out.println("queryString:" + queryString);

//5.獲得客戶端的IP地址
String remoteAddr = request.getRemoteAddr();
System.out.println("remoteAddr:" + remoteAddr);



5.通過(guò)request獲得請(qǐng)求頭
long getDateHeader(String name)
String getHeader(String name)
Enumeration getHeaderNames()
Enumeration getHeaders(String name)
int getIntHeader(String name)
//1.獲得指定的頭
String header = request.getHeader("User-Agent");
System.out.println(header);

//2.獲得所有頭的名字
Enumeration headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()){
    String headerName = headerNames.nextElement();
    String headerValue = request.getHeader(headerName);
    System.out.println(headerName + ":" + headerValue);
}

referer頭的作用:執(zhí)行該此訪問(wèn)的的來(lái)源, 做防盜鏈

//對(duì)該新聞的來(lái)源進(jìn)行判斷
String header = request.getHeader("referer");
if (header!=null&&header.startsWith("http://localhost")) {
//是從我自己的網(wǎng)站跳轉(zhuǎn)過(guò)去的,可以看新聞
    response.setContentType("text/html;charset=UTF-8");
    response.getWriter().write("英雄聯(lián)盟IG戰(zhàn)隊(duì)奪冠...");

}else{
    response.getWriter().write("請(qǐng)不要盜鏈!");
}
6.通過(guò)request獲得請(qǐng)求體
請(qǐng)求體中的內(nèi)容是通過(guò)post提交的請(qǐng)求參數(shù),格式是:
username=zhangsan&password=123&hobby=football&hobby=basketball
key                        value
username                [zhangsan]
password                [123]
hobby                    [football,basketball]
以上面參數(shù)為例,通過(guò)一下方法獲得請(qǐng)求參數(shù):
String getParameter(String name)
String(#getParameterValues(java.lang.String))(String name)
Enumeration getParameterNames()
Map getParameterMap()
注意:get請(qǐng)求方式的請(qǐng)求參數(shù) 上述的方法一樣可以獲得
request.setCharacterEncoding("utf-8");
//1.獲得單個(gè)表單值
String username = request.getParameter("username");
System.out.println(username);
String password = request.getParameter("password");
System.out.println(password);

//2.獲得多個(gè)表單的值
String[] hobbys = request.getParameterValues("hobby");
for (String hobby:hobbys){
    System.out.println(hobby);
}

//3.獲得所有的請(qǐng)求參數(shù)的名稱
Enumeration parameterNames = request.getParameterNames();
while(parameterNames.hasMoreElements()){
    System.out.println(parameterNames.nextElement());
}
System.out.println("----------------------");

//4.獲得所有的參數(shù),封裝到一個(gè)Map
Map parameterMap = request.getParameterMap();
for (Map.Entry entry:parameterMap.entrySet()){
    System.out.println(entry.getKey());
    for (String str:entry.getValue()){
        System.out.println(str);
    }
    System.out.println("----------------------");
}
post提交亂碼:request.setCharacterEncoding("UTF-8");
get提交亂碼:parameter = new String(parameter.getbytes("iso8859-1"),"utf-8");
7.request的其他功能
(1) request是一個(gè)域?qū)ο?/h5>
request對(duì)象也是一個(gè)存儲(chǔ)數(shù)據(jù)的區(qū)域?qū)ο?,所以也具有如下方法?br>setAttribute(String name, Object o)
getAttribute(String name)
removeAttribute(String name)
注意:request域的作用范圍:一次請(qǐng)求中
(2) request完成請(qǐng)求轉(zhuǎn)發(fā)
獲得請(qǐng)求轉(zhuǎn)發(fā)器----path是轉(zhuǎn)發(fā)的地址
RequestDispatcher getRequestDispatcher(String path)

通過(guò)轉(zhuǎn)發(fā)器對(duì)象轉(zhuǎn)發(fā)
requestDispathcer.forward(ServletRequest request, ServletResponse response)

(3)注意

ServletContext域與Request域的生命周期比較?

Servlet Context:

創(chuàng)建:服務(wù)器啟動(dòng)

銷毀:服務(wù)器關(guān)閉

域的作用范圍:整個(gè)web應(yīng)用

request:

創(chuàng)建:訪問(wèn)時(shí)創(chuàng)建request

銷毀:響應(yīng)結(jié)束request銷毀

域的作用范圍:一次請(qǐng)求中

轉(zhuǎn)發(fā)與重定向的區(qū)別?

1)重定向兩次請(qǐng)求,轉(zhuǎn)發(fā)一次請(qǐng)求

2)重定向地址欄的地址變化,轉(zhuǎn)發(fā)地址不變

3)重新定向可以訪問(wèn)外部網(wǎng)站 轉(zhuǎn)發(fā)只能訪問(wèn)內(nèi)部資源

4)轉(zhuǎn)發(fā)的性能要優(yōu)于重定向

客戶端地址與服務(wù)器端地址的寫(xiě)法?

客戶端地址:

是客戶端去訪問(wèn)服務(wù)器的地址,服務(wù)器外部的地址,

特點(diǎn):寫(xiě)上web應(yīng)用名稱

直接輸入地址:

重定向

服務(wù)器端地址:

服務(wù)器內(nèi)部資源的跳轉(zhuǎn)的地址,

特點(diǎn):不需要寫(xiě)web應(yīng)用的名稱

轉(zhuǎn)發(fā)

8. 總結(jié)

request獲得行的內(nèi)容

request.getMethod()

request.getRequestURI()

request.getRequestURL()

request.getContextPath()

request.getRemoteAddr()

request獲得頭的內(nèi)容

request.getHeader(name)

request獲得體(請(qǐng)求參數(shù))

String request.getParameter(name)

Map request.getParameterMap();

String[] request.getParameterValues(name);

注意:客戶端發(fā)送的參數(shù) 到服務(wù)器端都是字符串

獲得中文亂碼的解決:

post:request.setCharacterEncoding(“UTF-8”);

get:parameter = new String(parameter.getBytes(“iso8859-1”),”UTF-8”);

request轉(zhuǎn)發(fā)和域

request.getRequestDispatcher(轉(zhuǎn)發(fā)的地址).forward(req,resp);

request.setAttribute(name,value)

request.getAttribute(name)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72042.html

相關(guān)文章

  • javaweb開(kāi)發(fā)之servlet初始

    摘要:概述是公司提供的一門(mén)用于開(kāi)發(fā)動(dòng)態(tài)資源的技術(shù)。把開(kāi)發(fā)好的類部署到服務(wù)器中。應(yīng)用程序被停止或重新啟動(dòng)之前,引擎將卸載,并在卸載之前調(diào)用的方法。 servlet概述 Servlet是sun公司提供的一門(mén)用于開(kāi)發(fā)動(dòng)態(tài)web資源的技術(shù)。 Sun公司在其API中提供了一個(gè)servlet接口,用戶若想用發(fā)一個(gè)動(dòng)態(tài)web資源(即開(kāi)發(fā)一個(gè)Java程序向?yàn)g覽器輸出數(shù)據(jù)),需要完成以下2個(gè)步驟: (1)...

    Cheriselalala 評(píng)論0 收藏0
  • JavaWEB開(kāi)發(fā)15——Listener&Listener

    摘要:創(chuàng)建與銷毀對(duì)象是發(fā)送請(qǐng)求服務(wù)器就會(huì)創(chuàng)建它,當(dāng)響應(yīng)產(chǎn)生時(shí),對(duì)象就會(huì)銷毀。是容器為開(kāi)發(fā)人員提供的對(duì)象,它提供了對(duì)某一資源的已過(guò)濾請(qǐng)求調(diào)用鏈的視圖。 一、Listener監(jiān)聽(tīng)器 Javaweb開(kāi)發(fā)中的監(jiān)聽(tīng)器,是用于監(jiān)聽(tīng)web常見(jiàn)對(duì)象 HttpServletRequest HttpSession ServletContext 監(jiān)聽(tīng)它們的創(chuàng)建與銷毀 屬性變化 session綁...

    RebeccaZhong 評(píng)論0 收藏0
  • JavaWEB開(kāi)發(fā)16——Listener

    摘要:方法對(duì)象銷毀時(shí)執(zhí)行方法其中的參數(shù)每次在執(zhí)行方法時(shí)容器負(fù)責(zé)創(chuàng)建一個(gè)和一個(gè)對(duì)象作為的參數(shù)傳遞進(jìn)來(lái)。該個(gè)該就是在訪問(wèn)目標(biāo)資源的方法時(shí)的和。 一、過(guò)濾器Filter1.filter的簡(jiǎn)介filter是對(duì)客戶端訪問(wèn)資源的過(guò)濾,符合條件放行,不符合條件不放行,并且可以對(duì)目 標(biāo)資源訪問(wèn)前后進(jìn)行邏輯處理2.快速入門(mén)步驟:1)編寫(xiě)一個(gè)過(guò)濾器的類實(shí)現(xiàn)Filter接口2)實(shí)現(xiàn)接口中尚未實(shí)現(xiàn)的方法(著重...

    Brenner 評(píng)論0 收藏0
  • JavaWEB開(kāi)發(fā)17——文件上傳與下載

    摘要:文件上傳解析請(qǐng)求正文的每部分的內(nèi)容。獲取上傳文件的大小獲取上傳文件對(duì)應(yīng)的輸入流把上傳的文件保存到指定文件中。如果上傳的文件超過(guò),用磁盤(pán)作為緩存。如果自己用流實(shí)現(xiàn)的文件上傳,要在流關(guān)閉后,清理臨時(shí)文件。 一、文件的上傳和下載1、文件上傳的原理分析1.1文件上傳的必要前提:a、提供form表單,method必須是postb、form表單的enctype必須是multipart/form-d...

    Tangpj 評(píng)論0 收藏0
  • JavaWEB開(kāi)發(fā)08——Response

    摘要:文件拷貝的模板代碼會(huì)自動(dòng)關(guān)閉但是,如果下載中文文件,頁(yè)面在下載時(shí)會(huì)出現(xiàn)中文亂碼或不能顯示文件名的情況,原因是不同的瀏覽器默認(rèn)對(duì)下載文件的編碼方式不同,是編碼方式,而火狐瀏覽器是編碼方式。 1.HttpServletResponse概述 我們?cè)趧?chuàng)建Servlet時(shí)會(huì)覆蓋service()方法,或doGet()/doPost(),這些方法都有兩個(gè)參數(shù),一個(gè)為代表請(qǐng)求的request和代表...

    lavor 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<