1. 程式人生 > >使用JSP處理客戶端請求

使用JSP處理客戶端請求

1、為什麼需要使用HTML表單

在動態網頁的開發中,HTML表單是與使用者互動資訊的主要手段。

2HTML表單

一個表單至少應該包括說明性文字、表單控制元件、提交和重填等內容。表單的首要標記是<form>,它有兩個重要引數:actionmethodAction表示表單要提交到的地點,method表示表單傳送的方法,有兩種:get(預設方法)和post

<fotm name=”form1” method=”post” action=”xinxin.jsp”>

2.1、getpost傳送方式

postpost方式會將表單的內容通過http傳送,在位址列中看不到表單的提交資訊,比較安全,而且使用

post方式傳送資訊沒有字元長度的限制。

get方式:表單內容經過編碼之後,通過URL傳送,可以在位址列中看到表單資訊,不安全。使用get方式傳送資訊時有255個字元的限制。get請求的頁面可以設定為書籤或使用郵件傳送,而post不可以。

2.1.1get方法提交時,亂碼問題解決:

String sex =request.getParameter(“xinxin”);

String tempSex = new String(sex.getBytes(“ISO-8859-1”));

……

2、表單處理的程式設計模式

一般是這樣一種模式:首先,使用者通過表單控制元件輸入並提交資訊。接著,JSP頁面獲取表單資料,進行邏輯處理。最後,

JSP頁面根據處理結果,轉向不同的結果頁面。

3、JSP內建物件

內建物件:內建物件就是由Web容器載入的一組類的例項,它不像一般的Java物件那樣用“new”去獲取例項,而是可以直接在JSP頁面使用的物件。

3.1JSP內建物件out

Out物件用於在客戶端輸出資料,out物件常用的方法是:print(),這個方法用於在頁面中打印出字串資訊。

<%

out.print(“嗨!我叫新新!”);

%>

3.2JSP內建物件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”);

%>

requestgetParameter()方法可以獲得上一頁面所提交的引數值。

channel所有複選框的名字,getParameterValues(“channel”)方法可以獲取到一個數組,這個陣列中儲存的就是所有選中的複選框對應的值。

setCharacterEncoding()方法用來指定每個請求的編碼。

3.3JSP內建物件response

response物件與request物件相對應,它用於響應客戶請求並向客戶端輸出資訊。

response常用方法:void sendRedirect(String location)。這個方法用來將請求重定向到一個不同的URL

例如:

response.sendRedirect(“xinxin.jsp”);

以上,客戶端重新建立連結,URL地址發生了改變。

使用requestgetRequestDispatcher()方法進行頁面跳轉時,客戶端並沒有重新建立新的連結,客戶端的URL地址不會發生改變。