DWR學(xué)習(xí)筆記(四)
js 2010-01-02 19:24:18 閱讀3 評(píng)論 字號(hào):大中小 訂閱
五.DWR的整合(Servlet、Spring、Jsf、Struts、Hibernate、Webwork、Weblogic或Pageflow、Acegi)
1.DWR與Servlet整合:所謂與Servlet整合,對(duì)于DWR來(lái)說(shuō)就是在將要被DWR通過(guò)js調(diào)用的java類(lèi)的方法中使用Servlet的API罷了!
即可以使用HttpServletRequest、HttpServletResponse、HttpSession、ServletContext、ServletConfig等
為此DWR提供了兩個(gè)類(lèi):WebContext和WebContextFactory類(lèi)。
(1)WebContext類(lèi):通過(guò)該類(lèi)對(duì)象可以獲得HttpServletRequest、HttpServletResponse等對(duì)象。
(2)WebContextFactory類(lèi):用于產(chǎn)生WebContext類(lèi)的對(duì)象的工廠類(lèi),可以調(diào)用get()方法生成WebContext對(duì)象!
(3)例子:生成request對(duì)象,這樣就可以在java類(lèi)的方法中通過(guò)這樣調(diào)用來(lái)得到request對(duì)象!
WebContext webContext = WebContextFactory.get();
HttpServletRequest request = webContext.getHttpServletRequest();
**注意補(bǔ)充:除了通過(guò)上面的WebContext獲得Servlet API外,還有一個(gè)方法能在java類(lèi)的方法中使用Servlet API。
也就是說(shuō)在沒(méi)有寫(xiě)依賴(lài)于DWR的代碼時(shí),其實(shí)DWR調(diào)用java對(duì)象方法時(shí)可以自動(dòng)為我們的java類(lèi)的方法傳遞
一些參數(shù),例如HttpServletRequest,HttpServletResponse,HttpSession,
ServletContext或ServletConfig
(4)例子:在java類(lèi)的方法中指定Servlet API參數(shù),然后通過(guò)DWR應(yīng)用js來(lái)調(diào)用。
<1>java類(lèi)
public class Remote{
public void method(int param, ServletContext sc, String s){
.........
}
}
<2>通過(guò)js調(diào)用:不用為參數(shù)ServletContext參數(shù)賦值,因?yàn)镈WR會(huì)自動(dòng)填充參數(shù)值。
Remote.method(42, "test", callback);
2.DWR與Spring整合:意思就是讓Spring來(lái)創(chuàng)建DWR要調(diào)用的java類(lèi)的對(duì)象,并且完成注入也就是從Spring的Ioc容器中拿出對(duì)象。
Spring創(chuàng)建器:就是<create>的creator="spring"的時(shí)候,這個(gè)創(chuàng)造器會(huì)在spring的applicationContext.xml里查詢(xún)beans,
并且會(huì)使用Spring去創(chuàng)建它們。如果你已經(jīng)使用Spring,這個(gè)創(chuàng)造器會(huì)非常有用。否則將完全沒(méi)有任何用處。
<1>配置dwr.xml通過(guò)Spring創(chuàng)建器獲得java對(duì)象
<allow>
<create creator="spring" javascript="dwrTest">
<param name="beanName" value="Spring中bean的id值" />
</create>
</allow>
**說(shuō)明:<param>的name="beanName"對(duì)于Spring創(chuàng)建器來(lái)說(shuō)是固定的,value的值是Spring中bean的id值
<2>配置Spring的配置文件以便讓DWR能夠找到:有三種方法
A.與SSH整合同步在web.xml中配置,
就是把Spring的配置文件加載實(shí)例化后保存到ServletContext作用域,
供使用,這樣DWR就可以找到Spring的applicationContext.xml文件
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml,classpath*:applicationContext.xml
</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
**說(shuō)明:也可用Struts的ContextLoaderPlugIn來(lái)加載并保存Spring的配置文件
B.使用location參數(shù)(不推薦),在dwr.xml文件中配置
<allow>
<create creator="spring" javascript="Fred">
<param name="beanName" value="Spring中bean的id值" />
<param name="location" value="applicationContext.xml" />
</create>
</allow>
**說(shuō)明:name="location"是必須的,只要保證是"location"開(kāi)頭就行,
后邊value指定的是Spring配置文件的路徑名字
**注意:這個(gè)location是作為參數(shù)傳到Spring的ClassPathXmlApplicationContext的構(gòu)造方法中,
所以用這種方法必須把Spring配置文件放到CLASSPATH路徑下。
C.設(shè)置beenFactory目錄(不推薦):用時(shí)可以查看文檔。
3.DWR與Struts整合:意思就是DWR調(diào)用Struts中配置的ActionForm,
當(dāng)然也可以使用Action,但是可能會(huì)有點(diǎn)問(wèn)題,不推薦使用Action。
<1>配置dwr.xml文件
<allow>
<create creator="struts" javascript="ScriptName">
<param name="formBean" value="Struts中配置的ActionForm名字" />
</create>
</allow>
<2>注意:如果正在使用Struts創(chuàng)造器,那么你應(yīng)該確保Struts初始化在DWR之前。
你要保證你在web.xml里有一個(gè)<load-on-startup>的值,其中Struts的值比DWR設(shè)置地要低。
4.DWR與Jsf整合(了解):DWR包括兩個(gè)JSF的擴(kuò)展點(diǎn),一個(gè)創(chuàng)造器和一個(gè)ServletFilter。
<1>配置dwr.xml
<allow>
<create creator="jsf" javascript="ScriptName">
<param name="managedBeanName" value="JSF配置文件中bean的名字" />
<param name="class" value="your.class" />
</create>
</allow>
<2>要想讓上邊起作用,就是想讓DWR能調(diào)用JSF配置的bean那么還要配置一個(gè)Filter,在web.xml中
<filter>
<filter-name>DwrFacesFilter</filter-name>
<filter-class>uk.ltd.getahead.dwr.servlet.FacesExtensionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>DwrFacesFilter</filter-name>
<url-pattern>/dwr/*</url-pattern>
</filter-mapping>
5.DWR與Hiberante整合(了解):用時(shí)可以查看文檔
6.DWR與Webwork整合(了解):用時(shí)可以查看文檔
7.DWR與Weblogic或Pageflow整合(了解):用時(shí)可以查看文檔
8.DWR與Acegi整合(了解):用時(shí)可以查看文檔