前端頁面展示及代碼如下
HttpServletRequest常用方法如下:
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException {
//1.擷取單個name屬性的值
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("request.getParameterValues()擷取到的使用者名"+username+"<----密碼"+password);
//2.擷取多個相同name屬性的值(比如複選框)
String[] hobbies = request.getParameterValues("Hobby");
System.out.println("request.getParameterValues()擷取到複選框的值"+Arrays.toString(hobbies));
//3.擷取請求參數的Map集合
Map<String, String[]> parameterMap = request.getParameterMap();
//3.1隻是檢視請求的所有name
System.out.println("request.getParameterMap()前端請求的所有name屬性有:");
for (String key : parameterMap.keySet()) {
System.out.print(key+",");
}
System.out.println("通過request.getParameterMap()擷取前端請求的屬性和屬性值有:");
//3.2檢視請求參數的key和value
for (Map.Entry<String ,String []> entry : parameterMap.entrySet()) {
System.out.println(entry.getKey()+" :"+ Arrays.asList(entry.getValue()));
}
//4. 将發送請求頁面中form表單裡所有具有name屬性的表單對象擷取(包括button).傳回一個Enumeration類型的枚舉.
Enumeration<String> parameterNames = request.getParameterNames();
System.out.println("通過request.getParameterNames()擷取的循環周遊");
while(parameterNames.hasMoreElements()){
String name=(String)parameterNames.nextElement();
//如果是複選框隻能擷取第一個選中的值(推薦第三種)
String value=request.getParameter(name);
System.out.println(name + "=" + value);
}
request其餘常用方法:
request.getRequestURL(): 浏覽器送出請求時的完整URL,包括協定 主機名 端口(如果有)"
request.getRequestURI(): 浏覽器送出請求的資源名部分,去掉了協定和主機名"
request.getQueryString(): 請求行中的參數部分,隻能顯示以get方式發出的參數,post方式的看不到
request.getRemoteAddr(): 浏覽器所處于的客戶機的IP位址
request.getRemoteHost(): 浏覽器所處于的客戶機的主機名
request.getRemotePort(): 浏覽器所處于的客戶機使用的網絡端口
request.getLocalAddr(): 伺服器的IP位址
request.getLocalName(): 伺服器的主機名
request.getMethod(): 得到客戶機請求方式一般是GET或者POST
request.getHeader() 擷取浏覽器傳遞過來的頭資訊。
比如getHeader(“user-agent”) 可以擷取浏覽器的基本資料,這樣就能判斷是firefox、IE、chrome、或者是safari浏覽器
設定響應編碼有兩種方式
- response.setContentType(“text/html; charset=UTF-8”);
- response.setCharacterEncoding(“UTF-8”);
這兩種方式都需要在response.getWriter調用之前執行才能生效。
他們的差別在于
-
response.setContentType(“text/html; charset=UTF-8”);
不僅發送到浏覽器的内容會使用UTF-8編碼,而且還通知浏覽器使用UTF-8編碼方式進行顯示。是以總能正常顯示中文
- response.setCharacterEncoding(“UTF-8”);
設定跳轉方式
response.setStatus(301);
response.setHeader(“Location”, “fail.html”);
使用緩存可以加快頁面的加載,降低服務端的負擔。但是也可能看到過時的資訊,可以通過如下手段通知浏覽器不要使用緩存
response.setDateHeader(“Expires”,0 );
response.setHeader(“Cache-Control”,“no-cache”);
response.setHeader(“pragma”,“no-cache”);