程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> JSP學習筆記之requst對象

JSP學習筆記之requst對象

編輯:關於JSP

request對象是HttpServletRequest接口的一個實例,而HttpServletRequest的父接口是ServletRequest,但是目前ServletRequest只有HttpServletRequest一個接口,如果以後出現了新的協議,只要讓新的協議繼承ServletRequest即可 request對象功能: 1、接收表單參數:request.getParameter(); 此時要注意接收參數是可能會產生亂碼,因為所有的靜態WEB的執行流程是先從服務器取得一個頁面,之後通過此頁面把內容進行提交,提交給服務器後,服務器在將處理的結果返回給客戶端進行顯示,故如果要想直接輸入內容,就要把編碼設置為和服務器內容的編碼一直,可以使用ServletRequest接口中提供的setCharacterEncoding()方法進行統一的編碼設置,即在接收頁面上使用request.setCharacterEncoding("GBK");進行統一編碼後在進行表單值的接收 2、表單的提交方式:get 和post get提交的表單在地址欄中會將全部的參數顯示出來,這樣一來是不安全,而來時如果提交過多的內容將會產生錯誤,因為URL地址欄最大只能儲存4k~5k的內容,所以過大會造成無法提交 post提交表單在地址欄中不會顯示提交參數等內容,這樣的提交比較安全,而且不會受到內容多少的限制,但是如果內容過大將會超出http的超時時間限制 3、使用地址重寫的方式提交參數 格式:Xxx.jsp?參數名稱=參數值&參數名稱=參數值&參數名稱=參數值 [html]  <h1><a href="url_override_do.jsp?name=hello&school=sichuan univercity">地址重寫參數提交</a></h1>   接收時采用: [html]   <%               request.setCharacterEncoding("GBK");//處理中文亂碼問題               String rename=request.getParameter("name");               String reschool=request.getParameter("school");           %>           <h1>姓名:<%=rename %></h1>           <h1>日期:<%=reschool %></h1>     使用此種方式提交時,在提交後的頁面上右擊頁面屬性時依然可以看到url地址中帶有參數的地址 4、隱藏域傳遞參數 在表單中有一種叫做隱藏域的對象,此對象中的內容會隨表單的提交一起提交給jsp頁面 [html]   <form action="input.jsp" method="post">           <input type="hidden" name="school" value="四川農業大學網絡教育學院">           <input type="submit" value="提交隱藏域對象">       </form>     處理頁面 [html]  <%           request.setCharacterEncoding("GBK");  //按照中文接收           String reschool =new String( request.getParameter("school").getBytes("GBK"));//轉碼                  %>       <h1>參數內容為:<%=reschool %></h1>   5、接收多個參數 在表單中有復選框按鈕,可以用來多選,但是復選框的name屬性都是一樣的,那麼在表單的處理頁面要使用request.getParameterValues()函數進行接收 看如下代碼: 表單頁面: [html]  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   <html>     <head>       <title>復選框表單的提交</title>       <meta http-equiv="content-type" content="text/html; charset=GBK">     </head>          <body>       <form action="check_input.jsp" method="post">           <table>               <tr>                   <td>姓名:</td>                   <td><input type="text" name="name"></td>               </tr>               <tr>                   <td>興趣:</td>                   <td>                       <input type="checkbox" name="inst" value="游泳">游泳                       <input type="checkbox" name="inst" value="上網">上網                       <input type="checkbox" name="inst" value="電影">電影                       <input type="checkbox" name="inst" value="音樂">音樂                   </td>               </tr>           </table>           <input type="submit" value="提交">       </form>     </body>   </html>   處理頁面: [html]  <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>   <%@ page contentType="text/html; charset=GBK" %>   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   <html>     <head>       <title>使用地址重寫的方式提交參數</title>     </head>          <body>       <%           request.setCharacterEncoding("GBK");  //按照中文接收           String  rename=request.getParameter("name");           String  reinst[] = request.getParameterValues("inst");                  %>       <h1>姓名:<%=rename %></h1>       <h1>興趣:           <%                for(int i=0;i<reinst.length;i++){           %>               <%=reinst[i]%>           <%               }           %>       </h1>     </body>   </html>       6、對於一個工程上的表單來說,類型肯定是復雜多樣的,此時我們該如何接收呢?對於有單選、復選、一般的輸入等我們可以使用request.getParameterNames()方法進行接收,然後對於一般的參數就可以直接使用request.getParameter()方法進行接收了,對於像復選框之類的name屬性一樣的控件,我們可以使用String類的startWith()方法進行判斷。因為如果是諸如復選框之類的name屬性我們在進行書寫時一般在此name數值上加上***,表示數組,看案例: 表單頁面: [html]  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   <html>     <head>       <title>復雜表單的提交</title>       <meta http-equiv="content-type" content="text/html; charset=GBK">     </head>           <body>       <form action="Generic_input.jsp" method="post">           <table>               <tr>                   <td>姓名:</td>                   <td><input type="text" name="name"></td>               </tr>               <tr>                   <td><input type="hidden" name="hidden" value="隱藏的值"></td>               </tr>               <tr>                   <td>興趣:</td>                   <td>                       <input type="checkbox" name="**inst" value="游泳">游泳                       <input type="checkbox" name="**inst" value="上網">上網                       <input type="checkbox" name="**inst" value="電影">電影                       <input type="checkbox" name="**inst" value="音樂">音樂                   </td>               </tr>           </table>           <input type="submit" value="提交">       </form>     </body>   </html>     處理頁面: [html]   <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>   <%@ page contentType="text/html; charset=GBK" %>   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">   <html>     <head>       <title>使用地址重寫的方式提交參數</title>     </head>          <body>       <h1>       <%           request.setCharacterEncoding("GBK");  //按照中文接收           Enumeration enu = request.getParameterNames();           while(enu.hasMoreElements()){               String paraname = (String)enu.nextElement();               if(paraname.startsWith("**")){                   String temp[] = request.getParameterValues(paraname);                   for(int i=0;i<temp.length;i++){       %>                   <%=temp[i] %>       <%                                  }               }else{       %>                   <%=request.getParameter(paraname) %>       <%                          }           }       %>       </h1>     </body>   </html>          

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved