getContextPath、getServletPath、getRequestURI,getRealPath的區別

SecondDream_1017發表於2018-08-15

舉個例子

訪問網址:http://192.168.1.190:9080/0809/demo3

0809=web專案名

demo3=servlet的url-pattern

 

原出處:https://www.cnblogs.com/keyi/p/6232658.html

假定你的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("/")); 

      request.getRealPath("/")已經不建議使用。

getRealPath();

返回一個字串,包含一個給定虛擬路徑的真實路徑。

struts2中:

ServletContext ctx=ServletActionContext.getServletContext();

String path=ctx.getRealPath("/");
String path1=ctx.getRealPath("/files/view.jsp");

輸出:path為D:\Javasoftware\apache-tomcat-7.0.70\apache-tomcat-7.0.70\webapps\struts2-1\

         path1為D:\Javasoftware\apache-tomcat-7.0.70\apache-tomcat-7.0.70\webapps\struts2-1\files\view.jsp

\files\view.jsp這部分就是虛擬路徑

D:\Javasoftware\apache-tomcat-7.0.70\apache-tomcat-7.0.70\webapps\struts2-1\  為專案的絕對路徑

 servlet中:

 

private ServletConfig  config;

public void init(ServletConfig config) throws ServletException {
this.config=config;}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

ServletContext ctx=config.getServletContext();
String temp=ctx.getRealPath("/");
}


列印結果:F:\Tomcat 6.0\webapps\news\test 

 

注:

URI=contextPath+servletPath

相關文章