天天看點

HttpServletRequest與HttpServletResponse的常用方法詳解

前端頁面展示及代碼如下

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浏覽器

設定響應編碼有兩種方式

  1. response.setContentType(“text/html; charset=UTF-8”);
  2. response.setCharacterEncoding(“UTF-8”);

這兩種方式都需要在response.getWriter調用之前執行才能生效。

他們的差別在于

  1. response.setContentType(“text/html; charset=UTF-8”);

    不僅發送到浏覽器的内容會使用UTF-8編碼,而且還通知浏覽器使用UTF-8編碼方式進行顯示。是以總能正常顯示中文

  2. 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”);