Spring与DWR整合

    技术2022-05-20  55

    Spring与DWR整合的价值在于DWR使用的BO全部交给Spring管理,从而充分利用Spring强大的IoC和AOP特性。1. 添加dwr.jar到WEB-INF/lib下,并在web.xml中添加对DWR的加载代码 

    <servlet>        <servlet-name>dwr-invoker</servlet-name>    <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>        <init-param>              <param-name>debug</param-name>              <param-value>true</param-value>          </init-param>    </servlet>    <servlet-mapping>         <servlet-name>dwr-invoker</servlet-name>         <url-pattern>/dwr/*</url-pattern>    </servlet-mapping>   

    2. 在DWR中加载Spring配置文件,有三种方式:

       1) 【最佳方案】使用org.springframework.web.context.ContextLoaderListener,在WEB-INF/web.xml 中做如下配置:

    <context-param>          <param-name>contextConfigLocation</param-name>          <param-value>/WEB-INF/classes/applicationContext.xml</param-value>    </context-param>    <listener>    <listener-class>    org.springframework.web.context.ContextLoaderListener    </listener-class>    </listener>   

       2) 在dwr.xml中指定使用哪些bean,你可以使用location*参数。你可以指定任意多个文件,只要参数以location开始并且唯一即可。例 如:location-1, location-2。这些location被用做Spring的ClassPathXmlApplicationContext的参数:

    <create creator="spring" javascript="Fred">        <param name="beanName" value="userBO" />        <param name="location" value="beans.xml"/>    </create>   

       注意:其中beans.xml默认是读/WEB-INF/classes里的   3) 使用DWR API里的SpringCreator类中的setOverrideBeanFactory方法来定义beans.xml的位置 

    3. 在WEB-INF下添加dwr.xml配置文件,用来配置所需要暴露在前端页面的业务逻辑类。

    <allow>         <convert converter="bean" match="cn.qdqn.ssh.bo.UserBO" />         <create creator="spring" javascript="userBO">                <param name="beanName" value="userBO" />         </create>    </allow>   

    4. 在前端页面中使用DWR

    <script type='text/javascript' src='/SSH/dwr/engine.js'></script>    <script type='text/javascript' src='/SSH/dwr/util.js'></script>    <script type='text/javascript' src='/SSH/dwr/interface/userBO.js'></script>    <script type="text/javascript" language="javascript">                function checkUserName(){                    var userName=document.getElementsByName("name")[0].value;                    userBO.isNotExists(userName,callback);                    function callback(isNotExist){                        if(isNotExist){                            alert("可以使用");                        }else{                            alert("该用户已经被注册!");                        }                    }                }    </script>    …………    <html:button property="check" value="Check"onclick="checkUserName()"/>   


    最新回复(0)