javaweb入門-----request與response的作用

来源:https://www.cnblogs.com/zhengcheng-java/archive/2019/07/30/11273455.html
-Advertisement-
Play Games

request對象和request對象的原理 1.request和response對象request對象和request對象的原理時由伺服器創建的,我們來使用它們 2.request對象是來獲取請求消息,response對象是來設置響應消息 requset對象繼承體繫結構: ServletReque ...


request對象和request對象的原理

 

  1.request和response對象request對象和request對象的原理時由伺服器創建的,我們來使用它們

  2.request對象是來獲取請求消息,response對象是來設置響應消息

 

requset對象繼承體繫結構:
ServletRequest -- 介面
    | 繼承
HttpServletRequest -- 介面

 

request功能:


1.獲取請求行數據
*GET /day14/demo1?name=zhangsan HTTP/1.1
*方法
1. 獲取請求方式:GET
*String getMethod()


**2.獲取虛擬目錄:/day14
*String getContextPath()


3.獲取Servlet資源路徑:/demo1
*String getServletPath()


4.獲取get方式的請求參數:name=zhangsan
*String getQueryString()


**5.獲取請求URI:/day14/demo1
*String getRequestURI(); /day14/demo1
*StringBuffer getRequestURL(): http://localhost/day14/demo1

例子:
URI:統一資源標識符 共和國
URL:統一資源定位符 中華人民共和國


6.獲取協議及版本:HTTP/1.1
*String getProtocol()


7.獲取客戶機的IP地址:
*String getRemoteAddr()

2.獲取請求頭數據
*方法:
***String getHeader(String name);通過請求頭的名稱獲取請求頭的值
*Enumeration<String> getHeaderNames();獲取所有的請求頭名稱
//Enumeration 枚舉的一種,想象成迭代器,可以遍歷出數據
3.獲取請求體數據
*請求體:只有post請求方式,才有請求體,在請求體中封裝了post請求的請求參數
*步驟:
1.獲取流對象
* BufferedReader getReader();獲取字元輸入流,只能操作字元數據
* ServletInputStream getInputStream();獲取位元組輸入流,可以操作所有類型數據
2.再從流對象中拿數據

 

 

2:主要功能

 

1.獲取請求參數通用方式(無論get或post請求方式都可以使用下列方法獲取請求參數)
1.String getParameter(String name):根據參數名稱獲取參數值
username=zhangsan&pswd=123
2.String[] getParametervalues(String name):根據參數名稱獲取參數值的數組
hobby=study&hobby=game
3.Enumeration<String> getParameterNames():獲取所有請求的參數名稱
4.Map<String,String[]>getParameterMap();獲取所有參數的map集合


**中文亂碼問題 *

get方式:tomcat8 已結將get方式亂碼問題解決了
*post方式:會亂碼 request.setCharacterEncoding("utf-8");

2.請求轉發(包含):一種在伺服器內部的資源跳轉方式(例如 servletA 需要用 servletB的資源)
作用:
1.當一個請求需要由多個servlet協作完成時,這時可以使用請求轉發(包含)
2.請求轉發:由後一個servlet響應數據(體),前一個servlet可以設置響應頭(留頭不留體)
3.請求包含:有兩個servlet共同完成響應體,由前一個servlet設置響應頭(留體不留頭)
4.無論請求轉發或包含,都是使用同一個request和response
1.步驟:
1.通過request對象獲取請求轉發器對象:RequestDisspatcher getRequestDisspatcher(String path)
2.使用RequestDisspatcher對象來進行轉發:forward(ServletRequest request, ServletResponse response)
(RequestDisspatcher對象來進行轉發:include 包含的方法)


2.特點:


1.瀏覽器地址欄路徑沒有發生變化
2.只能轉發到當前伺服器內部資源中
3.轉發是同一次請求
請求轉發:留頭不留體
請求包含:留體不留頭

 

請求轉發和重定向的區別:


