从HttpServletRequest中提取Context Path和其他URL信息

时间:2012-04-30 17:07:25

标签: java url servlets

我在localhost,端口8080上运行我的应用程序。基本网址为:http://localhost:8080/EMSApplication/otherparts ...

现在从HttpServletRequest我如何提取http://localhost:8080/EMSApplication部分?

目前我这样做:

String schema = request.getScheme();
String serverName = request.getServerName();
int serverPort = request.getServerPort();
String contextPath = request.getContextPath();
String path = schema + "://" + serverName + ":" + serverPort + contextPath;
System.out.println(path);

此处请求是HttpServletRequest

的实例

这个程序对吗?

有没有其他方法可以获取信息?

如果我托管我的申请并说网址为http://my.domain.com/EMSApplication/otherparts ...那么上述程序代码是否有效?


我找到的另一种方式:

String requestUrl = request.getRequestURL().toString();
String contextPath = request.getContextPath();
String path = requestUrl.substring(0, requestUrl.indexOf(contextPath) + contextPath.length());

我需要的地方:

HttpServletRequest request = (HttpServletRequest) getRequest().getContainerRequest();
String requestUrl = request.getRequestURL().toString();
String contextPath = request.getContextPath();
String path = requestUrl.substring(0, requestUrl.indexOf(contextPath) + contextPath.length());          
submitLink.add(new WebMarkupContainer("submitImage").add(new AttributeModifier("src", path + "/ASSETS/css/images/login-btn.png")));

我正在开发一个Wicket应用程序,我需要指定<img/>的src。

1 个答案:

答案 0 :(得分:2)

无论哪种方式都很好,但我更喜欢第一种方式。没有任何更直接的想法,虽然如果你解释了为什么你想要这个值,可能会有。