有時候,我們需要對請求路徑做處理,例如url重定向,或者為url追加參數,我們可以使用js在前端對請求路徑做處理, 也可以使用java在后端對請求路徑做處理。
-
java獲取請求路徑信息
- 開發javaweb項目時, 需要web容器, 例如tomcat是一個常用的javaweb容器, 該容器會為我們的servlet(假如沒有使用mvc框架, 如struts2、springmvc)提供一個HttpServletRequest對象, 通過訪問該對象, 我們可以獲取到請求路徑信息, 示例如下:
//測試的請求url, get方法 //"http://localhost:8080/struts2/user/login.action?userid=1000" //獲取請求方法 request.getMethod(); //返回"GET" //獲取請求協議 request.getScheme(); //返回"http" //獲取請求域名(IP地址); request.getServerName(); //返回"localhost" //獲取請求端口號 request.getServerPort(); //返回"8080" //獲取請求URL, 不包括請求參數 request.getRequestURL(); //返回"http://localhost:8080/struts2/user/login.action" //獲取請求URI, 也不包括請求參數, 相當於contextPath + servletPath request.getRequestURI(); //返回"/struts2/user/login.action" //獲取請求參數, 不帶問號"?" request.getQueryString(); //返回"userid=1000" //獲取請求協議 request.getProtocol(); //返回"HTTP/1.1" //獲取Web應用程序路徑 request.getContextPath(); //返回"/struts2" //獲取請求資源路徑 request.getServletPath(); //返回"/user/login.action"
root形式獲取:
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); String sessionId = RequestContextHolder.getRequestAttributes().getSessionId();//獲取Session HttpServletRequest request = attributes.getRequest(); //獲取HttpServletRequest String key = sessionId + "-" + request.getServletPath();//獲取ServletPath
-
js獲取請求路徑信息
-
js有個全局變量location,操作這個對象就等於操作瀏覽器的地址欄,下面我們觀察一下location對象可以獲取到什么url信息
//測試的請求url, get方法 //"http://localhost:8080/struts2/user/login.action?userid=1000#topic1" //獲取請求協議 location.protocol; //返回"http:" //獲取請求服務器域名(IP地址), location.hostname; //返回"localhost" //獲取請求服務器端口號 location.port; //返回"8080" //獲取請求服務器的域名(IP地址)和端口號 location.host; //返回"localhost:8080" //獲取請求資源名 location.pathname; //返回"/struts2/user/login.action" //獲取錨點 location.hash; //返回"#topic1" //獲取請求參數 location.search; //返回?userid=1000", 注意: 如果請求地址只有"?"后面卻沒有請求參數, 則返回空字符串 //返回整個url地址, 包含以上所有信息 location.href; //返回"http://localhost:8080/struts2/user/login.action#topic1?userid=1000#topic1"
原文參考:https://www.iteye.com/blog/lizhuquan0769-2230749
