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 阅读(681) | 评论 (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 阅读(1288) | 评论 (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 阅读(1720) | 评论 (8)编辑 收藏