通過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"); /** * 編 號(文本框): <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");// 獲取填寫的用戶名 /** * 密 碼(密碼框):<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表示最多輸入長度--> 編 號(文本框): <input type="text" name="userid" value="NO." size="2" maxlength="2"><br> <!--輸入文本框,通過value指定其顯示的默認值--> 用戶名(文本框):<input type="text" name="username" value="請輸入用戶名"><br> <!--密碼框,其中所有輸入的內容都以密文的形式顯示--> 密 碼(密碼框): <!-- 表示的是一個空格--> <input type="password" name="userpass" value="請輸入密碼"><br> <!--單選按鈕,通過checked指定默認選中,名稱必須一樣,其中value為真正需要的內容--> 性 別(單選框): <input type="radio" name="sex" value="男" checked>男 <input type="radio" name="sex" value="女">女<br> <!--下拉列表框,通過<option>元素指定下拉的選項--> 部 門(下拉框): <select name="dept"> <option value="技術部">技術部</option> <option value="銷售部" SELECTED>銷售部</option> <option value="財務部">財務部</option> </select><br> <!--復選框,可以同時選擇多個選項,名稱必須一樣,其中value為真正需要的內容--> 興 趣(復選框): <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行--> 說 明(文本域): <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> <!--完結標記-->