cuixx1985

          2008年11月18日 #

          axis處理自定義對象

          最近的一個項目又要用到webservice(axis),上次為了趕時間完成任務,簡單的找了些例子然后就這樣用了,還好項目里本來就有對象和xml之間轉換的接口,所以要傳的對象一律轉換成xml,然后傳字符串。
                  嘗試了N久才搞定了傳輸屬性不是基本數據類型的問題。簡單帖個代碼:

          1.server-config.wsdd

           <service name="sendUser" provider="java:RPC">
                 
          <!-- 發布特定的方法,多個方法用逗號隔開 -->
                
          <parameter name="allowedMethods" value="getUserByUserId"/>
                
          <parameter name="className" value="cn.gov.zjport.suzhou.webservice.GetUser4WebServiceImpl"/>
                
          <beanMapping languageSpecificType="java:cn.gov.zjport.suzhou.domain.CustomUser"  qname="ns:CustomUser" xmlns:ns="urn:GetUser4WebService"/>
                
          <beanMapping languageSpecificType="java:cn.gov.zjport.suzhou.domain.CustomRole"  qname="ns:CustomRole" xmlns:ns="urn:GetUser4WebService"/>
                
          <beanMapping languageSpecificType="java:cn.gov.zjport.suzhou.domain.CustomUserRole"  qname="ns:CustomUserRole" xmlns:ns="urn:GetUser4WebService"/>
           
          </service>
          2.客戶端測試代碼
          QName qn = new QName("urn:GetUser4WebService","CustomUser");
                       QName qn1 
          = new QName("urn:GetUser4WebService","CustomRole");
                       QName qn2 
          = new QName("urn:GetUser4WebService","CustomUserRole");
                       call.setTargetEndpointAddress(
          new URL("http://localhost:8080/suzhouPlatform/webServices/sendUser") ); 
                       call.setOperationName(
          new QName("http://localhost:8080/suzhouPlatform/webServices/sendUser","getUserByUserId"));
                       call.registerTypeMapping(CustomUser.
          class, qn,new BeanSerializerFactory(CustomUser.class, qn),new BeanDeserializerFactory(CustomUser.class, qn));
                       call.registerTypeMapping(CustomRole.
          class, qn1,new BeanSerializerFactory(CustomRole.class, qn1),new BeanDeserializerFactory(CustomRole.class, qn1));
                       call.registerTypeMapping(CustomUserRole.
          class, qn2,new BeanSerializerFactory(CustomUserRole.class, qn2),new BeanDeserializerFactory(CustomUserRole.class, qn2));
                       Object result 
          = call.invoke(new String[]{"admin"});
          大概代碼就這樣了^_^

          posted @ 2009-04-21 13:31 true_star 閱讀(698) | 評論 (0)編輯 收藏

          一個webwork過濾器的問題

          先貼代碼如下:
          1.SercurityFilter.java

          import java.io.IOException;

          import javax.servlet.Filter;
          import javax.servlet.FilterChain;
          import javax.servlet.FilterConfig;
          import javax.servlet.ServletException;
          import javax.servlet.ServletRequest;
          import javax.servlet.ServletResponse;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          public class SercurityFilter implements Filter{

              
          public void destroy() {
                  
              }


              
          public void doFilter(ServletRequest req, ServletResponse res,
                      FilterChain chain) 
          throws IOException, ServletException {
                  HttpServletRequest request 
          = (HttpServletRequest) req;
                  HttpServletResponse response 
          = (HttpServletResponse) res;
                  
                  String url = request.getRequestURI();
                     String name = (String) request.getSession().getAttribute("name");
                  
                    if((url.indexOf("index") == -1) && (null == name))
                  {
                      String path = request.getContextPath();
                      response.sendRedirect(path + "/index.jsp");
                  }

                  
          else
                      chain.doFilter(request, response);
              }


              
          public void init(FilterConfig arg0) throws ServletException {
                  
              }


          }


          然后問題是這樣的:
          我現在用戶沒登錄的時候,點擊一個超鏈接(bookAction.action)的時候,并沒有進入SercurityFilter這個里面定義的index.jsp頁面,而地址欄顯示的也是這個超鏈接的bookAction.action地址。
          而當我把bookAction對應的xwork.xml中的result里面添加 type="redirect",如下:
          <result name="browseCatalog" type="redirect">/jsp/browseCatalog.jsp</result>
          而現在我重新點擊這個超鏈接的時候卻能轉到index.jsp頁面,不知道這個是怎么回事?????

          但是重定向過去又不能保存action執行的結果,不能給browseCatalog.jsp這個頁面里的表單賦值,當然可以通過將內容放入session中進行賦值,但這樣應該不太好吧。


          web.xml代碼如下:
          <filter-mapping>
                  
          <filter-name>webwork</filter-name>
                  
          <url-pattern>/*</url-pattern>
              
          </filter-mapping>
              
              
          <filter-mapping>
                  
          <filter-name>sercurityFilter</filter-name>
                  
          <url-pattern>/jsp/*</url-pattern>
              </filter-mapping>
              



          今天晚上又做了下簡單的驗證,不知道為什么,不管我web.xml里面設置/*還是*.action,瀏覽器輸入*.action地址或者提交表單的時候都進不了這個filter里面去。而web.xml里面設置/*時,只要我輸入*.jsp都會直接轉到index.jsp頁面,難道是哪里配置錯了。。。還是????



          posted @ 2008-11-19 16:25 true_star 閱讀(1309) | 評論 (4)編輯 收藏

          一個關于Jquery的問題

          今天用jquery萬能方法$()的時候,發現點小問題:
          頁面表單如下
          <input type="text" id="user.userid"  name="user.userid"/>

          JS中用$("#user.userid").val()這個方法的時候一直取不到這個節點的值,搞了半天沒反應,firebug一直報未定義的錯誤

          后來將表單修改了下,id="userid"
          然后用$("#userid").val()就能取到這個值

          ????????????還沒搞清楚這個是什么原因。

          posted @ 2008-11-18 11:33 true_star 閱讀(1739) | 評論 (8)編輯 收藏

          主站蜘蛛池模板: 佛学| 玉门市| 长乐市| 吴堡县| 时尚| 临潭县| 麻江县| 宁国市| 马关县| 招远市| 南江县| 莲花县| 宣恩县| 平顶山市| 兰坪| 睢宁县| 泰宁县| 灌云县| 上饶市| 闵行区| 栖霞市| 克山县| 喀什市| 金塔县| 平乐县| 武城县| 娄烦县| 马公市| 綦江县| 额济纳旗| 永年县| 新蔡县| 内丘县| 梁山县| 岫岩| 临邑县| 云龙县| 西乌| 林口县| 长沙市| 荔波县|