struts2 中 怎么获取项目的 http url

容器是 tomcat, 我想在struts2的 action里 获取项目的 http url,比如 http://localhost:8080/myproject,不知如何得到?谢谢

引自:http://guozheng.iteye.com/blog/607012

从Request对象中可以获取各种路径信息,以下例子:
假设请求的页面是index.jsp,项目是WebDemo,则在index.jsp中获取有关request对象的各种路径信息如下
String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

String remoteAddress=request.getRemoteAddr();

String servletPath=request.getServletPath();

String realPath=request.getRealPath("/");

String remoteUser=request.getRemoteUser();

String requestURI=request.getRequestURI();

out.println("path:"+path+"
");

out.println("basePath:"+basePath+"
");

out.println("remoteAddr:"+remoteAddress+"
");

out.println("servletPath:"+servletPath+"
");

out.println("realPath:"+realPath+"
");

out.println("remoteUser:"+remoteUser+"
");

out.println("requestURI:"+requestURI+"
");

结果:
path:/WebDemo
basePath:http://localhost:8683/WebDemo/
remoteAddr:127.0.0.1
servletPath:/index.jsp
realPath:D:\apache-tomcat-6.0.13\webapps\WebDemo\
remoteUser:null
requestURI:/WebDemo/index.jsp

在Action中:
HttpServletRequest request = ServletActionContext.getRequest();
String url =request.getRequestURL();
在拦截器中:
public String intercept(ActionInvocation ai) throws Exception {

String url = ai.getProxy().getActionName()+"!"+ai.getProxy().getMethod();
.......
}

HttpServletRequest request = ServletActionContext.getRequest();
String url = request.getRequestURL().toString();

ServletActionContext是获取诸如Servlet的上下文的类,比如request,response等等。使用ServletActionContext.getRequest();获取request。

ActionContext 是Action的上下文,在里面也可以通过get方法获取request。
ActionContext ctx = ActionContext.getContext();

HttpServletRequest request=(HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);

String path = request.getContextPath();