您的位置:首页 > 其它

实现ServletContextListener解决项目资源访问路径不统一的问题

2012-03-13 14:40 465 查看
之前看过很多朋友在csdn上发帖问怎么这么设置网站资源的访问路径好。按照本文的思路。记得是思路,只要你看懂了思路也不局限于实现这个接口。 就可以很好的去解决项目的资源路径。比如在一个页面里这样访问了一个js文件,将来不管这个页面怎么移动目录都不需要管这个js访问路径对不对(除非这个js资源移动了位置)

转载请标明本文出处:http://www.gbsou.com/2010/04/07/2434.html

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>

转自:http://www.gbsou.com/2010/04/07/2434.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