# HttpServletRequest說明
### 基本概述
???該對象是有Web服務器創建的,每一次請求都會創建一次。其作用是將HTTP請求封裝成一個類,供Servlet處理。
參考文檔:[http://tomcat.apache.org/tomcat-5.5-doc/servletapi/index.html](http://tomcat.apache.org/tomcat-5.5-doc/servletapi/index.html)
?
### 常用方法
getRequestURL方法返回客戶端發出請求時的完整URL。
getRequestURI方法返回請求行中的資源名部分。
getQueryString?方法返回請求行中的參數部分(參數名+值)。
該函數可以獲取請求部分的數據?比如
http://localhost/web名?username=abc&pwd=123
request.getQueryString();?就會得到??username=abc&pwd=123
?
getRemoteAddr方法返回發出請求的客戶機的IP地址
getRemoteHost方法返回發出請求的客戶機的完整主機名
getRemotePort方法返回客戶機所使用的網絡端口號
客戶機的端口號是隨機選擇的,web服務器的端口號是一定的
getLocalPort方法返回web服務器所使用的網絡端口號
getLocalAddr方法返回WEB服務器的IP地址。
getLocalName方法返回WEB服務器的主機名
getMothod方法返回瀏覽器的提交方式
?
### URL(統一資源定位符)和URI(統一資源標識符)的區別
案例:
URL=http://localhost:8080/web1/Servlet7?完整的請求
Uri=/web1/Servlet7??web應用的名稱+資源的名稱
?
### 獲取用戶提交的內容(通過表單)
案例:
~~~
package com.pc;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyInfoForm extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<form action='/servletPro3/RegisterCl' method='post'><br/>");
out.println("<input type='hidden' value='abc' name='hidden1'/>");
out.println("用戶名:<input type='text' name='username'/><br/>");
out.println("密 碼:<input type='password' name='pwd'/><br/>");
out.println("性 別:<input type='radio' name='sex' value='男'/>男 <input type='radio' name='sex' value='女'/>女<br/>");
out.println("你的愛好:<input type='checkbox' name='hobby' value='音樂'>音樂 <input type='checkbox' name='hobby' value='體育'>體育 <input type='checkbox' name='hobby' value=\"旅游\">旅游<br/>");
out.println("所在城市:<select name='city'><option value='bj'>北京</option><option value='hn'>湖南</option></select><br/>");
out.println("你的介紹:<textarea cols='20' rows='10' name='intro' >請輸入介紹..</textarea><br/>");
out.println("提交照片:<input type='file' name='photo'><br/>");
//什么時候使用hidden傳輸數據 1.不希望用戶看到該數據 2. 不希望影響界面,同時使用該數據
out.println("<input type='submit' value='提交信息'/>");
out.println("</form>");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
~~~
接受信息的Servlet:
~~~
package com.pc;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class RegisterCl extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
String u=request.getParameter("username");
String p=request.getParameter("pwd");
String sex=request.getParameter("sex");
//如果接受復選框的內容,則使用getparameterValues
String [] hobbies=request.getParameterValues("hobby");
String city=request.getParameter("city");
String intro=request.getParameter("intro");
String hidden1=request.getParameter("hidden1");
out.println("用戶名="+u+"<br/>");
out.println("密 碼="+p+"<br/>");
out.println("性 別="+sex+"<br/>");
if(hobbies!=null){
for(int i=0;i<hobbies.length;i++){
out.println("愛好:"+hobbies[i]);
}
}else{
out.println("無愛好");
}
out.println("<br/>所在城市:"+city);
out.println("<br/>個人介紹:"+intro);
out.println("<br/>隱藏數據:"+hidden1);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
~~~
----------參考《韓順平.細說Servlet》