使用JSP處理客戶端請求
1、為什麼需要使用HTML表單
在動態網頁的開發中,HTML表單是與使用者互動資訊的主要手段。
2、HTML表單
一個表單至少應該包括說明性文字、表單控制元件、提交和重填等內容。表單的首要標記是<form>,它有兩個重要引數:action和method。Action表示表單要提交到的地點,method表示表單傳送的方法,有兩種:get(預設方法)和post。
<fotm name=”form1” method=”post” action=”xinxin.jsp”>
2.1、get和post傳送方式
post:post方式會將表單的內容通過http傳送,在位址列中看不到表單的提交資訊,比較安全,而且使用
get方式:表單內容經過編碼之後,通過URL傳送,可以在位址列中看到表單資訊,不安全。使用get方式傳送資訊時有255個字元的限制。get請求的頁面可以設定為書籤或使用郵件傳送,而post不可以。
2.1.1、get方法提交時,亂碼問題解決:
String sex =request.getParameter(“xinxin”);
String tempSex = new String(sex.getBytes(“ISO-8859-1”));
……
2、表單處理的程式設計模式
一般是這樣一種模式:首先,使用者通過表單控制元件輸入並提交資訊。接著,JSP頁面獲取表單資料,進行邏輯處理。最後,
3、JSP內建物件
內建物件:內建物件就是由Web容器載入的一組類的例項,它不像一般的Java物件那樣用“new”去獲取例項,而是可以直接在JSP頁面使用的物件。
3.1、JSP內建物件out
Out物件用於在客戶端輸出資料,out物件常用的方法是:print(),這個方法用於在頁面中打印出字串資訊。
<%
out.print(“嗨!我叫新新!”);
%>
3.2、JSP內建物件request
request物件主要用於處理客戶端請求,可以在JSP頁面中通過呼叫request物件的方法來獲取請求的相關資料,其中包含有關瀏覽器請求的資訊。
request物件的幾個常用方法
方法名稱 |
說明 |
String getParameter(String name) |
根據頁面表單元件名稱獲取頁面提交資料 |
String[] getParameterValues(String name) |
獲取一個頁面表單元件對應多個值時的使用者的請求資料。例如:獲取多個複選框的值。 |
void setCharacterEncoding(String charset) |
指定每個請求的編碼,在呼叫request.getParameter()方法之前進行設定,可以用於解決中文亂碼問題。 |
request.getRequestDispatcher(String path) |
返回一個javax.servlet.RequestDispatchar物件,該物件的forward方法用於轉發請求。 |
頁面跳轉
request.getRequestDispatcher(“success.jsp”).forward(request, response);
3.2.1、
<%
request..setCharacterEncoding(“GBK”);
String name = request.getParameter(“name”);
String pwd = request.getParameter(“pwd”);
String [] channels = request.getParameterValues(“channel”);
%>
request的getParameter()方法可以獲得上一頁面所提交的引數值。
channel所有複選框的名字,getParameterValues(“channel”)方法可以獲取到一個數組,這個陣列中儲存的就是所有選中的複選框對應的值。
setCharacterEncoding()方法用來指定每個請求的編碼。
3.3、JSP內建物件response
response物件與request物件相對應,它用於響應客戶請求並向客戶端輸出資訊。
response常用方法:void sendRedirect(String location)。這個方法用來將請求重定向到一個不同的URL。
例如:
response.sendRedirect(“xinxin.jsp”);
以上,客戶端重新建立連結,URL地址發生了改變。
使用request的getRequestDispatcher()方法進行頁面跳轉時,客戶端並沒有重新建立新的連結,客戶端的URL地址不會發生改變。