隨筆-3  評論-0  文章-4  trackbacks-0
            2006年5月19日
          用dwr實現在表單存儲的功能,dwr與spring的結合使用上遇上了些問題,先把應用步驟記錄下來吧:

          1.dwr.xml
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "
          http://www.getahead.ltd.uk/dwr/dwr10.dtd ">
          <dwr>
          ??? <allow>?????
          ??????? <create creator="spring" javascript="FormDataDwrUtil">???
          ?????? <param name="beanName" value="formDataDwrUtil"/> ???////配置成spring,會從spring中去找到這個bean
          ??????? </create>
          ?? </allow>?
          ??
          <signatures>
          ? <![CDATA[
          ? import java.util.Map;?
          ? ]]>
          </signatures>
          </dwr>

          2.applicationContext.xml 片段
          <bean id="formDataDwrUtil" class="com.odp.web.dwr.FormDataDwrUtil">
          ??<property name="formInstanceDao">
          ????? <ref bean="formInstanceDao"/>
          ??? </property>
          ?</bean>

          3.web.xml? 片段
          ?
          <servlet>
          ??????? <servlet-name>context</servlet-name>
          ??????? <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
          ??????? <load-on-startup>1</load-on-startup>
          ? </servlet>
          ? <servlet>
          ??????? <servlet-name>dwr-invoker</servlet-name>
          ??????? <display-name>DWR Servlet</display-name>
          ??????? <description>Direct Web Remoter Servlet</description>
          ??????? <servlet-class>uk.ltd.getahead.dwr.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>

          ?? 4.jsp引用
          <script type='text/javascript' src='<%=request.getContextPath()%>/dwr/interface/FormDataDwrUtil.js'></script>
          <script type='text/javascript' src='<%=request.getContextPath()%>/dwr/engine.js'></script>
          <script type='text/javascript' src='<%=request.getContextPath()%>/xx/js/dwr/util.js'></script>?
          <!--將包中js直接拿出來用了, 做了一些修改以滿足實際需求-->
          <script>
          ?? var formdata;
          ? function saveItem(){???
          ? ?DWRUtil.getMapValues(formdata);???? //將form表單中的數據組織成map賦給formdata
          ????FormDataDwrUtil.saveValues(aftersave, formdata);? ?? //調用java代碼存儲數據
          ? }?
          ? function aftersave(result){???????
          //回調方法,顯示保存結果
          ???if( result? != null ){
          ? ??parent.setInstanceId(""+result);
          ? ??document.getElementById("msg").innerHTML = "<font color='red' size='2px'>保存成功!</font>";
          ? ??document.getElementById("save").style.display = "none";
          ? ??//document.getElementById("print").style.display="block";
          ? ??//document.getElementById("printpreview").style.display="block";
          ? ?}else{
          ? ??document.getElementById("msg").innerHTML = "<font color='red' size='2px'>保存失敗!</font>";
          ? ?}
          ? }
          ??
          /**
          ?*? 根據參數找到指定的表單數據組織成map
          */
          ? function findItem(instanceId , tablename){??????????
          ??? DWRUtil.useLoadingMessage("loading.....");
          ? ?FormDataDwrUtil.getFormData(loadItem , instanceId , tablename);
          ? }
          /**
          *回調方法,將數據填充到表單中
          */
          ? function loadItem(pformdata){
          ??? formdata = pformdata;
          ? ?DWRUtil.setValues( pformdata );
          ?? }
          ?
          ok,能正常使用,正常保存數據,加載數據了.

          問題出現了,當我改變了應用中類,weblogic會自動重載,spring重新裝載數據、類,所有的東西都不受影響,dwr這里卻出了問題,錯誤如下:
          ???
          java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoade
          rListener registered?
          ??????? at org.springframework.web.servlet.support.RequestContextUtils.getWebApp
          licationContext(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletContext;)Lor
          g/springframework/web/context/WebApplicationContext;(RequestContextUtils.java:83
          )
          ??????? at uk.ltd.getahead.dwr.create.SpringCreator.getBeanFactory()Lorg/springf
          ramework/beans/factory/BeanFactory;(SpringCreator.java:174)
          ??????? at uk.ltd.getahead.dwr.create.SpringCreator.getInstance()Ljava/lang/Obje
          ct;(SpringCreator.java:131)
          ??????? at uk.ltd.getahead.dwr.create.SpringCreator.getType()Ljava/lang/Class;(S
          pringCreator.java:104)
          ??????? at uk.ltd.getahead.dwr.impl.DefaultInterfaceProcessor.handle(Ljavax/serv
          let/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V(DefaultIn
          terfaceProcessor.java:69)
          ??????? at uk.ltd.getahead.dwr.impl.DefaultProcessor.handle(Ljavax/servlet/http/
          HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V(DefaultProcessor.j
          ava:77)
          ??????? at uk.ltd.getahead.dwr.AbstractDWRServlet.doPost(Ljavax/servlet/http/Htt
          pServletRequest;Ljavax/servlet/http/HttpServletResponse;)V(AbstractDWRServlet.ja
          va:162)
          ??????? at uk.ltd.getahead.dwr.AbstractDWRServlet.doGet(Ljavax/servlet/http/Http
          ServletRequest;Ljavax/servlet/http/HttpServletResponse;)V(AbstractDWRServlet.jav
          a:149)
          ??????? at javax.servlet.http.HttpServlet.service(Ljavax/servlet/http/HttpServle
          tRequest;Ljavax/servlet/http/HttpServletResponse;)V(HttpServlet.java:740)
          ??????? at javax.servlet.http.HttpServlet.service(Ljavax/servlet/ServletRequest;
          Ljavax/servlet/ServletResponse;)V(HttpServlet.java:853)
          ??????? at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run
          ()Ljava/lang/Object;(ServletStubImpl.java:1072)
          ??????? at weblogic.servlet.internal.ServletStubImpl.invokeServlet(Ljavax/servle
          t/ServletRequest;Ljavax/servlet/ServletResponse;Lweblogic/servlet/internal/Filte
          rChainImpl;)V(ServletStubImpl.java:465)
          ??????? at weblogic.servlet.internal.TailFilter.doFilter(Ljavax/servlet/ServletR
          equest;Ljavax/servlet/ServletResponse;Ljavax/servlet/FilterChain;)V(TailFilter.j
          ava:28)
          ??????? at weblogic.servlet.internal.FilterChainImpl.doFilter(Ljavax/servlet/Ser
          vletRequest;Ljavax/servlet/ServletResponse;)V(FilterChainImpl.java:27)
          ??????? at com.matrixflow.client.RequestEncoderFilter.doFilter(Ljavax/servlet/Se
          rvletRequest;Ljavax/servlet/ServletResponse;Ljavax/servlet/FilterChain;)V(Reques
          tEncoderFilter.java:34)
          ??????? at weblogic.servlet.internal.FilterChainImpl.doFilter(Ljavax/servlet/Ser
          vletRequest;Ljavax/servlet/ServletResponse;)V(FilterChainImpl.java:27)
          ??????? at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio
          n.run()Ljava/lang/Object;(WebAppServletContext.java:6987)
          ??????? at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Lweblogic/se
          curity/subject/AbstractSubject;Ljava/security/PrivilegedAction;)Ljava/lang/Objec
          t;(AuthenticatedSubject.java:321)
          ??????? at weblogic.security.service.SecurityManager.runAs(Lweblogic/security/ac
          l/internal/AuthenticatedSubject;Lweblogic/security/acl/internal/AuthenticatedSub
          ject;Ljava/security/PrivilegedAction;)Ljava/lang/Object;(SecurityManager.java:12
          1)
          ??????? at weblogic.servlet.internal.WebAppServletContext.invokeServlet(Lweblogi
          c/servlet/internal/ServletRequestImpl;Lweblogic/servlet/internal/ServletResponse
          Impl;)V(WebAppServletContext.java:3892)
          ??????? at weblogic.servlet.internal.ServletRequestImpl.execute(Lweblogic/kernel
          /ExecuteThread;)V(ServletRequestImpl.java:2766)
          ??????? at weblogic.kernel.ExecuteThread.execute(Lweblogic/kernel/ExecuteRequest
          ;)V(ExecuteThread.java:224)
          ??????? at weblogic.kernel.ExecuteThread.run()V(ExecuteThread.java:183)
          ??????? at java.lang.Thread.startThreadFromVM(Ljava/lang/Thread;)V(Unknown Sourc
          e)
          >

          在web.xml? 片段里將下面這段改成Listener也不行,錯誤一樣
          ?
          <servlet>
          ??????? <servlet-name>context</servlet-name>
          ??????? <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
          ??????? <load-on-startup>1</load-on-startup>
          ? </servlet>


          現在的解決方法是: 重啟weblogic? 這肯定不是解決的問題的根本。 希望能找到問題所在.......
          ?
          posted @ 2006-06-16 17:51 簡易 閱讀(632) | 評論 (0)編輯 收藏
          ajax dwr(direct web remoting)框架簡介
          這個從JAVA到JavaScript的遠程功能方法給DWR的用戶帶來非常像傳統的RPC機制,就像RMI或者SOAP一樣,而且擁有運行在WEB上但是不需要瀏覽器插件的好處.
          它包含兩個主要的部分:允許JavaScript從WEB服務器上一個遵循了AJAX原則的Servlet(小應用程序)中獲取數據.另外一方面一個JavaScript庫可以幫助網站開發人員輕松地利用獲取的數據來動態改變網頁的內容.

          http://flyfish81225.blogchina.com/4098286.html
          ?

          http://getahead.ltd.uk/dwr/getstarted
          http://getahead.ltd.uk/dwr/getstarted
          dwr.xml
          <!DOCTYPE dwr PUBLIC
              "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
              "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
          
          <dwr>
            <allow>
              <create creator="new" javascript="JDate">
                <param name="class" value="java.util.Date"/>
              </create>
              <create creator="new" javascript="Demo">
                <param name="class" value="your.java.Bean"/>
              </create>
            </allow>
          </dwr>
          defines what classes DWR can create and remote for use by Javascript
          Bean類必須都有一個默認的無參構造器
          DWR has a few restrictions:
          • Avoid reserved JavaScript words
          • Methods named after reserved words are automatically excluded. Most JavaScript reserved words are also Java reserved words, so you won't be having a method called "try()" anyway. However the most common gotcha is "delete()", which has special meaning from JavaScript but not Java.
          • Overloaded methods can be involved in a bit of a lottery as to which gets called, so avoid overloaded methods.



          ?

          posted @ 2006-05-19 17:22 簡易 閱讀(213) | 評論 (0)編輯 收藏
          主站蜘蛛池模板: 高州市| 昭苏县| 岳阳市| 新竹县| 镇坪县| 高淳县| 志丹县| 东至县| 孟津县| 贵州省| 安福县| 阿图什市| 缙云县| 石门县| 盐源县| 渝北区| 镇雄县| 本溪| 隆子县| 水富县| 云梦县| 郑州市| 大丰市| 维西| 施秉县| 延津县| 吴江市| 石阡县| 建湖县| 德江县| 宣化县| 富蕴县| 昌邑市| 嘉义县| 兴业县| 丹凤县| 泽州县| 土默特左旗| 建德市| 尚志市| 安徽省|