`
king_tt
  • 浏览: 2258455 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

以webService为客户端获取List泛型结果集

阅读更多

 

首先搭建好webService,添加XFire1.2Core Libraries 和XFire1.2HTTP Client Libraries,连接上数据库,下例以oracle为数据库。

连接Oralce,连接类为DBConnection.java

package com.xtgd.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;


public class DBConnection {
	
	private String driver="oracle.jdbc.driver.OracleDriver";
	
	private String url="jdbc:oracle:thin:@localhost:1521:orcl";
	
	private String username="scott";
	
	private String pwd="tiger";
	
	private Connection conn=null;
	
	
	public Connection getConn(){
		try {
			Class.forName(driver);
			conn=DriverManager.getConnection(url,username,pwd);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return conn;
	}
	
	
	public void closeConn(ResultSet rs,PreparedStatement ps,Connection conn){
		try {
			if(rs!=null){
				rs.close();
			}
			if(rs!=null){
				rs.close();
			}
			if(rs!=null){
				rs.close();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	
		
		
	

}

 

写好UserDao方法 UserDao.java

 

package com.xtgd.test;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class UserDao
{
	DBConnection b = new DBConnection();

	private PreparedStatement pre = null;

	private ResultSet rs = null;

	private Connection conn = null;

	/*
	 * 全查询
	 */

	public List<TUser> getAll()
	{
		List<TUser> ar = new ArrayList<TUser>();
		try
		{
			String sql = "select * from t_user";
			conn = b.getConn();
			pre = conn.prepareStatement(sql);
			rs = pre.executeQuery();
			while (rs.next())
			{
				TUser user = new TUser();
				user.setUId(rs.getInt("u_id"));
				user.setUPersonid(rs.getString("u_personid"));
				user.setUPersonname(rs.getString("u_personname"));
				user.setUPassword(rs.getString("u_password"));
				user.setUTel(rs.getString("u_tel"));
				user.setUEmail(rs.getString("u_email"));
				user.setUState(rs.getInt("u_state"));
				user.setURemark(rs.getString("u_remark"));
				ar.add(user);
			}

		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			b.closeConn(rs, pre, conn);
		}
		return ar;
	}

	

}

 

实体类为TUser.entity

package com.xtgd.test;

import java.io.Serializable;

/**
 * TUser entity.
 * 
 * @author MyEclipse Persistence Tools
 */

public class TUser implements Serializable {

	// Fields

	private Integer UId;
	private String UPersonid;
	private String UPersonname;
	private String UPassword;
	private String UTel;
	private String UEmail;
	private int UState = 1;
	private String URemark;

	// Constructors

	/** default constructor */
	public TUser() {
	}

	/** full constructor */
	public TUser(String UPersonid, String UPersonname, String UPassword,
			String UTel, String UEmail, int UState, String URemark) {
		this.UPersonid = UPersonid;
		this.UPersonname = UPersonname;
		this.UPassword = UPassword;
		this.UTel = UTel;
		this.UEmail = UEmail;
		this.UState = UState;
		this.URemark = URemark;
	}

	// Property accessors

	public Integer getUId() {
		return this.UId;
	}

	public void setUId(Integer UId) {
		this.UId = UId;
	}

	public String getUPersonid() {
		return this.UPersonid;
	}

	public void setUPersonid(String UPersonid) {
		this.UPersonid = UPersonid;
	}

	public String getUPersonname() {
		return this.UPersonname;
	}

	public void setUPersonname(String UPersonname) {
		this.UPersonname = UPersonname;
	}

	public String getUPassword() {
		return this.UPassword;
	}

	public void setUPassword(String UPassword) {
		this.UPassword = UPassword;
	}

	public String getUTel() {
		return this.UTel;
	}

	public void setUTel(String UTel) {
		this.UTel = UTel;
	}

	public String getUEmail() {
		return this.UEmail;
	}

	public void setUEmail(String UEmail) {
		this.UEmail = UEmail;
	}

	public int getUState() {
		return UState;
	}

	public void setUState(int state) {
		UState = state;
	}

	public String getURemark() {
		return this.URemark;
	}

	public void setURemark(String URemark) {
		this.URemark = URemark;
	}

}


写好接口IUserService.java

package com.xtgd.test;

import java.util.List;
//Generated by MyEclipse

public interface IUserService {
		
	public List<TUser> getAll();
}

 

实现类UserServiceImpl.java

package com.xtgd.test;

import java.util.List;

//Generated by MyEclipse

public class UserServiceImpl implements IUserService {

	private UserDao dao = new UserDao();

	/***************************************************************************
	 * 查询所有
	 */
	public List<TUser> getAll(){
		return this.dao.getAll();
	}
}


在IUserService.java同级目录下添加IUserService.aegis.xml,命名规则为"接口名.aegis.xml"

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
        该文件用来描述IUsersService接口中getAll()方法返回值的类型
        该文件必须与IUsersService位于同一目录中,且该文件遵循如下命名规则
        webservice接口名.aegis.xml 如本文件IUsersService.aegis.xml
    -->

<mappings>
	<method name="getAll">
            <return-type componentType="#users"/>
    </method>
	 <!-- 映射getAll()方法返回值类型 -->
    <mapping>
        <component name="users" class="com.xtgd.test.TUser" componentType="com.xtgd.test.TUser"/>
    </mapping>
</mappings>

 

web.xml的配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <servlet>
    <servlet-name>XFireServlet</servlet-name>
    <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>XFireServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>
  
  <!-- 添加mapping -->
  <servlet-mapping>
  	<servlet-name>XFireServlet</servlet-name>
  	<url-pattern>/services/XFireServlet/*</url-pattern>
  </servlet-mapping>
  
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

 

services.xml的配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
	<service>
		<name>UserService</name>
		<serviceClass>com.xtgd.test.IUserService</serviceClass>
		<implementationClass>
			com.xtgd.test.UserServiceImpl
		</implementationClass>
		<style>wrapped</style>
		<use>literal</use>
		<scope>application</scope>
	</service>
</beans>

 

成功发布到tomcat上之后,下面开始测试,测试类为Test.java,注意导入正确的包!

package com.xtgd.test;

import java.util.List;
import com.xtgd.test.*;

import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;

public class Test {

	public static void main(String[] args) {
		// 构建service
		Service service = (Service) new ObjectServiceFactory()
				.create(IUserService.class);
		try {
			// 获得自定义webservice接口
			IUserService usersService = (IUserService) new XFireProxyFactory()
					.create(service,
							"http://localhost:8080/08_01_webservice/services/UserService");
			// 调用该webservice中定义的getUsers()方法
			List<TUser> list = usersService.getAll();
			// 输出list长度
			System.out.println(list.size());
			// 遍历list
			for (TUser users : list) {
				System.out.println("personid:" + users.getUPersonid()
						+ "\tpersonname:" + users.getUPersonname());
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

 




分享到:
评论

相关推荐

    webservice获取List案例

    5. **代码示例**:描述中提到“本代码可以直接运行,有注释”,这意味着可能有一个完整的Java项目,包含了一个WebService客户端和服务器端。客户端调用服务接口,服务器端返回一个包含泛型List的响应。代码注释将...

    Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用

    本实例中的`GetList`方法返回了一个`List&lt;string&gt;`类型的泛型集合,这意味着该方法返回的是一个字符串列表。 #### JSON和XML数据格式 在Web服务通信中,JSON和XML是最常用的数据格式。XML(可扩展标记语言)是一种...

    myEclipse6.0开发webservice_03.doc

    编写方法时,如果需要用到列表(如List、Map等),记得使用泛型,例如`List&lt;String&gt;`、`List&lt;UserInfo&gt;`、`Map, String&gt;`、`Map, UserInfo&gt;`。 7. **部署与测试** - 完成功能拓展后,无需额外配置,可以直接部署并...

    MyEclipse8.0GA下使用Xfire框架开发WebService实例

    - 注意:如果方法涉及到 List 或 Map 类型的参数,建议使用泛型。 ##### 7. 重新部署并测试 - 在 Tomcat 中重新部署项目。 - 通过浏览器访问 `...

    Flex调用webService

    例如,假设我们有一个返回List的WebService方法`getItems()`,可以这样处理结果: ```actionscript service.getItems_result = function(event:ResultEvent):void { var items:ArrayCollection = event.result as...

    web Service 传递集合(实例)

    为了在服务端和客户端之间传递集合,我们需要将集合对象转换为这些格式的字符串,然后在接收端再将其还原为对象。对于XML,可以使用XMLSerializer或DataContractSerializer;对于JSON,可以使用Json.NET或其他类似的...

    android 调用DoNet写的WebService

    例如,如果你的.NET Web服务返回一个泛型列表`List&lt;T&gt;`,在Android端你可以创建一个对应的Java类,然后使用如Gson或Jackson这样的库进行反序列化。 例如,假设.NET Web服务返回一个`List&lt;User&gt;`,其中`User`类有`...

    java_Webservice[文].pdf

    - `Service`类是Apache Axis的核心,用于创建一个服务代理,可以理解为与Web服务交互的客户端代理。 - `Call`接口代表一个具体的SOAP调用,通过它设置调用的参数、端点地址、操作名称等。 3. **调用Web服务的步骤...

    jQuery中调用WebService方法小结

    这些数据类型在客户端以JSON对象的形式呈现,其键值为字母d。例如,当返回一个对象时,可以在jQuery的回调函数中通过`result.d`访问到返回的对象数据。 ### jQuery与WebService结合的实现步骤 1. **编写WebService...

    .net面试题,连接开口了解

    正确的写法应为:`List&lt;T&gt; list = new List();`,其中T是类型参数,例如:`List&lt;string&gt; list = new List();`。 ### 7. 委托与事件的区别 委托是一种引用类型,可以存储对函数的引用,进而调用该函数。它是实现回...

    java面试题

    `List`、`Set`、`Map`都是`Collection`接口的扩展,分别用于有序列表、无重复元素集和键值对映射。 #### 25. MVC设计模式解析 MVC(Model-View-Controller)将应用程序分为模型(数据)、视图(界面)和控制器...

    java面试题总结

    处理结果集。 6. 关闭连接。 #### 11. 实现排序和比较 - **排序算法**:如冒泡排序、快速排序等。 - **比较接口**:实现`Comparable`接口或使用`Comparator`。 #### 12. JSP中动态INCLUDE与静态INCLUDE的区别 ...

    ASP.NET2.0高级编程(第4版)1/6

    26.2.1 WebService页面指令946 26.2.2 查看Web服务的  基类文件946 26.2.3 把定制的数据集  显示为SOAP948 26.2.4 XML Web服务接口950 26.3 使用简单的XML Web服务953 26.3.1 添加Web引用953 26.3.2 在客户应用...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    12.2.3 多个活动的结果集(MARS) 388 12.2.4 命令的异步执行 394 12.2.5 异步连接 415 12.3 小结 416 第13章 使用XML 417 13.1 XML基础 417 13.1.1 XML InfoSet 419 13.1.2 XSD/XML模式定义 420 13.1.3 在...

    ASP.NET面试问题集结

    - 注意 `ArrayList` 类型已不再推荐使用,建议使用泛型集合如 `List&lt;T&gt;` 来替代,这样类型安全性更高,性能也更好。 ##### 4. 字符串与 StringBuilder - **区别**:字符串(`string`)在.NET中是不可变的,这意味...

    C#编程经验技巧宝典

    113 &lt;br&gt;5.6 其他应用技巧 114 &lt;br&gt;0189 如何判断年份是否为闰年 114 &lt;br&gt;0190 如何根据年份判断十二生肖 114 &lt;br&gt;0191 如何根据IP地址获取本机域名 115 &lt;br&gt;0192 如何获取“我的文档”系统...

    net学习计划

    - **泛型**:理解泛型的概念及其在实际编程中的应用。 - **Attribute**:学习如何使用特性来增强代码的元数据信息。 - **委托**:掌握委托的基本概念及如何使用事件。 - **匿名方法**:介绍匿名方法的使用场景。...

    JAVA技术体系

    - **泛型**:使用泛型来编写类型安全的代码。 - **注解**:了解注解的作用和使用方法。 - **自动装箱和拆箱**:掌握基本类型和包装类型的自动转换。 - **枚举类**:学习如何定义和使用枚举类型。 - **可变参数与返回...

Global site tag (gtag.js) - Google Analytics