ialand
ialand
2013-01-03 16:48
浏览 409
已采纳

spring3 mvc如何配置jsp页面中使用的全局变量

例如我在很多jsp页面都会引用到css,对于css的路径因为在开发时和发布时是不一样的,所以我想把它们的路径配置成变量,在一处统一管理,就像下面这样:
在某处定义一个类似properties的文件,文件内容如:
csspath = myapp/css/
然后在jsp页面中就可以直接这样使用:

请问如何可以达到这样的效果,求具体方法

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • diaozhanming
    diaozhanming 2013-01-03 20:38
    已采纳

    你可以讲这个参数配置在property文件里,然后利用spring启动的时候加载property文件,然后再你的一个登录页面的controller中或是一个公共controller中利用@Value注入,之后store到session中前台就可以直接利用jstl获取了。

    点赞 评论
  • mn960mn
    西夏一品堂 2013-01-04 12:28

    ServerContext.setAttribute("csspath","myapp/css/");

    点赞 评论
  • wanglong1615
    wanglong1615 2013-01-04 13:43

    diaozhanming 说的很明显了,但如果csspath = myapp/css/ 这个只有一个的话,就直接写在web.xml里面也可以的。

    点赞 评论
  • iteye_12540
    iteye_12540 2013-01-04 17:44

    看看你的应用构建脚本吧。maven、ant你都可以设定开发、测试、生产等不同的构建方式。比如你测试的css可以放到/test/css里面,发布的可以用/release/css里面。
    你需要测试的时候就把/test/css拷贝到war里面,发布的时候就把/release/css拷贝到war里面。而在war里面都可以只叫css。这样就不用担心搞不清楚了。

    点赞 评论
  • weixin_42509558
    weixin_42509558 2013-01-05 13:36

    用spring MVC的ThemeResolver应该是可以实现的,不过我没尝试用

    点赞 评论
  • weixin_42645300
    slowoo_com 2016-03-08 11:19

    我的思路是:
    (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中自由使用了。

    点赞 评论

相关推荐