伯樂一看小編的這個博文的標題是不是覺得有些小,以點到面,知道了web中getContextPath()這種獲取路徑的方式,顯然其他的方式的是可以以此類推的。常說,工作學習找共同點嘛。
上一段我們也提高getContextPath()的含義,是jsp中獲取路徑的一種方式,返回當前頁面所在的應用的名字。知其然知其所以然,知道它大體上的含義,看看在項目中是如何使用的?
String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; <base href="<%=basePath%>">
在程序中我們一般這樣使用。說到了這里,我們可以看看request常用的方法:
request.getSchema(),返回的是當前連接使用的協議,一般應用返回的是http、SSL返回的是https;
request.getServerName(),返回當前頁面所在的服務器的名字;
request.getServerPort(),返回當前頁面所在的服務器使用的端口,80;
request.getContextPath(),返回當前頁面所在的應用的名字。
getContextPath()是jsp中獲取路徑的一種方式,那么獲取到結果是什么呢?jsp其他獲取路徑的方式是怎樣的呢?表示好奇,請聽分解:
以訪問的jsp為:http://localhost:8080/dmsd-itoo-exam-log-web/course/index.jsp,工程名為/dmsd-itoo-exam-log-web為例:
request.getContextPath(),得到工程名:/dmsd-itoo-exam-log-web;
request.getServletPath(),返回當前頁面所在目錄下全名稱:/course/index.jsp;
request.getRequestURL(),返回IE地址欄地址:http://localhost:8080/dmsd-itoo-exam-log-web/course/index.jsp;
request.getRequestURI() ,返回包含工程名的當前頁面全路徑:/dmsd-itoo-exam-log-web/course/index.jsp。
對jsp獲取當前應用的路徑方法和request常用方法有了基本的了解,下面后台通過request.getScheme()獲取當前頁面使用協議遇到的問題:request.getScheme()獲取到的確實http而不是https,與request.getRequestURL()拿到的一樣也是http。
這是為什么呢?
原來,nginx+tomcat部署web服務,tomcat接收到的請求是來自nginx的http請求。我想這也是上一博文中說到項目用https啟動請求不到頁面的原因吧。
