裏面一個JSP頁面的文件系統路徑,我是確定文件系統上的頁當前路徑,例如:確定當前JSP
WEB-INF/jsp/currentPage.jsp
我希望能夠給JSP:包括到另一個基於當前文件系統路徑的頁面,而不是用戶用來訪問該頁面的URL。
我希望能夠將相同的代碼複製/粘貼到許多JSP,並讓每個頁面都知道它的文件系統路徑。
裏面一個JSP頁面的文件系統路徑,我是確定文件系統上的頁當前路徑,例如:確定當前JSP
WEB-INF/jsp/currentPage.jsp
我希望能夠給JSP:包括到另一個基於當前文件系統路徑的頁面,而不是用戶用來訪問該頁面的URL。
我希望能夠將相同的代碼複製/粘貼到許多JSP,並讓每個頁面都知道它的文件系統路徑。
答案是可用的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 "";
}
}
爲了引用其他jsp頁面(以及JSP的其他實用程序方法),請使用JSTL庫。非常便利。您可以查看this page以瞭解如何使用它。
使用要求geturi方法:
String uri = request.getRequestURI();
String pageName = uri.substring(uri.lastIndexOf("/")+1);
這將返回到[servlet的根目錄]的路徑(http://stackoverflow.com/questions/12160639/what-does-mean-in-the-method-servletcontext-getrealpath),我想要的路徑當前的JSP頁面。 我希望能夠將相同的代碼複製/粘貼到許多JSP,並讓每個頁面都知道它的文件系統路徑。 – spaetzel 2014-11-04 16:18:46
得到uri並解析它以知道你的jsp頁面。 – SMA 2014-11-04 16:20:49
由於JSP包含在其他JSP中,因此不會執行此操作。我需要實際的文件系統路徑,而不是將它從請求URI中提取出來。 – spaetzel 2014-11-04 16:31:32
這似乎是非常不好的做法。不要超出應用範圍。 – 2014-11-04 16:14:14