例如我在很多jsp页面都会引用到css,对于css的路径因为在开发时和发布时是不一样的,所以我想把它们的路径配置成变量,在一处统一管理,就像下面这样:
在某处定义一个类似properties的文件,文件内容如:
csspath = myapp/css/
然后在jsp页面中就可以直接这样使用:
请问如何可以达到这样的效果,求具体方法
你可以讲这个参数配置在property文件里,然后利用spring启动的时候加载property文件,然后再你的一个登录页面的controller中或是一个公共controller中利用@Value注入,之后store到session中前台就可以直接利用jstl获取了。
ServerContext.setAttribute("csspath","myapp/css/");
diaozhanming 说的很明显了,但如果csspath = myapp/css/ 这个只有一个的话,就直接写在web.xml里面也可以的。
看看你的应用构建脚本吧。maven、ant你都可以设定开发、测试、生产等不同的构建方式。比如你测试的css可以放到/test/css里面,发布的可以用/release/css里面。
你需要测试的时候就把/test/css拷贝到war里面,发布的时候就把/release/css拷贝到war里面。而在war里面都可以只叫css。这样就不用担心搞不清楚了。
用spring MVC的ThemeResolver应该是可以实现的,不过我没尝试用
我的思路是:
(1)写到配置文件里。
basePath=/blog/
(2)spring注入到一个自己的属性类中。
<!--spring的配置文件-->
classpath:conf.properties
<!--spring的配置文件-->
(3)创建一个拦截器,在拦截器中,将这个参数放入session。
<!--spring的配置文件-->
mvc:interceptors
<!-- 每个页面都要走的一个拦截器 -->
mvc:interceptor
/mvc:interceptor
/mvc:interceptors
/*BaseInterceptor类中部分代码*/
@Resource
private MyConfig myConfig;
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
session.setAttribute("basePath", myConfig.getBasePath()); // 每个页面,都设置一下基础路径
return true;
}
(4)就可以在jstl中自由使用了。