HttpServletRequest(request的一些API)

一、request的運行流程

首先,自己寫一個web工程,也就是建一個工程;當把該web工程發布到Tomcat服務器當中,可以讓外界訪問,這就成了一個web應用。
在客戶端輸入一個網站,是web應用資源的地址URL,該請求會在瀏覽器客戶端自動生成一個http請求,然后客戶端會將相應的請求發送到相應的服務器內部,服務器首先由Tomcat引擎接收該請求,然后Tomcat引擎會分析http協議上的請求行,該請求行上面有請求方式,根據請求方式是get還是post從而確定調用是doGet方法還是doPost方法,請求行上面有地址,Tomcat會幫你找該地址在的Tomcat服務器內部的某一個web應用(Tomcat容器中web-app下可以存放多個web應用),找到對應的web應用之后,開始創建對象,默認第一次訪問創建對象,默認調用servlet方法,重寫servlet方法之后會調用doGet方法或者doPost方法,當調用doGet方法的時候,需要兩個參數。一個是request,一個是response,這兩個參數,誰去調用改doGet方法管提供這個倆個參數,doGet方法由Tomcat引擎負責調用,它在調用的時候,幫你創建兩個對象,一個是request代表請求,一個是response代表響應。其中request內部封裝http請求的所有內容;response是空的,因為它代表響應,response有自己的緩沖區,可以向緩沖區里面添加內容,可以添加響應行、響應頭、響應體(分別有對應的方法),添加完成之后,Tomcat引擎會獲取緩沖區內容,會組裝成http響應的東西,然后發送到客戶端,通過裝包也可看到,客戶端獲得這些內容會自動根據響應進行解析,最終在頁面上顯示響應體的內容。

二、ServletContext域和Request域的生命周期

ServletContext
創建:服務器啟動
銷毀:服務器關閉
域的作用范圍:整個web應用

Request
創建: 訪問時創建request對象
銷毀:響應結束request銷毀
(生命周期為一瞬間)
域的作用范圍:一次請求中

三、轉發和重定向的區別

1).重定向兩次請求 轉發一次請求
2).重定向的地址欄的地址變化 轉發的地址不變
3).重定向可以訪問外部網站 轉發不能訪問外部網站,只能訪問內部資源
4).轉發的性能要優于重定向

四、客戶端地址與服務器端地址的區別

客戶端地址:是客戶端去訪問服務器的地址,服務器外部的地址
客戶端地址必須寫上web應用的名稱,代表要去Tomcat容器中去找哪個web應用
例如:
直接輸入地址
重定向
也就是,只要是服務器外部跳出服務器,然后再去訪問服務器內部的資源,豆角客戶端地址

服務器端地址:是服務器內部資源跳轉訪問的地址
不需要寫web應用的名稱
例如:
轉發

總結:

request獲得請求行的內容

獲得請求方式:request.getMethod();
獲得請求資源:request.getRequestURI();
request.getRequestURL();這個長,協議、主機名、端口都有
動態獲得web應用的名稱:request.getContextPath();
獲得客戶機的一些信息:request.getRemoteAddr();

request獲得請求頭的內容

request.getHeader(name);

request獲得請求體(請求參數)

request.getParameter(name);//返回值為String
request.getParameterMap();//將所有的數據以Map形式封裝,返回值為Map<String ,String[]>
request.getParameterValues(name);//返回值為String[]字符串數組

注意: 客戶端發送的參數,到服務器端獲得后都是字符串
獲得中文亂碼 的解決:

post提交: request.setCharacterEncoding("UTF-8");
get提交: parameter = new String(parameter.getBytes("iso8859-1"),"UTF-8");//先用iso8859-1默認編碼再用UTF-8解碼

request轉發和域

轉發:request.getRequestDispather(轉發的地址,服務器內部的地址,不需要web應用名稱).forward(request, response);
例如:request.getRequestDispatcher("/login.jsp").forward(request, response);
存:request.setAttribute(name,value);
取:request.getAttribute(name,value);//取的時候需要強轉一下

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/379654.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/379654.shtml
英文地址,請注明出處:http://en.pswp.cn/news/379654.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DCI:James O. Coplien和Trygve Reenskau提出的新架構方法

http://www.infoq.com/cn/news/2009/05/dci-coplien-reenskau 轉載于:https://www.cnblogs.com/yelinpalace/archive/2009/06/13/1502573.html

Java ObjectStreamField getOffset()方法與示例

ObjectStreamField類的getOffset()方法 (ObjectStreamField Class getOffset() method) getOffset() method is available in java.io package. getOffset()方法在java.io包中可用。 getOffset() method is used to get the offset of this ObjectStreamField field. getOffse…

Mac VSCode配置C語言環境(可以調試)

Mac VSCode配置C語言環境c_cpp_properties.jsontasks.jsonlaunch.json新建一個文件夾&#xff0c;用vscode&#xff0c;然后再新建一個test.c文件。 #include <stdio.h>int main(void) {int a1,b1;int cab;printf("%d\n",c);return 0; }這篇文章說怎么配置c_c…

XmlPullParserException

今天在android的開發中約到一個問題 使用Ksoap2 訪問 WebService 拋出 XmlPullParserException 異常。 在網上淘了一下這個問題 http://www.eoeandroid.com/thread-70527-1-1.html 不能解決我的問題&#xff0c;求解轉載于:https://www.cnblogs.com/pengqinping/archive/2012/0…

vShpere Client在win 7 RC下和2008下 無法正常連接esx主機之解決辦法

