2014-11-04 90 views
1

裏面一個JSP頁面的文件系統路徑,我是確定文件系統上的頁當前路徑,例如:確定當前JSP

WEB-INF/jsp/currentPage.jsp 

我希望能夠給JSP:包括到另一個基於當前文件系統路徑的頁面,而不是用戶用來訪問該頁面的URL。

我希望能夠將相同的代碼複製/粘貼到許多JSP,並讓每個頁面都知道它的文件系統路徑。

+0

這似乎是非常不好的做法。不要超出應用範圍。 – 2014-11-04 16:14:14

回答

0

答案是可用的here。基本上,您可以在this.getClass()上使用正則表達式來確定完整路徑。

在JSP:

<jsp:include page='<%= SkinController.getSkinPath(this.getClass()) %>' /> 

而且在SkinController.java

public static String getSkinPath(Class<?> cls){ 
    Pattern pattern = Pattern.compile("org.*INF.?.(jsp|tiles).(.*?)_jsp"); 

    String name = cls.getName(); 

    Matcher matcher = pattern.matcher(name); 

    if(matcher.matches()){ 
     String type = matcher.group(1); 
     String path = matcher.group(2).replace(".", "/"); 

     //fullPath is the value we're looking for int he original question 
     String fullPath = type.concat("/").concat(path).concat(".jsp"); 

     return getSkinPath(fullPath); 
    }else{ 
     return ""; 
    } 

} 
0

爲了引用其他jsp頁面(以及JSP的其他實用程序方法),請使用JSTL庫。非常便利。您可以查看this page以瞭解如何使用它。

0

使用要求geturi方法:

String uri = request.getRequestURI(); 
String pageName = uri.substring(uri.lastIndexOf("/")+1); 
+0

這將返回到[servlet的根目錄]的路徑(http://stackoverflow.com/questions/12160639/what-does-mean-in-the-method-servletcontext-getrealpath),我想要的路徑當前的JSP頁面。 我希望能夠將相同的代碼複製/粘貼到許多JSP,並讓每個頁面都知道它的文件系統路徑。 – spaetzel 2014-11-04 16:18:46

+0

得到uri並解析它以知道你的jsp頁面。 – SMA 2014-11-04 16:20:49

+0

由於JSP包含在其他JSP中,因此不會執行此操作。我需要實際的文件系統路徑,而不是將它從請求URI中提取出來。 – spaetzel 2014-11-04 16:31:32