cas项目启动时读取properties配置项

我的需求:Cas登录要求根据域名的不同做不同的登录认证方式:
1. 域名为:aaa.com,则要求cas登录页用用户名密码的方式认证
2. 域名为:bbb.com,则要求cas登录页用动态密码的方式认证

issue 1:域名通过可配置的方式来控制

a)

在mycas.properties文件中配置:
domainName:aaa.com

b)

项目启动的时候,解析mycas.properties配置文件,获取domainName配置项,并放入上下文中,待casLoginView.jsp页面中读取该配置项以做不同的处理
这里,我用监听器的机制来实现。创建一个类实现ServletContextListener 接口,实现里面的contextInitialized和contextDestroyed方法。

public class WebContextListener implements ServletContextListener {

    public void contextDestroyed(ServletContextEvent servletContextEvent) {

    }

    public void contextInitialized(ServletContextEvent servletContextEvent) {
        try {
            Class clazz = this.getClass();
            String domainName = PropertyUtils.getValueByKey(clazz,
                    "xxx.properties", "domainName");
            servletContextEvent.getServletContext().setAttribute("domainName", domainName);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

解析读取properties配置文件,点击查看该文章
其中contextInitialized方法是项目在启动初始化的时候就会执行的方法,contextDestroyed是在消亡的时候执行的方法,这里我们需要把随项目启动时执行的代码放在contextInitialized方法中。
然后在web.xml中为这个监听器添加配置

<listener>
    <listener-class> com.master.listener.WebContextListener</listener-class>
</listener>

其中listenner-class配置的是上面定义的监听器类的路径,这样就就可以了,部署好项目,启动就可以执行contextInitialized里面的代码了。

c)

jsp页面中读取ServletContext中的数据,即,casLoginView.jsp页面

这里写图片描述

<div id="requestDomainName" name="<%=application.getAttribute("domainName")%>"></div>

我是通过jquery的方式来获取id为requestDomainName的name的方式来获得domainName的(略渣,有更好的方法么,求教)

if(domainName == $("#requestDomainName").attr("name")) {
…
}

参考:http://blog.inet198.cn/?cb2474600377/article/details/44592617

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值