Spring LdapTemplate读取以及Freemark简单合成页面

客户近期频繁要求修改组织机构,维护部门苦不堪言。更新组织机构就要更新邮箱的通讯录,使用的应该是某流行的邮件系统,php的,版本挺老的,其中有个功能,在写收件人的时候输入的东西会autocomplate,这个东西维护部门需要维护一个超大的文件夹,如下图:一级目录是第一个字,二级目录是前两个字,三级目录是前三个字,以此类推,其中每个文件夹下包含一个result.php文件,内容为该级目录中所对应的全部人员。

那我需要做什么呢?对,帮助他们生成这个东西。缕了一下思路,需要用到ldap、freemark的知识。

Spring大家应该不陌生,这里ldap数据的读取,我选用的是Spring的ldapTemplate 1.3.1,配置如jdbcTemplate:

<bean id="contextSource"
    class="org.springframework.ldap.core.support.LdapContextSource">
    <property name="url" value="ldap://192.168.101.179:389"  />
    <property name="base" value=""  />
    <property name="userDn" value="cn=platoptuser,ou=内置帐号,ou=系统,o=北京XX局"  />
    <property name="password" value="111111"  />
</bean>
<bean id="ldapTemplate" class="org.springframework.ldap.core.LdapTemplate">
    <constructor-arg ref="contextSource"  />
</bean>

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/Java/

读取Ldap这块我遇到一个难点,读取出来人如何得到这个人属于哪个组织机构,网上搜索无果,通过查看包里的类找靠谱的方法,最后终于找到了ContextMapper,可以通过获取dn来取得组织机构

