容器是 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();