确定当前JSP页面的文件系统路径

时间:2014-11-04 16:04:58

标签: java jsp tomcat

在JSP页面内部,我要确定文件系统上页面的当前路径,例如:

WEB-INF/jsp/currentPage.jsp

我希望能够jsp:include到另一个基于当前文件系统路径的页面,而不是用户用来访问页面的URL。

我希望能够将相同的代码复制/粘贴到许多JSP中,并让每个页面都知道其文件系统路径。

3 个答案:

答案 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 "";
    }

}