开发者社区> 问答> 正文

你好,spring的全局变量问题

项目中有这样一个场景,mvc和aop有单独的配置文件。登陆用户只是对前台有反馈。后台没有记录当前用户的任何信息。使用AOP做用户日志时遇到麻烦了。我希望能拿到当前登陆用户的ID,当前登陆的IP。由于不清楚spring 的上下文管理。希望能有一个解决方案。谢谢。

展开
收起
a123456678 2016-03-19 09:44:26 2709 0
1 条回答
写回答
取消 提交回答
  • 我的思路是:
    (1)写到配置文件里。
    basePath=/blog/
    (2)spring注入到一个自己的属性类中。
    <!--spring的配置文件-->
    <bean id="beanConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location">
    <value>classpath:conf.properties</value>
    </property>
    </bean>
    <!--spring的配置文件-->
    <bean id="myConfig" class="com.slowoo.blog.config.MyConfig">   
       <property name="basePath" value="${basePath}" />
    </bean>
    (3)创建一个拦截器,在拦截器中,将这个参数放入session。
    <!--spring的配置文件-->
    <mvc:interceptors>  
    <!-- 每个页面都要走的一个拦截器 -->
    <mvc:interceptor>
       <mvc:mapping path="/**"/>
    <bean class="com.slowoo.blog.interceptor.BaseInterceptor"/>  
    </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中自由使用了。
    <img src="${basePath}/img/logo.jpg" />
    2019-07-17 19:07:19
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Boot 2.5开发实战 立即下载
Java Spring Boot开发实战系列课程【第15讲】:Spring Boot 2.0 API与Spring REST Docs实战 立即下载
低代码开发师(初级)实战教程 立即下载

相关实验场景

更多