我正在使用request.getHeader("Referer")
从我来的地方获取上一页 URL。但我在这里得到了完整的 URL,例如http://hostname/name/myPage.jsp?param=7
。有没有办法myPage.jsp?param=7
从整个 URL 中提取?还是我需要处理字符串?我只需要myPage.jsp?param=7
.
问问题
578 次
3 回答
2
类 URI - http://docs.oracle.com/javase/7/docs/api/java/net/URI.html 只需使用您拥有的字符串 (http://hostname/name/myPage.html) 构建一个新的 URI 实例。 jsp?param=7) 然后你就可以访问部件了。你想要的可能是 getPath()+getQuery()
于 2012-07-30T05:43:08.133 回答
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
希望这可以帮助。:)
于 2012-07-30T05:56:27.137 回答
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());
}
于 2012-07-30T06:11:07.270 回答