request param 獲取


通過request對象獲取客戶端請求信息

  getRequestURL方法返回客戶端發出請求時的完整URL。
  getRequestURI方法返回請求行中的資源名部分。
  getQueryString 方法返回請求行中的參數部分。
  getPathInfo方法返回請求URL中的額外路徑信息。額外路徑信息是請求URL中的位於Servlet的路徑之后和查詢參數之前的內容,它以“/”開頭。
  getRemoteAddr方法返回發出請求的客戶機的IP地址。
  getRemoteHost方法返回發出請求的客戶機的完整主機名。
  getRemotePort方法返回客戶機所使用的網絡端口號。
  getLocalAddr方法返回WEB服務器的IP地址。
  getLocalName方法返回WEB服務器的主機名。

package com.xc.request;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * 通過request對象獲取客戶端請求信息
 */
@WebServlet("/RequestDemo01")
public class RequestDemo01 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        /**
         * 1.獲得客戶機信息
         */
        String requestUrl = request.getRequestURL().toString();// 得到請求的URL地址
        String requestUri = request.getRequestURI();// 得到請求的資源
        String queryString = request.getQueryString();// 得到請求的URL地址中附帶的參數
        String remoteAddr = request.getRemoteAddr();// 得到來訪者的IP地址
        String remoteHost = request.getRemoteHost();
        int remotePort = request.getRemotePort();
        String remoteUser = request.getRemoteUser();
        String method = request.getMethod();// 得到請求URL地址時使用的方法
        String pathInfo = request.getPathInfo();
        String localAddr = request.getLocalAddr();// 獲取WEB服務器的IP地址
        String localName = request.getLocalName();// 獲取WEB服務器的主機名
        response.setCharacterEncoding("UTF-8");// 設置將字符以"UTF-8"編碼輸出到客戶端瀏覽器
        // 通過設置響應頭控制瀏覽器以UTF-8的編碼顯示數據,如果不加這句話,那么瀏覽器顯示的將是亂碼
        response.setHeader("content-type", "text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.write("獲取到的客戶機信息如下:");
        out.write("<hr/>");
        out.write("請求的URL地址:" + requestUrl);
        out.write("<br/>");
        out.write("請求的資源:" + requestUri);
        out.write("<br/>");
        out.write("請求的URL地址中附帶的參數:" + queryString);
        out.write("<br/>");
        out.write("來訪者的IP地址:" + remoteAddr);
        out.write("<br/>");
        out.write("來訪者的主機名:" + remoteHost);
        out.write("<br/>");
        out.write("使用的端口號:" + remotePort);
        out.write("<br/>");
        out.write("remoteUser:" + remoteUser);
        out.write("<br/>");
        out.write("請求使用的方法:" + method);
        out.write("<br/>");
        out.write("pathInfo:" + pathInfo);
        out.write("<br/>");
        out.write("localAddr:" + localAddr);
        out.write("<br/>");
        out.write("localName:" + localName);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

 

 

獲取客戶端請求頭信息

     getHeader(string name)方法:String 
  getHeaders(String name)方法:Enumeration 
  getHeaderNames()方法

 

package com.xc.request;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * 獲取客戶端請求頭信息 客戶端請求頭:
 */
@WebServlet("/RequestDemo02")
public class RequestDemo02 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setCharacterEncoding("UTF-8");// 設置將字符以"UTF-8"編碼輸出到客戶端瀏覽器
        // 通過設置響應頭控制瀏覽器以UTF-8的編碼顯示數據
        response.setHeader("content-type", "text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        Enumeration<String> reqHeadInfos = request.getHeaderNames();// 獲取所有的請求頭
        out.write("獲取到的客戶端所有的請求頭信息如下:");
        out.write("<hr/>");
        while (reqHeadInfos.hasMoreElements()) {
            String headName = (String) reqHeadInfos.nextElement();
            String headValue = request.getHeader(headName);// 根據請求頭的名字獲取對應的請求頭的值
            out.write(headName + ":" + headValue);
            out.write("<br/>");
        }
        out.write("<br/>");
        out.write("獲取到的客戶端Accept-Encoding請求頭的值:");
        out.write("<hr/>");
        String value = request.getHeader("Accept-Encoding");// 獲取Accept-Encoding請求頭對應的值
        out.write(value);

        Enumeration<String> e = request.getHeaders("Accept-Encoding");
        while (e.hasMoreElements()) {
            String string = (String) e.nextElement();
            System.out.println(string);
        }
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

 

 獲取客戶端通過Form表單提交上來的參數

  • getParameter(String)方法(常用)
  • getParameterValues(String name)方法(常用)
  • getParameterNames()方法(不常用)
  • getParameterMap()方法(編寫框架時常用)
package com.xc.request;

import java.io.IOException;
import java.text.MessageFormat;
import java.util.Enumeration;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 獲取客戶端通過Form表單提交上來的參數
 */
@WebServlet("/RequestDemo03")
public class RequestDemo03 extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 客戶端是以UTF-8編碼提交表單數據的,所以需要設置服務器端以UTF-8的編碼進行接收,否則對於中文數據就會產生亂碼
        request.setCharacterEncoding("UTF-8");
        /**
         * 編&nbsp;&nbsp;號(文本框): <input type="text" name="userid" value="NO." size="2" maxlength="2">
         */
        String userid = request.getParameter("userid");// 獲取填寫的編號,userid是文本框的名字,<input type="text" name="userid">
        /**
         * 用戶名(文本框):<input type="text" name="username" value="請輸入用戶名">
         */
        String username = request.getParameter("username");// 獲取填寫的用戶名
        /**
         * 密&nbsp;&nbsp;碼(密碼框):<input type="password" name="userpass" value="請輸入密碼">
         */
        String userpass = request.getParameter("userpass");// 獲取填寫的密碼
        String sex = request.getParameter("sex");// 獲取選中的性別
        String dept = request.getParameter("dept");// 獲取選中的部門
        // 獲取選中的興趣,因為可以選中多個值,所以獲取到的值是一個字符串數組,因此需要使用getParameterValues方法來獲取
        String[] insts = request.getParameterValues("inst");
        String note = request.getParameter("note");// 獲取填寫的說明信息
        String hiddenField = request.getParameter("hiddenField");// 獲取隱藏域的內容

        String instStr = "";
        /**
         * 獲取數組數據的技巧,可以避免insts數組為null時引發的空指針異常錯誤!
         */
        for (int i = 0; insts != null && i < insts.length; i++) {
            if (i == insts.length - 1) {
                instStr += insts[i];
            } else {
                instStr += insts[i] + ",";
            }
        }

        String htmlStr = "<table>" + "<tr><td>填寫的編號:</td><td>{0}</td></tr>" + "<tr><td>填寫的用戶名:</td><td>{1}</td></tr>"
                + "<tr><td>填寫的密碼:</td><td>{2}</td></tr>" + "<tr><td>選中的性別:</td><td>{3}</td></tr>" + "<tr><td>選中的部門:</td><td>{4}</td></tr>"
                + "<tr><td>選中的興趣:</td><td>{5}</td></tr>" + "<tr><td>填寫的說明:</td><td>{6}</td></tr>" + "<tr><td>隱藏域的內容:</td><td>{7}</td></tr>"
                + "</table>";
        htmlStr = MessageFormat.format(htmlStr, userid, username, userpass, sex, dept, instStr, note, hiddenField);

        response.setCharacterEncoding("UTF-8");// 設置服務器端以UTF-8編碼輸出數據到客戶端
        response.setContentType("text/html;charset=UTF-8");// 設置客戶端瀏覽器以UTF-8編碼解析數據
        response.getWriter().write(htmlStr);// 輸出htmlStr里面的內容到客戶端瀏覽器顯示

        Enumeration<String> paramNames = request.getParameterNames();// 獲取所有的參數名
        while (paramNames.hasMoreElements()) {
            String name = paramNames.nextElement();// 得到參數名
            String value = request.getParameter(name);// 通過參數名獲取對應的值
            System.out.println(MessageFormat.format("{0}={1}", name, value));
        }

        // request對象封裝的參數是以Map的形式存儲的
        Map<String, String[]> paramMap = request.getParameterMap();
        for (Map.Entry<String, String[]> entry : paramMap.entrySet()) {
            String paramName = entry.getKey();
            String paramValue = "";
            String[] paramValueArr = entry.getValue();
            for (int i = 0; paramValueArr != null && i < paramValueArr.length; i++) {
                if (i == paramValueArr.length - 1) {
                    paramValue += paramValueArr[i];
                } else {
                    paramValue += paramValueArr[i] + ",";
                }
            }
            System.out.println(MessageFormat.format("{0}={1}", paramName, paramValue));
        }

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Html的Form表單元素</title>
</head>
<fieldset style="width: 500px;">
    <legend>Html的Form表單元素</legend>
    <!--form表單的action屬性規定當提交表單時,向何處發送表單數據,method屬性指明表單的提交方式,分為get和post,默認為get-->
    <form action="${pageContext.request.contextPath}/RequestDemo03"
        method="post">
        <!--輸入文本框,SIZE表示顯示長度,maxlength表示最多輸入長度-->&nbsp;&nbsp;號(文本框): <input type="text" name="userid" value="NO."
            size="2" maxlength="2"><br>
        <!--輸入文本框,通過value指定其顯示的默認值-->
        用戶名(文本框):<input type="text" name="username" value="請輸入用戶名"><br>
        <!--密碼框,其中所有輸入的內容都以密文的形式顯示-->&nbsp;&nbsp;碼(密碼框):
        <!--&nbsp;表示的是一個空格-->
        <input type="password" name="userpass" value="請輸入密碼"><br>
        <!--單選按鈕,通過checked指定默認選中,名稱必須一樣,其中value為真正需要的內容-->&nbsp;&nbsp;別(單選框): <input type="radio" name="sex" value="男" checked><input type="radio" name="sex" value="女"><br>
        <!--下拉列表框,通過<option>元素指定下拉的選項-->&nbsp;&nbsp;門(下拉框): <select name="dept">
            <option value="技術部">技術部</option>
            <option value="銷售部" SELECTED>銷售部</option>
            <option value="財務部">財務部</option>
        </select><br>
        <!--復選框,可以同時選擇多個選項,名稱必須一樣,其中value為真正需要的內容-->&nbsp;&nbsp;趣(復選框): <input type="checkbox" name="inst" value="唱歌">唱歌
        <input type="checkbox" name="inst" value="游泳">游泳 <input
            type="checkbox" name="inst" value="跳舞">跳舞 <input
            type="checkbox" name="inst" value="編程" checked>編程 <input
            type="checkbox" name="inst" value="上網">上網 <br>
        <!--大文本輸入框,寬度為34列,高度為5行-->&nbsp;&nbsp;明(文本域):
        <textarea name="note" cols="34" rows="5">
     </textarea>
        <br>
        <!--隱藏域,在頁面上無法看到,專門用來傳遞參數或者保存參數-->
        <input type="hidden" name="hiddenField" value="hiddenvalue" />
        <!--提交表單按鈕,當點擊提交后,所有填寫的表單內容都會被傳輸到服務器端-->
        <input type="submit" value="提交(提交按鈕)">
        <!--重置表單按鈕,當點擊重置后,所有表單恢復原始顯示內容-->
        <input type="reset" value="重置(重置按鈕)">
    </form>
    <!--表單結束-->
</fieldset>
</body>
<!--完結標記-->
</html>
<!--完結標記-->

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM