首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

施用XFire+Spring构建Web Service(二)

2012-10-19 
使用XFire+Spring构建Web Service(二)在《使用XFire+Spring构建Web Service(一)——helloWorld篇》文中我们通

使用XFire+Spring构建Web Service(二)

在《使用XFire+Spring构建Web Service(一)——helloWorld篇》文中我们通过一个简单的XFire+Spring实例,该实例的sayHelloWorld()方法通过传入一个字符串参数来返回一个字符串,而实际的应用过程中,遇到的情况比这个要复杂得多,例如,传入参数是对象、返回自定义对象、返回数组、返回列表。下面让我们在此文中对XFire+Spring进行更深层的探讨吧。

一.???????????? 本例概述

在本例中,我们将在业务逻辑类是一个用户的业务逻辑类,包括创建用户、获取单个用户、获取用户数组、获取用户列表四个方法,因该文讲的是XFire+Spring构建webservice,所以在该例中我们并不涉及具体的数据库操作,而只是提供模拟实现。方法描述如下:

1)?创建用户方法:createUser(User user)

通过传入User对象作为参数来才创建用户;

2)?通过用户名获取用户信息方法:getUser(String loginName)

根据用户名获取某用户对象,该方法返回的是一个User对象;

3)?返回所有用户的数组方法:getUserArray()

返回为User数组;

4)?返回所有用户的列表的方法:getUserList()

返回为List对象,放入的对象为User类型。

二.???????????? 数据对象User.java

在上篇的例子中,src/webservice目录下新建example2目录,并在example2目录下建立User.java文件,下面看看数据对象User.java的内容,代码如下:

package webservice.example2;import java.util.Date;/** *//** *用户对象.   *@author<a href="mailto:xiexingxing1121@126.com">AmigoXie</a> *@version1.0 *Creationdate:2007-9-28-上午10:42:44 */publicclass User implements java.io.Serializable {    privatestaticfinallongserialVersionUID = 1L;    /** *//**用户名*/    private String loginName;    /** *//**用户密码*/    private String password;    /** *//**手机号*/    private String mobile;    /** *//**创建时间*/    private Date createTime;    public Date getCreateTime() {       return createTime;    }    public void setCreateTime(Date createTime) {       this.createTime = createTime;    }    public String getLoginName() {       return loginName;    }    public void setLoginName(String loginName) {       this.loginName = loginName;    }    public String getMobile() {       return mobile;    }    public void setMobile(String mobile) {       this.mobile = mobile;    }    public String getPassword() {       return password;    }    public void setPassword(String password) {       this.password = password;    }    public String toString() {       StringBuffer sb = new StringBuffer();       sb.append("loginName=" + this.loginName);       sb.append("|password=" + this.password);       sb.append("|mobile=" + this.mobile);       sb.append("|createDate=" + this.createTime);       return sb.toString();    }}

?

三.???????????? 用户业务类UserService.java及其实现UserServiceImpl.java

?

下面让我们来看看本例的业务逻辑接口类UserService.java的内容:

package webservice.example2;import java.util.List;/** *//** *用户业务类. *@author<a href="mailto:xiexingxing1121@126.com">AmigoXie</a> *@version1.0 *Creationdate:2007-9-28-上午10:37:09 */publicinterface UserService {    /** *//**     *获取用户对象.     *@paramloginName用户名     *@return返回用户对象     */    public User getUser(String loginName);    /** *//**     *创建用户.     *@paramuser用户对象     *@return返回创建的对象的toString()方法返回的内容     */    public String createUser(User user);    /** *//**     *获取用户信息数组.     *@return返回用户信息数组     */    public User[] getUserArray();        /** *//**     *获得用户信息列表.     *@return返回用户信息列表     *@author<a href="mailto:xiexingxing1121@126.com">AmigoXie</a>     *Creationdate:2007-9-28-下午12:55:37     */    public List<User> getUserList();}

?

它的实现类UserServiceImpl.java的内容如下:

package webservice.example2;import java.util.ArrayList;import java.util.Date;import java.util.List;/** *//** *用户业务实现类. *@author<a href="mailto:xiexingxing1121@126.com">AmigoXie</a> *@version1.0 *Creationdate:2007-9-28-上午10:54:11 */publicclass UserServiceImpl implements UserService {    /** *//**     *获取用户对象.     *@paramloginName用户名     *@return返回用户对象     */    public User getUser(String loginName) {       User user = new User();       user.setLoginName(loginName);       user.setPassword("12345678");       user.setMobile("13812345678");       user.setCreateTime(new Date());       return user;    }    /** *//**     *创建用户.     *@paramuser用户对象     *@return返回创建的对象的toString()方法返回的内容     */    public String createUser(User user) {       user.setCreateTime(new Date());       return user.toString();    }    /** *//**     *获取用户信息数组.     *@return返回用户信息数组     */    public User[] getUserArray() {       User[] userList = new User[4];       userList[0] = getUser("阿蜜果");       userList[1] = getUser("sterning");       userList[2] = getUser("娟子");       userList[3] = getUser("老肖");       return userList;    }    /** *//**     *获得用户信息列表.     *@return返回用户信息列表     *@author<a href="mailto:xiexingxing1121@126.com">AmigoXie</a>     *Creationdate:2007-9-28-下午12:55:37     */    public List<User> getUserList() {       List<User> userList = new ArrayList<User>();       userList.add(getUser("阿蜜果"));       userList.add(getUser("sterning"));       userList.add(getUser("娟子"));       userList.add(getUser("老肖"));       return userList;    }}

?

注意:getUserList()方法返回的List中需要采用泛型,不然会部署失败。

到此为止,我们的业务已经完成,剩下的工作只是修改配置文件和编写测试类来进行测试。让我们继续往下走吧。

四.???????????? 配置文件applicationContext.xml和xfire-servlet.xml的修改

在本小节中,我们需要修改配置文件。首先在applicationContext.xml文件中添加用户逻辑bean的定义,添加的代码如下:

<bean id="UserBean" class="webservice.example2.UserServiceImpl"/>

接下来我们还需要修改xfire-servlet.xml文件来暴露我们的Web Service,修改后的该文件内容如下所示:

<entry key="/UserService.ws">????????????????????

<ref bean="UserService" />????????????????

</entry>

?

并添加如下bean的定义:

<bean id="UserService" parent="baseWebService">       <!-- 业务服务bean -->       <property name="serviceBean" ref="UserBean" />       <!-- 业务服务bean的窄接口类 -->       <property name="serviceClass" value="webservice.example2.UserService" />    </bean>

? 我们的Web Service已经开发完成,启动本项目后,可通过浏览器访问:http://localhost:8080/webservice_helloworld/UserService.ws?wsdl,我们可以在浏览器中看到该例的WSDL信息。

五.???????????? Web Service测试

在本小节我们将对上述完成的Web Service进行测试,首先我们在src目录下的client.xml文件增加如下内容:

<!-- 获取用户信息的例子 -->     <bean id="testUserWebService" name="code">package test;import java.util.List;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import webservice.example2.User;import webservice.example2.UserService;/** *//** * 用户业务测试类.     * @author <a href="mailto:xiexingxing1121@126.com">AmigoXie</a> * @version 1.0 * Creation date: 2007-9-28 - 下午12:03:06 */public class UserServiceClientTest {    public static void main(String[] args) throws Exception {        UserServiceClientTest test = new UserServiceClientTest();        test.testClient();    }         public void testClient() throws Exception {        ApplicationContext ctx = new ClassPathXmlApplicationContext(                "client.xml");            UserService userService = (UserService) ctx.getBean("testUserWebService");                //测试getUser()方法        System.out.println("--------------getUser()------------");        User user = userService.getUser("阿蜜果");        System.out.println(user);                //测试getArray()方法        System.out.println("--------------getUserArray()------------");        User[] userArray = userService.getUserArray();        for (int i = 0; i < userArray.length; i++) {            System.out.println("i=" + i + "|" + userArray[i]);        }                //测试createUser()方法        System.out.println("--------------createUser()------------");        User newUser = new User();        newUser.setLoginName("离离");        newUser.setPassword("123");        newUser.setMobile("13666666666");        String result = userService.createUser(newUser);        System.out.println(result);                //测试getUserList()方法        List<User> userList = userService.getUserList();        System.out.println("--------------getUserList()------------");        for (int i = 0; i < userList.size(); i++) {            System.out.println("i=" + i + "|" + userList.get(i));        }    }}

?

over

?

?

热点排行