vShpere Client在win 7 RC下和2008下 無法正常連接esx主機之解決辦法 在win7下和2008下打開client后連接esx主機會出現2個錯誤提示, 第一個是 第二個是 然后就連接失敗了,開始以為是CC的esx主機安裝有問題,后來找了找,借助了強大google工具,終于找到解決辦法.解決辦法如下: 1.從…

tooctalstring_Java Integer類toOctalString()方法的示例

tooctalstring整數類toOctalString()方法 (Integer class toOctalString() method) toOctalString() method is available in java.lang package. toOctalString()方法在java.lang包中可用。 toOctalString() method is used to represent an octal string of the given parame…

localhost與127.0.0.1之間的關系更改

其實localhost的默認IP地址為127.0.0.1&#xff0c;因為這是一種映射關系。 更改步驟如下&#xff1a; C:\Windows\System32\drivers\etc 下的hosts 打開hosts可以看到 更改即可

基于Hash表的排序--C語言

我們知道&#xff0c;C語言里面是沒有hash表的&#xff0c;但是我們可以用一個結構體表示&#xff0c;對結構體排序&#xff0c;我們可以用qsort排序。 下面我們用一個LeedCode上面的一道題目講解。 347. 前 K 個高頻元素 這個題目是讓我們求解前k個高頻元素&#xff0c;求解思…

ORACLE10g R2及PATH官方下載地址

ORACLE10g R2及PATH官方下載地址 Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for Microsoft Windows (32-bit)http://download.oracle.com/otn/nt/oracle10g/10201/10201_database_win32.zip http://download.oracle.com/otn/nt/oracle10g/102…

[網摘]Javascript中最常用的55個經典技巧

1. οncοntextmenu"window.event.returnValuefalse" 將徹底屏蔽鼠標右鍵<table border οncοntextmenureturn(false)><td>no</table> 可用于Table 2. <body onselectstart"return false"> 取消選取、防止復制 3. οnpaste"…

Java集合unmodifiableMap()方法及示例

集合類unmodifiableMap()方法 (Collections Class unmodifiableMap() method) unmodifiableMap() method is available in java.util package. unmodifiableMap()方法在java.util包中可用。 unmodifiableMap() method is used to get a non-modifiable view of the given Map (…

Linux內核設計與實現---內核同步方法

內核同步方法1 原子操作原子整數操作原子性與順序性的比較原子位操作2 自旋鎖自旋鎖是不可遞歸的其他針對自旋鎖的操作自旋鎖和下半部3 讀-寫自旋鎖4 信號量創建和初始化信號量使用信號量5 讀-寫信號量6 自旋鎖和信號量7 完成變量8 互斥鎖互斥鎖API9 禁止搶占10 順序和屏障1 原…

單擊瀏覽器右上角的X彈出提示窗口

單擊瀏覽器右上角的X彈出提示窗口&#xff0c;簡單實現。 <script language"javascript">window.onunload function () { if (event.clientY < 0 && event.clientX> document.body.scrollWidth) { //event.returnValue …

Java DataOutputStream writeChars()方法及示例

DataOutputStream類writeChars()方法 (DataOutputStream Class writeChars() method) writeChars() method is available in java.io package. writeChars()方法在java.io包中可用。 writeChars() method is used to write the given string as a sequence of characters to th…

對c#拆裝箱的性能分析(泛型)

c#中&#xff0c;數據類型主要分為2種&#xff0c;分別為值類型和引用類型。把值類型轉換為引用類型稱為裝箱&#xff0c;把引用類型轉換為值類型稱為拆箱。在c#中&#xff0c;值類型是在堆棧上分配內存的&#xff0c;而引用類型是在堆上分配內存的。裝箱的時候&#xff0c;CLR…

UNIX環境高級編程---進程間通信總結

進程間通信1 管道匿名管道命名管道2 消息隊列3 信號量POSIX信號量有名信號量無名信號量有名信號量和無名信號量的公共操作4 共享內存5 信號相關函數6 套接字針對 TCP 協議通信的 socket 編程模型針對 UDP 協議通信的 socket 編程模型針對本地進程間通信的 socket 編程模型總結L…

C語言一個小小的問題引起的對指針的探究。。。

C語言一個小小的問題引起的對指針的探究。。。 廢話不多說。下面是這個大家認識的一個及其簡單的程序&#xff1a; 1 #include <stdio.h>2 void A(int a[])3 {4 printf("%d/t", sizeof(a));5 }6 int main()7 {8 int a[512];9 int *p; 10 …

java 方法 示例_Java集合syncedSet()方法與示例

java 方法 示例集合類syncedSet()方法 (Collections Class synchronizedSet() method) synchronizedSet() method is available in java.util package. 可以在java.util包中使用syncedSet ()方法 。 synchronizedSet() method is used to return the synchronized view of the …

IE的全屏幕顯示(javascript)

<SCRIPT LANGUAGE"javascript"> <!-- if (this.name!fullscreen){ window.open(location.href,fullscreen,fullscreen,scrollbars) } // --> </script> 轉載于:https://www.cnblogs.com/bangchao/archive/2009/06/26/1511645.html

搜索---廣度優先遍歷、深度優先遍歷、回溯法

參考文章&#xff1a;https://github.com/CyC2018/CS-Notes/blob/master/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E6%90%9C%E7%B4%A2.md 廣度優先搜索&#xff08;BFS&#xff09; 廣度優先搜索是按層來處理頂點的&#xff0c;距離開始點最近的那些頂點首先被訪問&#…