public List<Person> getAllPersonNames() {
    // 正则表达式,为获取组织机构
    String regEx_script = "ou=([^,]*)?";
    final Pattern p = Pattern.compile(regEx_script, Pattern.DOTALL | Pattern.CASE_INSENSITIVE);// 修改模式  

    @SuppressWarnings("unchecked")
    List<Person> persons = ldapTemplate.search("o=北京XX局", "(objectClass=Person)",
            new ContextMapper() {
                @Override
                public Object mapFromContext(Object arg0) {
                    DirContextAdapter adapter = (DirContextAdapter)arg0;
                    Attributes attrs = adapter.getAttributes();
                    Person bean = new Person();
                    // 取值
                    Attribute fullName = attrs.get("cn");
                    Attribute mail = attrs.get("mail");
                    Attribute title = attrs.get("title");
                    Name dn = adapter.getDn();
                    String org = "";
                    // 取组织机构
                    if(dn != null){
                        Matcher m = p.matcher(dn.toString());
                        MatchResult mr = null;
                        // 获取匹配
                        while (m.find()) {
                            mr = m.toMatchResult();
                            org = org + mr.group(1) + "/";
                        }
                    }
                    // 给对象赋值
                    try {
                        bean.setFullName(fullName == null ? "" : fullName.get().toString());
                        // ldap中有的邮箱有后缀有的没有
                        String mailStr = mail == null ? "" : mail.get().toString();  

                        bean.setMail(mailStr);
                        bean.setTitle(title == null ? "" : title.get().toString());
                        bean.setOrg(org.equals("") ? "" : org.substring(0, org.length() - 1));
                    } catch (NamingException e) {
                        e.printStackTrace();
                    }
                    return bean;
                }
            });
    return persons;
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索目录
, bean
, freemarker
, tostring
, null
, pattern
, 一个
autocomplate
spring ldaptemplate、spring boot freemark、springmvc freemark、freemark spring、ldaptemplate,以便于您获取更多的相关知识。

时间: 2024-08-01 15:39:09

Spring LdapTemplate读取以及Freemark简单合成页面的相关文章

xml加密-spring 在读取加密后的xml配置文件的时候,怎么spring先解密再读取

问题描述 spring 在读取加密后的xml配置文件的时候,怎么spring先解密再读取 小弟新手求各位大神帮帮忙======================= 解决方案 首先要把加密配置文件先单独解密成明文,然后把明文配置文件拷贝到项目的类路径下,修正spring的配置信息. 解密操作不能作为web工程的某个模块,因为spring的应用是先要加载配置的.所以这个解密步骤必须是独立.而且先进行的操作.

easyui-struts2+spring+mybatis框架。 进入一个页面时,同时访问三个url会报错。

问题描述 struts2+spring+mybatis框架. 进入一个页面时,同时访问三个url会报错. 解决方案 这个应该是mybatis查询出错吧. 参数集合里面已经包含了count参数? 解决方案二: 这个是sql语句写错了,你把报错中的sql语句粘出来放数据库执行一下看看会不会报错 解决方案三: 你在controller重新写两个方法针对你上面的请求,你在页面刷新之前同时对page.action进行了访问,还传入了不同的查询条件和参数导致的.注意一下的onBeforeLoad:

extjs-EXTJS2 Spring webwork 读取xls 文件数据 存入到数据库的问题

问题描述 EXTJS2 Spring webwork 读取xls 文件数据 存入到数据库的问题 现有一项目是前端使用EXTJS2 现在一功能更需要由前端读取xls文件中的数据 直接存入到数据库中.主要问题是 现在需要获取文件路径才能读取.但是火狐浏览器是不能 获取文件路径的.有没有不需要读取文件路径,就能读取文件数据的方法

想试着做一个简单的读取RSS新闻的页面

rss|页面|rss  在许多时候我们使用ASP+数据库进行网站编程的时候,会遇上读取某记录出来和另外一些变量进行运算的情况,如果取的记录数据为NULL值,那么可能会造成程序返回错误结果,如果每个读记录的语句后都加上判断语句,程序又显得拖沓,因此,我认为编写一个专用的函数对读取的记录进行自动或半自动识别是很好的办法.     根据VBscript的数据类型定义,结合利用VarType函数,构造以下自动处理函数InitdataType, 输入两个参数,要处理数据本身(theDate)和准备输出的数

小女子求教:spring aop读取自定义annotation值问题

问题描述 第一次发帖,不知道位置是否正确,见谅系统架构:struts2+spring+ibatis目标是想记录用户的一些操作信息,所以自定义了一个annotation选择方法需要记录的参数@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic@interfaceLog{publicStringdescription();publicintparamIndex()default0;//第几个参数

hibernate+Spring 无法读取实体对象属性

问题描述 实体类代码如下:public class Organization {private int id;private String name;private String sn;private String description;private Organization parent;private Set children;get和set省略}业务实现类://删除机构public void delete(int orgId) {Organization org =(Organizat

spring security 中,配置登录页面,登录页面的action一定要是j_spring_security_check吗?

问题描述 我自定义了一个登录页面,登录的action也是自己定义的,主要是去数据库验证用户名和密码是否正确.然后把当前用户存在session中.可发现Security 的http配置完后,拥有权限的用户并不能正确进入页面,都被拦截然后重定向到登录页面.因为初次使用security,有没高手给点意见,哪儿出了问题?截取配置片段:<http><form-login login-page="/demo/user/login" login-processing-url=&qu

spring mvc-SpringMVC返回的modelandview 在页面上怎么通过jqGrid展现出来

问题描述 SpringMVC返回的modelandview 在页面上怎么通过jqGrid展现出来 解决方案 model 对象会自动放入request域中,你需要EL表达式取出

jsp读取新闻内容到页面,没有空格,段落问题

问题描述 本人做的是小型新闻网站,一般我们看新闻时候,新闻内容都是段落清晰,并且有空格的,我的新闻内容是从数据库中读到页面来的,发现一个空格都没有,而且从头到尾是一段,不知道该怎么解决这个问题麻烦有经验的大虾指点一下. 解决方案 解决方案二:新闻编写用JAVA编辑器插件,FCEditor,还网上搜下,还有很多的解决方案三:用网页编辑器录入内容.什么效果都可以,例如字体颜色,格式啊.转换后存入数据库.取出来转换再输出.解决方案四:用编辑器能解决你的问题,当然你也可以在录入新闻的时候进行人工排版,自