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

原创 2016年08月30日 15:28:32

我的需求: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

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java opencsv--使用 Spring 的 PostConstruct机制,项目启动时,将CSV配置文件读取到内存 map 中

Java opencsv--使用 Spring 的 PostConstruct机制,项目启动时,将CSV配置文件读取到内存 map 中 一.studentConfig.csv 文...

若要调试此模块,请将其项目生成配置更改为“调试”模式。若要取消显示此消息,请禁用“启动时若没有用户代码则发出警告”调试器选项

在VS调试的时候出现如下错误:生成下面的模块时,启用了优化或没有调试信息: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NE...

Tomcat启动时项目重复加载,导致资源初始化两次的问题

最近在项目开发测试的时候,发现Tomcat启动时项目重复加载,导致资源初始化两次的问题  导致该问题的原因: 如下图:在Eclipse中将Server Locations设置为“Use T...

Java Web项目在Mac系统上启动时提示nodename nor servname provided的解决办法

今天在Mac系统上启动Java Web项目的时候,提示了java.net.UnknownHostException: MAC-20150101 nodename nor servname provi...

Tomcat启动时项目重复加载,导致资源初始化两次的问题

最近在项目开发测试的时候,发现Tomcat启动时项目重复加载,导致资源初始化两次的问题 导致该问题的原因:如下图:在Eclipse中将Server Locations设置为“Use Tomcat in...

mybatis(错误一) 项目启动时报“Result Maps collection already contains value forxxx”的解决方案

昨天用eclipse启动springmvc+mybatis的项目,报错了,信息如下: Result Maps collection already contains value for xyx.dsw...

Jetty多项目启动时的冲突问题

通过main启动多项目Jetty时碰到了lib冲突的问题,如下面这个异常Invocation of init method failed; nested exception is java.lang....

在web项目启动时,执行某个方法

Web容器启动后执行代码的几种方式 其执行顺序为: 4===>5===>1===>2===>3 即指定init-method的Bean开始执行 接着实现spring的B...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)