Request對象詳解

HttpServletRequest
request.getRemoteAddr()//獲取遠程IP地址

HttpServletResponse
response.setContentType("text/html;charset=gbk")//設置發送方式和字符集
response.getWriter();//獲取輸出對象,構造PrintWriter對象
返回響應
利用:
1) PrintWriter out = response.getWriter // 用於返回文本數據給客戶端
2) ServletOutputStream out = response.getOutputStream // 用於返回二進制數據給客戶端

Servlet中從request獲得參數的方法:
String getParameter(String);
有此參數但無值返回"";
無此參數則返回:null
String[] getParameterValues(String);
Map getParameterMap();
Enumeration getParameterNames();獲得的是參數的名字,需要用名字再去獲得參數的值
1)請闡述什麼是ServletContext?
一種servlet服務的上下文,每一個servlet實例都對應在一個web application中,都屬於這個上下文,
即爲這個servletContext.
在一個servlet服務中,通過getServletContext()方法,獲得上下文;
2) 如何在一個Servlet中調用另外一個Servlet;如何在兩個Servlet之間傳遞數據
getServletContext().getRequestDispatcher("/xxxx/xxxx").forward(request,response);
request.setAttribute("xxxx",xxxx);------>requeset.getAttribute("xxxx");

Servlet中的方法:
init(ServletConfig);//初始化Servlet用
init中有異常則servlet直接被回收,無異常則繼續調用service()方法
覆蓋父類init(ServletConfig)可能會出錯(因爲父類函數會對config做保存處理,以便以後使用),可以調用super(config)解決
service(request,response);
//具體會調用HttpServlet的doGet,doPost(程序員在具體的servlet程序中覆蓋了)方法實現功能,
destory();//銷燬servlet實例的時候調用
Servlet生命週期:
裝載,init(),service(),destory()
Servlet中進行頁面轉發:
getServletContext().getRequestDispatcher("/user/user_list.jsp").forward(request, response);
或者:
response.sendRedirect(request.getContextPath() + "/find.do");

Request中getContextPath、getServletPath、getRequestURI、request.getRealPath的區別//轉載
假定你的web application 名稱爲news,你在瀏覽器中輸入請求路徑:
http://localhost:8080/news/main/list.jsp
則執行下面向行代碼後打印出如下結果:
1、 System.out.println(request.getContextPath());
打印結果:/news
2、System.out.println(request.getServletPath());
打印結果:/main/list.jsp
3、 System.out.println(request.getRequestURI());
打印結果:/news/main/list.jsp
4、 System.out.println(request.getRealPath("/"));
打印結果:F:\Tomcat 6.0\webapps\news\test

///////////////////////////////////////request詳解
1) getParameter(String name) 一般用它讀取表單中參數
(2) getProtocol() 獲取客戶端向服務器端傳送數據所依據的協議名稱。
(3)getRemoteAddr() 獲取客戶端的IP地址。
(4)getRemoteHost() 獲取客戶端的名字。
(5)getServerName() 獲取服務器的名字。
(6)getServerPort() 獲取服務器的端口號。
(7)getHeader()獲取客戶端的瀏覽器類型。
1 object getAttribute(String name) 返回指定屬性的屬性值
2 Enumeration getAttributeNames() 返回所有可用屬性名的枚舉
3 String getCharacterEncoding() 返回字符編碼方式
4 int getContentLength() 返回請求體的長度(以字節數)
5 String getContentType() 得到請求體的MIME類型
6 ServletInputStream getInputStream() 得到請求體中一行的二進制流
7 String getParameter(String name) 返回name指定參數的參數值
8 Enumeration getParameterNames() 返回可用參數名的枚舉
9 String[] getParameterValues(String name) 返回包含參數name的所有值的數組
10 String getProtocol() 返回請求用的協議類型及版本號
11 String getScheme() 返回請求用的計劃名,如:http.https及ftp等
12 String getServerName() 返回接受請求的服務器主機名
13 int getServerPort() 返回服務器接受此請求所用的端口號
14 BufferedReader getReader() 返回解碼過了的請求體
15 String getRemoteAddr() 返回發送此請求的客戶端IP地址
16 String getRemoteHost() 返回發送此請求的客戶端主機名
17 void setAttribute(String key,Object obj) 設置屬性的屬性值
18 String getRealPath(String path) 返回一虛擬路徑的真實路徑


<%@page contentType="text/html; charset=GBK"%>
<html>
<head>
<title>getRequest</title>
</head>
<body>
<%
out.println("Protocol: " + request.getProtocol() + "<br>");
out.println("Scheme: " + request.getScheme() + "<br>");
out.println("Server Name: " + request.getServerName() + "<br>");
out.println("Server Port: " + request.getServerPort() + "<br>");
out.println("Protocol: " + request.getProtocol() + "<br>");
out.println("Server Info: " + getServletConfig().getServletContext().getServerInfo() + "<br>");
out.println("Remote Addr: " + request.getRemoteAddr() + "<br>");
out.println("Remote Host: " + request.getRemoteHost() + "<br>");
out.println("Character Encoding: " + request.getCharacterEncoding() + "<br>");
out.println("Content Length: " + request.getContentLength() + "<br>");
out.println("Content Type: " + request.getContentType() + "<br>");
out.println("Auth Type: " + request.getAuthType() + "<br>");
out.println("HTTP Method: " + request.getMethod() + "<br>");
out.println("Path Info: " + request.getPathInfo() + "<br>");
out.println("Path Trans: " + request.getPathTranslated() + "<br>");
out.println("Query String: " + request.getQueryString() + "<br>");
out.println("Remote User: " + request.getRemoteUser() + "<br>");
out.println("Session Id: " + request.getRequestedSessionId() + "<br>");
out.println("Request URI: " + request.getRequestURI() + "<br>");
out.println("Servlet Path: " + request.getServletPath() + "<br>");
out.println("Accept: " + request.getHeader("Accept") + "<br>");
out.println("Host: " + request.getHeader("Host") + "<br>");
out.println("Referer : " + request.getHeader("Referer") + "<br>");
out.println("Accept-Language : " + request.getHeader("Accept-Language") + "<br>");
out.println("Accept-Encoding : " + request.getHeader("Accept-Encoding") + "<br>");
out.println("User-Agent : " + request.getHeader("User-Agent") + "<br>");
out.println("Connection : " + request.getHeader("Connection") + "<br>");
out.println("Cookie : " + request.getHeader("Cookie") + "<br>");
out.println("Created : " + session.getCreationTime() + "<br>");
out.println("LastAccessed : " + session.getLastAccessedTime() + "<br>");
%>
</body>
</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章