1.請求轉發是一個請求一個響應,重定向是兩次請求兩次響應
2.請求轉發地址欄內容不變,重定向顯示最後一個請求的地址
3.請求轉發只能轉發到本項目中的其他servlet,重定向還可以重定向到其他項目的servlet
4.請求轉發是伺服器內轉發,只需寫出要轉發的servlet路徑,重定向要寫出項目名

重定向 response:請求給servlet1 servlet1做不了回應給客戶端,再請求servlet2,servlet2回應
response.sendRedirect("/webrequest/redirect2"); 重定向要加上項目名

 

request作為域時的主要功能:

 

共用數據:
*域對象:一個有作用範圍的對象,可以在範圍內共用數據
*request域:代表一次請求的範圍,一般用於請求轉發的多個資源中共用數據
*方法:
1.void setAttribute(String name, Object obj);存儲數據
2.Object getAttribute(String name);通過鍵獲取值
3.void removeAttribute(String name);通過鍵移除鍵值對

 

 

瞭解了request和response的基本用法,並且掌握了請求轉發包含與重定向的知識後,就可以明白當請求到來時,servlet是如何處理的。下文將介紹數據轉發到頁面,呈現給用戶是用怎樣的方式,jsp與el表達式

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 引言 StringBuffer類的delete()方法和deleteCharAt()方法都是用來刪除StringBuffer字元串中的字元 區別 1.對於delete(int start,int end)這個方法一共有兩個參數是int類型的,代表從索引下標start刪除字元到索引下標end字元,但是 ...
  • INTRODUCTION: 圖論演算法在電腦科學中扮演著很重要的角色,它提供了對很多問題都有效的一種簡單而系統的建模方式。很多問題都可以轉化為圖論問題,然後用圖論的基本演算法加以解決。--百度百科 對於OI而言,圖是指由若幹給定的點及若幹條連接兩點的線(邊)所構成的圖形 藉助圖論知識,我們往往可以將一 ...
  • 前提 假設你瞭解過 SpringBoot 和 Kafka。 1、SpringBoot 如果對 SpringBoot 不瞭解的話,建議去看看 DD 大佬 和 純潔的微笑 的系列博客。 2、Kafka Kafka 的話可以看看我前兩天寫的博客 : Kafka 安裝及快速入門 學習的話自己開台虛擬機自己手 ...
  • SMTPDebug = 1; //設置郵件使用SMTP $mail->isSMTP(); // 設置郵件程式以使用SMTP $mail->Host = 'smtp.qq.com'; $mail->isSMTP(); /... ...
  • 1.構造函數的作用: 實現屬性的初始化 使用構造函數實現成員變數的初始化 非靜態成員變數 隨著對象的常見才開闢空間,所以只能使用對象來訪問 靜態成員變數,隨著類的載入而開闢空間,可以通過類直接訪問 2.static關鍵字: static修飾成員變數的特點: 1:static修飾的成員變數是隨著類的加 ...
  • 1.1.安裝Go 安裝包下載:https://studygolang.com/dl 一直點下一步安裝即可,預設是安裝在“C:\Go”,如果自己換成其它目錄則需添加環境變數。 1.2.Liteide liteide是一款免費的IDE 安裝包下載:https://sourceforge.net/proj ...
  • 前文已經說過,你可以提前通過學長學姐咨詢實驗室的情況,來選擇自己心儀的實驗室,避免進入自己不喜歡的實驗室。那麼如果已經不小心進入到了自己不喜歡的實驗室怎麼辦,這裡提供一些有用的建議。 1.離開你所在的項目組或者離開你所在的實驗室 對,你沒看錯,就是離開。很多人可能會有疑問,我都已經進來了,怎麼出去啊 ...
  • 年薪20萬的夢想。。。 python對文件、目錄能做什麼?或者說我們需要python替我們做什麼?最經常的操作就是對文件的:打開、關閉、讀取、寫入、修改、保存等等對目錄的操作,無非就是:創建目錄、刪除目錄、更改目錄名字等等。我們先認識一下OS模塊,os模塊以及子模塊path中包含了獲取系統信息、以及 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...