HttpServletRequest和ServletRequest的區別以及HttpServletRequest物件方法的用法
@Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { // 過濾使用者請求,判斷是否登入 HttpServletRequest httpServletRequest = (HttpServletRequest)request; HttpServletResponse httpServletResponse = (HttpServletResponse)response; httpServletResponse .setContentType("text/html;charset=utf-8"); httpServletRequest.setCharacterEncoding("utf-8"); httpServletResponse.setCharacterEncoding("utf-8"); String username = (String)httpServletRequest.getSession().getAttribute("username"); if (username == null) { String path = httpServletRequest.getContextPath(); httpServletResponse.sendRedirect(path+"/index.jsp"); } filterChain.doFilter(httpServletRequest, httpServletResponse); }
1. 獲得客戶機資訊
getRequestURL方法返回客戶端發出請求時的完整URL。
getRequestURI方法返回請求行中的資源名部分。
getQueryString 方法返回請求行中的引數部分。
getRemoteAddr方法返回發出請求的客戶機的IP地址
getRemoteHost方法返回發出請求的客戶機的完整主機名
getRemotePort方法返回客戶機所使用的網路埠號
getLocalAddr方法返回WEB伺服器的IP地址。
getLocalName方法返回WEB伺服器的主機名
getMethod得到客戶機請求方式
2.獲得客戶機請求頭
getHeader(string name)方法
getHeaders(String name)方法
getHeaderNames方法
3. 獲得客戶機請求引數(客戶端提交的資料)
getParameter(name)方法
getParameterValues(String name)方法
getParameterNames方法
getParameterMap方法
例子程式:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("getRequestURL: "+request.getRequestURL()); System.out.println("getRequestURI: "+request.getRequestURI()); System.out.println("getQueryString: "+request.getQueryString()); System.out.println("getRemoteAddr: "+request.getRemoteAddr()); System.out.println("getRemoteHost: "+request.getRemoteHost()); System.out.println("getRemotePort: "+request.getRemotePort()); System.out.println("getRemoteUser: "+request.getRemoteUser()); System.out.println("getLocalAddr: "+request.getLocalAddr()); System.out.println("getLocalName: "+request.getLocalName()); System.out.println("getLocalPort: "+request.getLocalPort()); System.out.println("getMethod: "+request.getMethod()); System.out.println("-------request.getParamterMap()-------"); //得到請求的引數Map,注意map的value是String陣列型別 Map map = request.getParameterMap(); Set<String> keySet = map.keySet(); for (String key : keySet) { String[] values = (String[]) map.get(key); for (String value : values) { System.out.println(key+"="+value); } } System.out.println("--------request.getHeader()--------"); //得到請求頭的name集合 Enumeration<String> em = request.getHeaderNames(); while (em.hasMoreElements()) { String name = (String) em.nextElement(); String value = request.getHeader(name); System.out.println(name+"="+value); } }
瀏覽器上位址列:http://localhost:8080/RequestAndResponse/requestmethod?name=sunjob&password=123456&password=haha
控制檯輸出:
getRequestURL: http://localhost:8080/RequestAndResponse/requestmethod
getRequestURI: /RequestAndResponse/requestmethod
getQueryString: name=sunjob&password=123456&password=haha
getRemoteAddr: 127.0.0.1
getRemoteHost: 127.0.0.1
getRemotePort: 2374
getRemoteUser: null
getLocalAddr: 127.0.0.1
getLocalName: localhost
getLocalPort: 8080
getMethod: GET
-------request.getParamterMap()-------
name=sunjob
password=123456
password=haha
--------request.getHeader()--------
host=localhost:8080
user-agent=Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20100101 Firefox/17.0
accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
accept-language=zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3
accept-encoding=gzip, deflate
connection=keep-alive
cache-control=max-age=0
相關推薦
HttpServletRequest和ServletRequest的區別以及HttpServletRequest物件方法的用法
@Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, Servl
HttpServletRequest和ServletRequest的區別以及HttpServletRequest對象方法的用法
地址欄 req Language == ram 瀏覽器 har exce cte HttpServletRequest和ServletRequest都是接口 HttpServletRequest繼承自ServletRequest HttpServletRequest
export ,export default 和 import 區別 以及用法
彈出 但是 clas 能夠 引用 port 模塊 返回值 兩個 首先要知道export,import ,export default是什麽 ES6模塊主要有兩個功能:export和import export用於對外輸出本模塊(一個文件可以理解為一個模塊)變量的接口 imp
HSSF、XSSF和SXSSF區別以及Excel導出優化
基本 per springmvc linu cell exce 功能 pch 臨時文件 之前有寫過運用POI的HSSF方式導出數據到Excel(見:springMVC中使用POI方式導出excel至客戶端、服務器實例),但這種方式當數據量大到一定程度時容易出現內存溢出等
python 字符串編碼 str和unicode 區別以及相互轉化 decode('utf-8') encode('utf-8')
encode unicode 字符串 code com bubuko src 區別 分享圖片 python 字符串編碼 str和unicode 區別以及相互轉化 decode('utf-8') encode('utf-8'
Mybatis中#{}和${}的區別以及對sql注入、預編譯、jdbcType的說明
#{}和${}都可以獲取map中的值或者pojo物件屬性的值; sql語句示例: select * from tbl_employee where id=${id} and last_name=#{lastName} Preparing: select * from tbl_employee
Vector和ArrayList區別以及Vector並非是絕對執行緒安全的
首先看這兩類都實現List介面,而List介面一共有三個實現類,分別是ArrayList、Vector和LinkedList。List用於存放多個元素,能夠維護元素的次序,並且允許元素的重複。3個具體實現類的相關區別如下:ArrayList是最常用的List實現類,內部是通過
mysql 中modify和change區別(以及使用modify修改欄位名稱報錯)
使用modify修改欄位報錯如下: mysql> alter table student modify name sname char(16);ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
sizeof和strlen區別以及使用情況分析
實際做開發專案中,如果有涉及到字元資料處理等情況,都會遇到資料長度的獲取。比如現在需要對a[50]陣列進行賦值1~50的指定資料,程式碼如下: char a[50]; for(i = 0 ; i <50 ; i++) { a[i]=i+1; }
MyBatis排序時使用order by 動態引數時需要注意,用$而不是#, #{}和${}的區別以及order by注入問題
ORDER BY ${columnName}這裡MyBatis不會修改或轉義字串。重要:接受從使用者輸出的內容並提供給語句中不變的字串,這樣做是不安全的。這會導致潛在的SQL注入攻擊,因此你不應該允許使用者輸入這些欄位,或者通常自行轉義並檢查。 #{}相當於jdbc中的
掛起和阻塞區別以及sleep和wait的區別
阻塞 VS 掛起 阻塞與掛起都是程序的狀態,但他們有一些相似之處,也有一些區別,下面先對他們進行概述,再進行比較 阻塞:正在執行的程序由於發生某時間(如I/O請求、申請緩衝區失敗等)暫時無法繼續執行。此時引起程序排程,OS把處理機分配給另一個就緒程序,而讓受阻程序處於暫停狀態,一般將這種狀態
StringBuilder和StringBuffer區別以及原理
區別 其實StringBuilder和StringBuffer用法都是一樣,幾乎沒啥區別,我比較常用StringBuilder。但是說它們之間到底有沒有區別,那肯定是有的。StringBuffer的大多數方法都是用synchronized 修飾的,所以St
Java中ArrayList和LinkedList區別以及時間複雜度與空間複雜度
Java中ArrayList和LinkedList區別以及時間複雜度與空間複雜度? 一.時間複雜度 二.空間複雜度 三.總結 一般大家都知道ArrayList和LinkedList的大致區別: 1.ArrayList是實現了基於動態陣
mybatis的#{}和${}的區別以及order by注入問題
由於不想註冊,轉載以上地址的文章。在此感謝此位網友分享。 前言略,直奔主題.. #{}相當於jdbc中的preparedstatement ${}是輸出變數的值 你可能說不明所以,不要緊我們看2段程式碼: String sql = "select * from a
mybatis的#{}和${}的區別以及order by注入問題(轉錄)
原文連結:http://www.cnblogs.com/chyu/p/4389701.html 前言略,直奔主題.. #{}相當於jdbc中的preparedstatement ${}是輸出變數的值 你可能說不明所以,不要緊我們看2段程式碼: String
shell中反引號和$()的區別以及eval命令
反引號和$()的區別 反引號和$()都是shell指令碼中用來進行命令代換的命令,命令代換就是執行一個命令將其結果交給一個變數。 echo ‘echo \\ ’ //反引號
classpath 和 classpath* 區別以及如何覆蓋在配置檔案中的Bean ID
寫spring的程式碼到現在,一直都很習慣性的拷貝web.xml中的內容,沒怎麼在意裡面的內容,最近認真研究了下,很多東西都不是很理解,特別是classpath和classpath*的區別,研究了許久才搞明白,記錄下備忘。 classpath 和 classpath* 區別: classpath:只會到你
getClass()和getClassLoader()區別 以及ClassLoader詳解及用途(檔案載入,類載入)
1.1 幾個相關概念ClassLoader負責載入系統的所有Resources(Class,檔案,來自網路的位元組流等),通過ClassLoader從而將資源載入JVM 每個class都有一個reference,指向自己的ClassLoader。Class.getClassLoader() arra
C-sizeof和strlen區別,以及sizeof如何計算結構體大小
struct alt inf 編譯 style img com 大小 運行 sizeof和strlen區別 sizeof是關鍵字,在編譯時就能計算出值,可以計算任何類型 strlen是函數,只有在運行時才能去計算,且只能計算字符型的. 對於數組時,strlen
export ,export default 和 import 區別以及用法
默認 函數 根據 pre 可用 返回 大括號 能夠 返回值 首先要知道export,import ,export default是什麽 ES6模塊主要有兩個功能:export和importexport用於對外輸出本模塊(一個文件可以理解為一個模塊)變量的接口import用