HttpServletRequest 和HttpServletResponse

      網(wǎng)友投稿 896 2025-03-31

      文章目錄

      Servlet配置方式

      ServletContext

      如何得到

      有什么作用

      可以獲取全局配置參數(shù)

      可以獲取Web應(yīng)用中的資源

      通過classloader去獲取web工程下的資源

      使用ServletContext存取數(shù)據(jù)。

      ServletContext存取值分析

      細(xì)節(jié):

      ServletContext 何時(shí)創(chuàng)建, 何時(shí)銷毀?

      HTTPServletRequest

      HTTPServletResponse

      響應(yīng)的數(shù)據(jù)中有中文,那么有可能出現(xiàn)中文亂碼

      不管是字節(jié)流還是字符流,直接使用一行代碼就可以了。

      演練下載資源。

      總結(jié)

      Servlet配置方式

      全路徑匹配

      以 / 開始 /a /aa/bb

      localhost:8080/項(xiàng)目名稱/aa/bb

      路徑匹配 , 前半段匹配

      以 / 開始 , 但是以 * 結(jié)束 /a/* /*

      其實(shí)是一個(gè)通配符,匹配任意文字

      localhost:8080/項(xiàng)目名稱/aa/bb

      以擴(kuò)展名匹配

      寫法: 沒有/ 以 * 開始 *.擴(kuò)展名 *.aa *.bb

      ServletContext

      Servlet 上下文

      每個(gè)web工程都只有一個(gè)ServletContext對(duì)象。 說白了也就是不管在哪個(gè)servlet里面,獲取到的這個(gè)類的對(duì)象都是同一個(gè)。

      如何得到

      //1. 獲取對(duì)象ServletContext ServletContext context = getServletContext();

      1

      2

      有什么作用

      獲取全局配置參數(shù)

      獲取web工程中的資源

      存取數(shù)據(jù),servlet間共享數(shù)據(jù) 域?qū)ο?/p>

      獲取全局參數(shù)

      1. 獲取資源在tomcat里面的絕對(duì)路徑 先得到路徑,然后自己new InpuStream context.getRealPath("") //這里得到的是項(xiàng)目在tomcat里面的根目錄。 D:\tomcat\apache-tomcat-7.0.52\apache-tomcat-7.0.52\wtpwebapps\Demo03\ String path = context.getRealPath("file/config.properties"); D:\tomcat\apache-tomcat-7.0.52\apache-tomcat-7.0.52\wtpwebapps\Demo03\file\config.properties 2. getResourceAsStream 獲取資源 流對(duì)象 直接給相對(duì)的路徑,然后獲取流對(duì)象。

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      通過classloader去獲取web工程下的資源

      使用ServletContext存取數(shù)據(jù)。

      定義一個(gè)登陸的html頁(yè)面, 定義一個(gè)form表單

      定義一個(gè)Servlet,名為L(zhǎng)oginServlet

      針對(duì)成功或者失敗,進(jìn)行判斷,然后跳轉(zhuǎn)到不一樣的網(wǎng)頁(yè)

      ServletContext存取值分析

      細(xì)節(jié):

      賬號(hào):
      密碼:

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      ServletContext 何時(shí)創(chuàng)建, 何時(shí)銷毀?

      服務(wù)器啟動(dòng)的時(shí)候,會(huì)為托管的每一個(gè)web應(yīng)用程序,創(chuàng)建一個(gè)ServletContext對(duì)象

      從服務(wù)器移除托管,或者是關(guān)閉服務(wù)器。

      ServletContext 的作用范圍

      只要在這個(gè)項(xiàng)目里面,都可以取。 只要同一個(gè)項(xiàng)目。 A項(xiàng)目 存, 在B項(xiàng)目取,是取不到的? ServletContext對(duì)象不同。

      HttpServletRequest

      這個(gè)對(duì)象封裝了客戶端提交過來的一切數(shù)據(jù)。

      可以獲取客戶端請(qǐng)求頭信息

      //得到一個(gè)枚舉集合 Enumeration headerNames = request.getHeaderNames(); while (headerNames.hasMoreElements()) { String name = (String) headerNames.nextElement(); String value = request.getHeader(name); System.out.println(name+"="+value); }

      1

      2

      3

      4

      5

      6

      7

      8

      獲取客戶端提交過來的數(shù)據(jù)

      String name = request.getParameter("name"); String address = request.getParameter("address"); System.out.println("name="+name); System.out.println("address="+address); ------------------------------------------------- //name=zhangsan&name=lisi&name=wangwu 一個(gè)key可以對(duì)應(yīng)多個(gè)值。 Map map = request.getParameterMap(); Set keySet = map.keySet(); Iterator iterator = keySet.iterator(); while (iterator.hasNext()) { String key = (String) iterator.next(); System.out.println("key="+key + "--的值總數(shù)有:"+map.get(key).length); String value = map.get(key)[0]; String value1 = map.get(key)[1]; String value2 = map.get(key)[2]; System.out.println(key+" ======= "+ value + "=" + value1 + "="+ value2); }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      獲取中文數(shù)據(jù)

      客戶端提交數(shù)據(jù)給服務(wù)器端,如果數(shù)據(jù)中帶有中文的話,有可能會(huì)出現(xiàn)亂碼情況,那么可以參照以下方法解決。

      如果是GET方式

      代碼轉(zhuǎn)碼

      String username = request.getParameter(“username”);

      String password = request.getParameter(“password”);

      System.out.println("userName="+username+"==password="+password); //get請(qǐng)求過來的數(shù)據(jù),在url地址欄上就已經(jīng)經(jīng)過編碼了,所以我們?nèi)〉降木褪莵y碼, //tomcat收到了這批數(shù)據(jù),getParameter 默認(rèn)使用ISO-8859-1去解碼 //先讓文字回到ISO-8859-1對(duì)應(yīng)的字節(jié)數(shù)組 , 然后再按utf-8組拼字符串 username = new String(username.getBytes("ISO-8859-1") , "UTF-8"); System.out.println("userName="+username+"==password="+password); 直接在tomcat里面做配置,以后get請(qǐng)求過來的數(shù)據(jù)永遠(yuǎn)都是用UTF-8編碼。

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      可以在tomcat里面做設(shè)置處理 conf/server.xml 加上URIEncoding=“utf-8”

      如果是POST方式

      這個(gè)說的是設(shè)置請(qǐng)求體里面的文字編碼。 get方式,用這行,有用嗎? ---> 沒用 request.setCharacterEncoding("UTF-8"); 這行設(shè)置一定要寫在getParameter之前。

      1

      2

      3

      4

      HttpServletResponse

      負(fù)責(zé)返回?cái)?shù)據(jù)給客戶端。

      輸出數(shù)據(jù)到頁(yè)面上

      //以字符流的方式寫數(shù)據(jù) //response.getWriter().write("

      hello response...

      "); //以字節(jié)流的方式寫數(shù)據(jù) response.getOutputStream().write("hello response2222...".getBytes());

      1

      2

      3

      4

      5

      響應(yīng)的數(shù)據(jù)中有中文,那么有可能出現(xiàn)中文亂碼

      以字符流輸出

      response.getWriter()

      //1. 指定輸出到客戶端的時(shí)候,這些文字使用UTF-8編碼 response.setCharacterEncoding("UTF-8"); //2. 直接規(guī)定瀏覽器看這份數(shù)據(jù)的時(shí)候,使用什么編碼來看。 response.setHeader("Content-Type", "text/html; charset=UTF-8"); response.getWriter().write("我愛中國(guó)...");

      1

      2

      3

      4

      5

      6

      7

      以字節(jié)流輸出

      response.getOutputStream()

      //1. 指定瀏覽器看這份數(shù)據(jù)使用的碼表 response.setHeader("Content-Type", "text/html;charset=UTF-8"); //2. 指定輸出的中文用的碼表 response.getOutputStream().write("我愛中國(guó)..".getBytes("UTF-8")); --------------------------------------------

      1

      2

      3

      4

      5

      6

      7

      8

      不管是字節(jié)流還是字符流,直接使用一行代碼就可以了。

      response.setContentType("text/html;charset=UTF-8"); 然后在寫數(shù)據(jù)即可。

      1

      2

      3

      演練下載資源。

      直接以超鏈接的方式下載,不寫任何代碼。 也能夠下載東西下來。

      讓tomcat的默認(rèn)servlet去提供下載:

      aa.jpg

      bb.txt

      cc.rar

      原因是tomcat里面有一個(gè)默認(rèn)的Servlet – DefaultServlet 。這個(gè)DefaultServlet 專門用于處理放在tomcat服務(wù)器上的靜態(tài)資源。

      總結(jié)

      Servlet注冊(cè)方式

      ServletContext【重點(diǎn)】

      作用: 1. 獲取全局參數(shù) 2. 獲取工程里面的資源。 3. 資源共享。 ServletContext 域?qū)ο?有幾個(gè) 一個(gè) 什么時(shí)候創(chuàng)建 ? 什么時(shí)候銷毀 服務(wù)器啟動(dòng)的時(shí)候給每一個(gè)應(yīng)用都創(chuàng)建一個(gè)ServletContext對(duì)象, 服務(wù)器關(guān)閉的時(shí)候銷毀

      HttpServletRequest 和HttpServletResponse

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      簡(jiǎn)單登錄

      HttpServletRequest【重點(diǎn)】

      1. 獲取請(qǐng)求頭 2. 獲取提交過來的數(shù)據(jù)

      1

      2

      3

      HttpServletResponse【重點(diǎn)】

      負(fù)責(zé)輸出數(shù)據(jù)到客戶端,其實(shí)就是對(duì)之前的請(qǐng)求作出響應(yīng)

      1

      中文亂碼問題。【重點(diǎn)】

      下載

      https web前端

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:業(yè)界精英齊聚徐州,大咖云集共話傳感器產(chǎn)業(yè)未來
      下一篇:excel表格常用技巧大全
      相關(guān)文章
      亚洲av中文无码乱人伦在线咪咕| 亚洲中文字幕无码日韩| 亚洲精品无码久久久久sm| 亚洲国产成人VA在线观看| 豆国产96在线|亚洲| 亚洲乱色伦图片区小说| 亚洲夂夂婷婷色拍WW47| 亚洲一卡一卡二新区无人区| 亚洲国产综合精品中文第一| 亚洲av片不卡无码久久| 亚洲一级毛片在线观| 亚洲制服丝袜在线播放| 亚洲一区二区影视| 亚洲AV无码一区二区三区在线| 亚洲中文字幕无码av在线| xxx毛茸茸的亚洲| 丁香婷婷亚洲六月综合色| 在线亚洲午夜片AV大片| 亚洲AV无码一区二区三区性色| 亚洲丁香婷婷综合久久| 在线精品自拍亚洲第一区| 亚洲国产精品无码久久青草| 久久精品亚洲男人的天堂 | 亚洲AV成人精品日韩一区18p| 国产精品亚洲色图| 亚洲国产人成中文幕一级二级| 国产精品亚洲不卡一区二区三区| 国产亚洲人成A在线V网站| 国产亚洲精品a在线无码| 亚洲AV无码成人专区片在线观看| 亚洲三级电影网站| 亚洲手机中文字幕| 亚洲一区二区三区在线观看网站 | 亚洲日产无码中文字幕| 亚洲国产精品无码久久久不卡 | 亚洲天堂视频在线观看| 亚洲制服丝袜在线播放| 亚洲s码欧洲m码吹潮| 亚洲男女内射在线播放| 亚洲国产婷婷六月丁香| 亚洲网址在线观看|