如题,我只知道从request中可以获取,但是要从request中获取就必须要有请求。
我现在希望是在WEB应用服务器启动后,就把这个访问地址放到一个变量中(例如某个类的静态字段或者系统属性)。然后其他地方可以直接使用这个值。
String url = request.getScheme() + "://" + request.getServerName()
+ ":" + request.getServerPort()
+ request.getContextPath() + "/";
我现在希望是在WEB应用服务器启动后,就把这个访问地址放到一个变量中(例如某个类的静态字段或者系统属性)。然后其他地方可以直接使用这个值。
String url = request.getScheme() + "://" + request.getServerName()
+ ":" + request.getServerPort()
+ request.getContextPath() + "/";
<listener>
<listener-class></listener-class>
</listener>public void contextInitialized(ServletContextEvent event) {
ServletContext context = event.getServletContext();
//可以操作context
//context.getContextPath();
}
public class SysListener
extends HttpServlet
implements ServletContextListener { private Timer aTimer;
private ServletContext content; public SysListener() {
aTimer = new Timer();
} public void contextInitialized(ServletContextEvent sce) {
this.content = sce.getServletContext();
if(this.content != null){
//这里可以取得WebApp运行的绝对路径
Constants.WEBAPPPATH = this.content.getRealPath("/");
}
} public void contextDestroyed(ServletContextEvent sce) {
aTimer.cancel();
} }
//web.xml
<listener>
<listener-class>com.pushi.emms.system.SysListener</listener-class>
</listener>
可以通过使用两种办法解决
1。web.xml或属性文件中设置主机信息的变量,在系统启动的时候加载到静态变量中
2。在访问应用的时候从静态变量中取,如果取到的为空就从request中获取并设置到静态变量中
谢谢我也像你这样想过,如果要通过配置文件的话,那有很多方式都可以达到效果。
我是希望不通过手动配置来写死这个地址。