cuixx1985

          2008年11月19日 #

          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)編輯 收藏

          主站蜘蛛池模板: 永宁县| 同江市| 永善县| 安平县| 佳木斯市| 嘉义县| 博罗县| 绥德县| 桐庐县| 屏山县| 贺兰县| 革吉县| 台东县| 军事| 高雄县| 康定县| 柳州市| 思南县| 鹤岗市| 三门峡市| 麦盖提县| 崇文区| 电白县| 平顺县| 观塘区| 遂宁市| 珲春市| 安新县| 巴南区| 延边| 信丰县| 石屏县| 民和| 潢川县| 牟定县| 云龙县| 长白| 历史| 永仁县| 仁寿县| 贞丰县|