从整个URL中提取jsp页面

时间:2012-07-30 05:22:53

标签: java jsp url

我正在使用request.getHeader("Referer")从我来到的地方获取上一页网址。但我在这里得到了例如http://hostname/name/myPage.jsp?param=7的完整网址。有没有办法从整个URL中提取myPage.jsp?param=7?或者我需要处理字符串?我只需要myPage.jsp?param=7

3 个答案:

答案 0 :(得分:2)

类URI - http://docs.oracle.com/javase/7/docs/api/java/net/URI.html 只需使用您拥有的字符串(http://hostname/name/myPage.jsp?param = 7)构建一个新的URI实例,然后就可以访问部分了。你想要的可能是getPath()+ getQuery()

答案 1 :(得分:2)

您可以使用此功能简单地重建URL。仅使用此功能所需的内容。

public static String getUrl(HttpServletRequest req) {
    String scheme = req.getScheme();             // http
    String serverName = req.getServerName();     // hostname.com
    int serverPort = req.getServerPort();        // 80
    String contextPath = req.getContextPath();   // /mywebapp
    String servletPath = req.getServletPath();   // /servlet/MyServlet
    String pathInfo = req.getPathInfo();         // /a/b;c=123
    String queryString = req.getQueryString();          // d=789

    // Reconstruct original requesting URL
    String url = scheme+"://"+serverName+":"+serverPort+contextPath+servletPath;
    if (pathInfo != null) {
        url += pathInfo;
    }
    if (queryString != null) {
        url += "?"+queryString;
    }
    return url;
}

或者如果此功能无法满足您的需要,那么您始终可以使用字符串操作:

public static String extractFileName(String path) {

    if (path == null) {
        return null;
    }
    String newpath = path.replace('\\', '/');
    int start = newpath.lastIndexOf("/");
    if (start == -1) {
        start = 0;
    } else {
        start = start + 1;
    }
    String pageName = newpath.substring(start, newpath.length());

    return pageName;
}

传入/sub/dir/path.html返回path.html

希望这会有所帮助。 :)

答案 2 :(得分:1)

Pattern p = Pattern.compile("[a-zA-Z]+.jsp.*");
Matcher m = p.matcher("http://hostname/name/myPage.jsp?param=7");
if(m.find())
{
     System.out.println(m.group());
}