之前看过很多朋友在csdn上发帖问怎么这么设置网站资源的访问路径好。按照本文的思路。记得是思路,只要你看懂了思路也不局限于实现这个接口。 就可以很好的去解决项目的资源路径。比如在一个页面里这样访问了一个js文件,将来不管这个页面怎么移动目录都不需要管这个js访问路径对不对(除非这个js资源移动了位置)
转载请标明本文出处:实现ServletContextListener解决项目资源访问路径不统一的问题
1 自定义一个实现类 ContextPathListener 它实现了 ServletContextListener
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
* 在页面里直接受用 ${path}/xxx/xxx.jsp 这样的方式访问资源
* @author http://www.gbsou.com
*
*/
public class ContextPathListener implements ServletContextListener {
/*
* (non-Javadoc)
*
* @see javax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent)
*/
public void contextInitialized(ServletContextEvent sce) {
ServletContext sc = sce.getServletContext();
sc.setAttribute("path", getContextPath(sc));
}
/*
* (non-Javadoc)
*
* @see javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.ServletContextEvent)
*/
public void contextDestroyed(ServletContextEvent sce) {
ServletContext sc = sce.getServletContext();
sc.removeAttribute("path");
}
private String getContextPath(ServletContext sc) {
return sc.getContextPath();
}
}
2 在web.xml 配置成listener<listener>
<listener-class>
www.gbsou.com.listeners.ContextPathListener
</listener-class>
</listener>
3 这样的话 在项目启动时会去获取上下文路径并且以key为path保存到ServletContext 里4 我们在jsp页面里访问css之类的资源时只需要用EL表达式这样写,将来不管jsp移到哪个目录都没问题了:<head>
<link href="${path }/css/style.css" rel="stylesheet" type="text/css" />
</head>
转载请标明本文出处:实现ServletContextListener解决项目资源访问路径不统一的问题
1 自定义一个实现类 ContextPathListener 它实现了 ServletContextListener
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
* 在页面里直接受用 ${path}/xxx/xxx.jsp 这样的方式访问资源
* @author http://www.gbsou.com
*
*/
public class ContextPathListener implements ServletContextListener {
/*
* (non-Javadoc)
*
* @see javax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent)
*/
public void contextInitialized(ServletContextEvent sce) {
ServletContext sc = sce.getServletContext();
sc.setAttribute("path", getContextPath(sc));
}
/*
* (non-Javadoc)
*
* @see javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.ServletContextEvent)
*/
public void contextDestroyed(ServletContextEvent sce) {
ServletContext sc = sce.getServletContext();
sc.removeAttribute("path");
}
private String getContextPath(ServletContext sc) {
return sc.getContextPath();
}
}
2 在web.xml 配置成listener<listener>
<listener-class>
www.gbsou.com.listeners.ContextPathListener
</listener-class>
</listener>
3 这样的话 在项目启动时会去获取上下文路径并且以key为path保存到ServletContext 里4 我们在jsp页面里访问css之类的资源时只需要用EL表达式这样写,将来不管jsp移到哪个目录都没问题了:<head>
<link href="${path }/css/style.css" rel="stylesheet" type="text/css" />
</head>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货