2012-07-30 49 views
1

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

+0

检查我的答案。看看它是否有帮助。 :) – HashimR 2012-07-30 06:09:23

回答

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

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

+0

接近答案。它将检索'/name/myPage.jsp?param = 7'。我正在尝试'myPage.jsp?param = 7'。 thanx – NaaN 2012-07-30 05:53:25

+0

oops。好 - String [] parts = uri.getPath()。split(“/”);然后零件[parts.length-1]就是你想要的路径。 – radai 2012-07-30 06:15:10

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()); 
}