整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          JSP實現數據傳遞

          SP內置對象

          九種對象簡介:

          1. out對象:用于向客戶端、瀏覽器輸出數據。
          2. request對象:封裝了來自客戶端、瀏覽器的各種信息。
          3. response對象:封裝了服務器的響應信息。
          4. exception對象:封裝了jsp程序執行過程中發生的異常和錯誤信息。
          5. config對象:封裝了應用程序的配置信息。
          6. page對象:指向了當前jsp程序本身。
          7. session對象:用來保存會話信息。也就是說,可以實現在同一用戶的不同請求之間共享數
          8. application對象:代表了當前應用程序的上下文。可以在不同的用戶之間共享信息。
          9. pageContext對象:提供了對jsp頁面所有對象以及命名空間的訪問。

          JSP實現數據傳遞-表單為例

          根據表單名稱獲取提交的數據信息:

          request.getParameter(“name”)返回的是一個String

          獲取表單對應多個值時的請求數據信息:

          request.getParameterValues(“name”)返回的是一個String數組需要遍歷

          解決中文亂碼問題

          < form action=”Welcome.jsp” method=”get” >

          表單get方式提交,中文亂碼處理-治標:

          request.getParameter(“name”)返回的是一個String

          返回的值.getByte(“ISO-8859-1”)=byte[] 數組名 以ISO-8859-1的格式打散

          String name=new String(數組名,”格式”)或者

          new String(返回的值.getByte(“ISO-8859-1”),utf-8)返回是一個String類型

          表單g所有方式提交,中文亂碼處理-治本:

          修改Tomcat配置文件

          配置tomcat\conf\server.xml文件

          connectionTimeout=”20000”

          redirectPort=”8443” URIEncoding=”utf-8”/>

          如圖:

          表單post方式提交,中文亂碼處理:

          request.setCharacterEncoding(“utf-8”)

          response.setCharacterEnconding(“utf-8”)

          在請求中存取屬性

          在請求中保存屬性:

          public void setAttribute(String name,Object o)

          request.setAttribute(mess,”注冊失敗”)

          在請求中獲取屬性:

          public Object getAttribute(String name)

          注意:

          1.在使用屬性值的時候要做非空判斷,否則會出現空指針

          2.它的返回值類型是Object類型,需要做數據類型的轉換

          轉發與重定向:

          轉發:

          RequestDispatcher對象

          forward()方法

          1.requestDispatcher(“url”).forward(request,response)

          < jsp:forward page=”url” >

          重定向:

          response.sendRedirect(request.getContextPath(到上文)+”url”)

          通過編碼URLEncode.encode(String,格式)

          或者解碼URLDecode.Decode(String,格式)

          作用域問題:

          request作用域:在一次請求的范圍內

          response作用域:在二次請求的范圍內

          轉發和重定向的區別:

          1. 行為區域的區別:轉發是服務器端的行為區域,重定向是客戶端行為區域
          2. URI:轉發不會發生變化,重定向會改變地址欄的URL
          3. 請求問題:轉發是一次請求,重定向是兩次請求
          4. 跳轉區域問題:轉發不可以跳轉到第二個項目,重定向可以地址會發生改變(跳轉到第二個項目)
          5. 攜帶請求問題:轉發可以攜帶request相關信息,重定向不會攜帶

          SP 代表 Java 服務器頁面。它是一種在應用服務器端使用的編程工具。JSP 基本上用于支持平臺 – 獨立和動態的方法來構建 Web 依賴的應用程序。JSP 頁面類似于 ASP 頁面,因為它們是在服務器上編譯的,而不是在用戶的 Web 瀏覽器上進行編譯。

          JSP 是由 Sun Microsystems 公司于 1999 年開發的。JSP 的開發使用語言,其中內置的所有功能都是用 Java 編程語言創建的。

          JSP的特點:

          • JSP 是 Servlet 技術的擴展版本。
          • JSP 技術類似于 Servlet 應用程序接口(API)。
          • 它提供了一些附加功能,例如表達式語言和自定義標簽等。
          • JSP 文件更容易部署,因為 JSP 引擎會自動執行 Java 代碼的重新編譯。

          JSP的優勢:

          JSP 有很多優點。

          • 對 Servlet 的擴展: Servlet 的 JSP 擴展。我們可以在 JSP 中使用 Servlet 的所有功能。我們可以輕松使用 JSP 開發的隱式對象、預定義標簽、自定義標簽和表達式語言。
          • 易于維護: 它易于管理,因為我們可以輕松地分離我們的業務邏輯,在 Servlet 技術中,我們可以將我們的業務邏輯與 Presentation 邏輯混合。
          • 快速發展: 無需重新編譯和重新部署。如果 JSP 頁面被修改。我們不需要重新編譯和重新部署項目。如果我們想改變應用程序的外觀和感覺,則需要重新編譯和更新 Servlet 代碼。
          • 比 Servlet 更少的代碼: 在 JSP 中,我們可以使用很多標簽,例如 action 標簽、jstt、Custom 標簽等,以減少代碼。我們可以使用 EL 和隱式對象。
          • JSP 頁面代碼在客戶端上不可見,只有生成的 HTML 可見。

          JSP的缺點:

          • 由于 JSP 頁面在編譯過程之前首先被轉換為 servlet,因此很難調試或跟蹤錯誤。
          • 由于 JSP 頁面被轉換為 Servlets 并被編譯,因此很難跟蹤 JSP 頁面中發生的錯誤。
          • 數據庫連接并不容易。
          • JSP 頁面需要更多的磁盤空間來保存 JSP 頁面。
          • 第一次訪問 JSP 頁面時需要更多時間,因為它們要在服務器上編譯。

          JSP的用途:

          • JSP 有很多優點。首先,動態部分是用 Java 編寫的,而不是 Visual Basic 或其他 MS 特定的語言,因此它更強大,更易于使用。
          • 它是獨立于非 Microsoft Web 服務器和其他操作系統的平臺
          • JSP 幫助開發人員使用特殊的 JSP 標簽在 HTML 頁面中插入 Java 代碼
          • JSP 也可用于訪問 JavaBeans 對象。JSP 允許使用請求和響應對象跨頁面共享信息。
          • 它可以用于將視圖層與 Web 應用程序中的業務邏輯分離


          作者:海擁
          鏈接:https://juejin.cn/post/7026954540683362340

          瀏覽器請求網頁時,它會向 Web 服務器發送特定信息,這些信息不能被直接讀取,因為這些信息是作為 HTTP 請求的頭的一部分進行傳輸的。您可以查看 HTTP 協議 了解更多相關信息。

          以下是來自于瀏覽器端的重要頭信息,您可以在 Web 編程中頻繁使用:

          頭信息描述
          Accept這個頭信息指定瀏覽器或其他客戶端可以處理的 MIME 類型。值 image/pngimage/jpeg 是最常見的兩種可能值。
          Accept-Charset這個頭信息指定瀏覽器可以用來顯示信息的字符集。例如 ISO-8859-1。
          Accept-Encoding這個頭信息指定瀏覽器知道如何處理的編碼類型。值 gzipcompress 是最常見的兩種可能值。
          Accept-Language這個頭信息指定客戶端的首選語言,在這種情況下,Servlet 會產生多種語言的結果。例如,en、en-us、ru 等。
          Authorization這個頭信息用于客戶端在訪問受密碼保護的網頁時識別自己的身份。
          Connection這個頭信息指示客戶端是否可以處理持久 HTTP 連接。持久連接允許客戶端或其他瀏覽器通過單個請求來檢索多個文件。值 Keep-Alive 意味著使用了持續連接。
          Content-Length這個頭信息只適用于 POST 請求,并給出 POST 數據的大小(以字節為單位)。
          Cookie這個頭信息把之前發送到瀏覽器的 cookies 返回到服務器。
          Host這個頭信息指定原始的 URL 中的主機和端口。
          If-Modified-Since這個頭信息表示只有當頁面在指定的日期后已更改時,客戶端想要的頁面。如果沒有新的結果可以使用,服務器會發送一個 304 代碼,表示 Not Modified 頭信息。
          If-Unmodified-Since這個頭信息是 If-Modified-Since 的對立面,它指定只有當文檔早于指定日期時,操作才會成功。
          Referer這個頭信息指示所指向的 Web 頁的 URL。例如,如果您在網頁 1,點擊一個鏈接到網頁 2,當瀏覽器請求網頁 2 時,網頁 1 的 URL 就會包含在 Referer 頭信息中。
          User-Agent這個頭信息識別發出請求的瀏覽器或其他客戶端,并可以向不同類型的瀏覽器返回不同的內容。

          讀取 HTTP 頭的方法

          下面的方法可用在 Servlet 程序中讀取 HTTP 頭。這些方法通過 HttpServletRequest 對象可用。

          序號方法 & 描述
          1Cookie[] getCookies()

          返回一個數組,包含客戶端發送該請求的所有的 Cookie 對象。

          2Enumeration getAttributeNames()

          返回一個枚舉,包含提供給該請求可用的屬性名稱。

          3Enumeration getHeaderNames()

          返回一個枚舉,包含在該請求中包含的所有的頭名。

          4Enumeration getParameterNames()

          返回一個 String 對象的枚舉,包含在該請求中包含的參數的名稱。

          5HttpSession getSession()

          返回與該請求關聯的當前 session 會話,或者如果請求沒有 session 會話,則創建一個。

          6HttpSession getSession(boolean create)

          返回與該請求關聯的當前 HttpSession,或者如果沒有當前會話,且創建是真的,則返回一個新的 session 會話。

          7Locale getLocale()

          基于 Accept-Language 頭,返回客戶端接受內容的首選的區域設置。

          8Object getAttribute(String name)

          以對象形式返回已命名屬性的值,如果沒有給定名稱的屬性存在,則返回 null。

          9ServletInputStream getInputStream()

          使用 ServletInputStream,以二進制數據形式檢索請求的主體。

          10String getAuthType()

          返回用于保護 Servlet 的身份驗證方案的名稱,例如,"BASIC" 或 "SSL",如果JSP沒有受到保護則返回 null。

          11String getCharacterEncoding()

          返回請求主體中使用的字符編碼的名稱。

          12String getContentType()

          返回請求主體的 MIME 類型,如果不知道類型則返回 null。

          13String getContextPath()

          返回指示請求上下文的請求 URI 部分。

          14String getHeader(String name)

          以字符串形式返回指定的請求頭的值。

          15String getMethod()

          返回請求的 HTTP 方法的名稱,例如,GET、POST 或 PUT。

          16String getParameter(String name)

          以字符串形式返回請求參數的值,或者如果參數不存在則返回 null。

          17String getPathInfo()

          當請求發出時,返回與客戶端發送的 URL 相關的任何額外的路徑信息。

          18String getProtocol()

          返回請求協議的名稱和版本。

          19String getQueryString()

          返回包含在路徑后的請求 URL 中的查詢字符串。

          20String getRemoteAddr()

          返回發送請求的客戶端的互聯網協議(IP)地址。

          21String getRemoteHost()

          返回發送請求的客戶端的完全限定名稱。

          22String getRemoteUser()

          如果用戶已通過身份驗證,則返回發出請求的登錄用戶,或者如果用戶未通過身份驗證,則返回 null。

          23String getRequestURI()

          從協議名稱直到 HTTP 請求的第一行的查詢字符串中,返回該請求的 URL 的一部分。

          24String getRequestedSessionId()

          返回由客戶端指定的 session 會話 ID。

          25String getServletPath()

          返回調用 JSP 的請求的 URL 的一部分。

          26String[] getParameterValues(String name)

          返回一個字符串對象的數組,包含所有給定的請求參數的值,如果參數不存在則返回 null。

          27boolean isSecure()

          返回一個布爾值,指示請求是否使用安全通道,如 HTTPS。

          28int getContentLength()

          以字節為單位返回請求主體的長度,并提供輸入流,或者如果長度未知則返回 -1。

          29int getIntHeader(String name)

          返回指定的請求頭的值為一個 int 值。

          30int getServerPort()

          返回接收到這個請求的端口號。

          31int getParameterMap()

          將參數封裝成 Map 類型。

          HTTP Header 請求實例

          下面的實例使用 HttpServletRequest 的 getHeaderNames() 方法讀取 HTTP 頭信息。該方法返回一個枚舉,包含與當前的 HTTP 請求相關的頭信息。

          一旦我們有一個枚舉,我們可以以標準方式循環枚舉,使用 hasMoreElements() 方法來確定何時停止,使用 nextElement() 方法來獲取每個參數的名稱。

          //導入必需的 java 庫import java.io.IOException;import java.io.PrintWriter;import java.util.Enumeration;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet("/DisplayHeader")//擴展 HttpServlet 類public class DisplayHeader extends HttpServlet { // 處理 GET 方法請求的方法 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 設置響應內容類型 response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String title = "HTTP Header 請求實例 - 菜鳥教程實例"; String docType = "<!DOCTYPE html> \n"; out.println(docType + "<html>\n" + "<head><meta charset=\"utf-8\"><title>" + title + "</title></head>\n"+ "<body bgcolor=\"#f0f0f0\">\n" + "<h1 align=\"center\">" + title + "</h1>\n" + "<table width=\"100%\" border=\"1\" align=\"center\">\n" + "<tr bgcolor=\"#949494\">\n" + "<th>Header 名稱</th><th>Header 值</th>\n"+ "</tr>\n"); Enumeration headerNames = request.getHeaderNames(); while(headerNames.hasMoreElements()) { String paramName = (String)headerNames.nextElement(); out.print("<tr><td>" + paramName + "</td>\n"); String paramValue = request.getHeader(paramName); out.println("<td> " + paramValue + "</td></tr>\n"); } out.println("</table>\n</body></html>"); } // 處理 POST 方法請求的方法 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }}

          以上測試實例是位于 TomcatTest 項目下,對應的 web.xml 配置為:


          主站蜘蛛池模板: 无码人妻精品一区二区三区99性| 精品无码一区二区三区爱欲| 97人妻无码一区二区精品免费 | 日本免费一区二区三区| 亚洲国产精品一区二区第四页| 精品视频一区二区三区四区| 亚洲视频免费一区| 亚洲福利一区二区| 乱子伦一区二区三区| 人妻aⅴ无码一区二区三区| 亚洲色大成网站www永久一区| 一区二区在线免费视频| 一区二区三区在线免费观看视频| 日本一区二区三区精品国产| 国产在线精品一区二区在线看 | 久久se精品动漫一区二区三区| 国产伦精品一区二区三区视频金莲 | 人妻体内射精一区二区| 亚洲无线码在线一区观看| 国产成人av一区二区三区在线观看| 无码日本电影一区二区网站| 国产精品成人一区二区三区| 国产无吗一区二区三区在线欢| 男人的天堂精品国产一区| 亚洲中文字幕丝袜制服一区| 亚洲中文字幕无码一区二区三区 | 在线观看午夜亚洲一区| 亚洲AV无码一区二区三区久久精品 | 亚洲一区二区三区在线| 国产精品制服丝袜一区 | 国产91大片精品一区在线观看| 亚洲蜜芽在线精品一区| 亚洲av无码一区二区三区乱子伦 | 亚洲一区无码中文字幕| 国产一区二区三区在线观看精品| 日本免费一区二区三区最新vr| 熟女少妇丰满一区二区| 国产高清在线精品一区二区三区 | 99精品国产高清一区二区三区| 一区二区三区在线视频播放| 久久影院亚洲一区|