在JSP页面内部,我要确定文件系统上页面的当前路径,例如:
WEB-INF/jsp/currentPage.jsp
我希望能够jsp:include到另一个基于当前文件系统路径的页面,而不是用户用来访问页面的URL。
我希望能够将相同的代码复制/粘贴到许多JSP中,并让每个页面都知道其文件系统路径。
答案 0 :(得分:0)
要引用其他jsp页面(以及JSP的其他实用程序方法),请使用JSTL库。非常便利。您可以查看this page以获取有关如何使用它的参考。
答案 1 :(得分:0)
根据要求使用geturi方法:
String uri = request.getRequestURI();
String pageName = uri.substring(uri.lastIndexOf("/")+1);
答案 2 :(得分: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 "";
}
}