WebService简单案例

服务端代码

代码总览


DBConnection.java

package com.itlwc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBConnection {
	private static Connection conn;
	private String user = "sa";
	private String password = "sa";
	private String className = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
	private String url = "jdbc:microsoft:sqlserver:" +
			"//localhost:1433;SelectMethod=Cursor;dataBaseName=itlwc";

	private DBConnection() {
		try {
			Class.forName(this.className);
			conn = DriverManager.getConnection(url, user, password);
			System.out.println("连接数据库成功");
		} catch (ClassNotFoundException e) {
			System.out.println("连接数据库失败");
		} catch (SQLException e) {
			System.out.println("连接数据库失败");
		}
	}

	@SuppressWarnings("static-access")
	public static Connection getConn() {
		return new DBConnection().conn;
	}

	// 测试数据库连接是否成功
	public static void main(String[] args) {
		getConn();
	}

}
Student.java

package com.itlwc;

public class Student {
	// 学号
	private String id;
	// 姓名
	private String name;
	// 性别
	private String sex;
	// 年龄
	private String age;

	public Student() {
		super();
	}

	public Student(String id, String name, String sex, String age) {
		super();
		this.id = id;
		this.name = name;
		this.sex = sex;
		this.age = age;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public String getAge() {
		return age;
	}

	public void setAge(String age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "学号: " + id + "\n姓名: " + name + "\n性别: " + sex + "\n年龄: " + age;
	}

}
IStudent.java

package com.itlwc;

public interface IStudent {
	// 增加学生
	public boolean add(Student student);

	// 查找学生
	public Student find(String id);
}
StudentImpl.java

package com.itlwc;

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

public class StudentImpl implements IStudent {

	private Connection conn = DBConnection.getConn();

	// 增加
	public boolean add(Student student) {
		String sql = "insert into student values('" + student.getId() + "','"
				+ student.getName() + "','" + student.getSex() + "','"
				+ student.getAge() + "')";
		PreparedStatement ps = null;
		try {
			ps = conn.prepareStatement(sql);
			ps.executeUpdate();
			return true;
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}

	}

	// 查询
	public Student find(String id) {
		String sql = "select * from student where id='" + id + "'";
		Student student = new Student();
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			ps = conn.prepareStatement(sql);
			rs = ps.executeQuery();
			if (rs.next()) {
				student.setId(rs.getString(1));
				student.setName(rs.getString(2));
				student.setSex(rs.getString(3));
				student.setAge(rs.getString(4));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return student;
	}
}
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>
</web-app>
services.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans>
	<service xmlns="http://xfire.codehaus.org/config/1.0">
		<name>Student</name>
		<serviceClass>
			com.itlwc.IStudent
		</serviceClass>
		<implementationClass>
			com.itlwc.StudentImpl
		</implementationClass>
	</service>
</beans>

http://localhost:8090/MyService/services/Student?wsdl

<?xml version="1.0" encoding="UTF-8" ?>
<wsdl:definitions targetNamespace="http://itlwc.com"
	xmlns:soapenc12="http://www.w3.org/2003/05/soap-encoding"
	xmlns:tns="http://itlwc.com"
	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/"
	xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
	xmlns:soapenc11="http://schemas.xmlsoap.org/soap/encoding/"
	xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">

	<wsdl:types>
		<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
			attributeFormDefault="qualified" elementFormDefault="qualified"
			targetNamespace="http://itlwc.com">
			<xsd:complexType name="Student">
				<xsd:sequence>
					<xsd:element minOccurs="0" name="age"
						nillable="true" type="xsd:string" />
					<xsd:element minOccurs="0" name="id" nillable="true"
						type="xsd:string" />
					<xsd:element minOccurs="0" name="name"
						nillable="true" type="xsd:string" />
					<xsd:element minOccurs="0" name="sex"
						nillable="true" type="xsd:string" />
				</xsd:sequence>
			</xsd:complexType>
			<xsd:element name="add">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element maxOccurs="1" minOccurs="1"
							name="in0" nillable="true" type="tns:Student" />
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="addResponse">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element maxOccurs="1" minOccurs="1"
							name="out" type="xsd:boolean" />
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="find">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element maxOccurs="1" minOccurs="1"
							name="in0" nillable="true" type="xsd:string" />
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="findResponse">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element maxOccurs="1" minOccurs="1"
							name="out" nillable="true" type="tns:Student" />
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
		</xsd:schema>
	</wsdl:types>
	<wsdl:message name="addRequest">
		<wsdl:part name="parameters" element="tns:add" />
	</wsdl:message>
	<wsdl:message name="findResponse">
		<wsdl:part name="parameters" element="tns:findResponse" />
	</wsdl:message>
	<wsdl:message name="findRequest">
		<wsdl:part name="parameters" element="tns:find" />
	</wsdl:message>
	<wsdl:message name="addResponse">
		<wsdl:part name="parameters" element="tns:addResponse" />
	</wsdl:message>
	<wsdl:portType name="StudentPortType">
		<wsdl:operation name="add">
			<wsdl:input name="addRequest" message="tns:addRequest" />
			<wsdl:output name="addResponse" message="tns:addResponse" />
		</wsdl:operation>
		<wsdl:operation name="find">
			<wsdl:input name="findRequest" message="tns:findRequest" />
			<wsdl:output name="findResponse" message="tns:findResponse" />
		</wsdl:operation>
	</wsdl:portType>
	<wsdl:binding name="StudentHttpBinding"
		type="tns:StudentPortType">
		<wsdlsoap:binding style="document"
			transport="http://schemas.xmlsoap.org/soap/http" />
		<wsdl:operation name="add">
			<wsdlsoap:operation soapAction="" />
			<wsdl:input name="addRequest">
				<wsdlsoap:body use="literal" />
			</wsdl:input>
			<wsdl:output name="addResponse">
				<wsdlsoap:body use="literal" />
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="find">
			<wsdlsoap:operation soapAction="" />
			<wsdl:input name="findRequest">
				<wsdlsoap:body use="literal" />
			</wsdl:input>
			<wsdl:output name="findResponse">
				<wsdlsoap:body use="literal" />
			</wsdl:output>
		</wsdl:operation>
	</wsdl:binding>
	<wsdl:service name="Student">
		<wsdl:port name="StudentHttpPort"
			binding="tns:StudentHttpBinding">
			<wsdlsoap:address
				location="http://localhost:8090/MyService/services/Student" />
		</wsdl:port>
	</wsdl:service>
</wsdl:definitions>

客户端代码

代码总览


客户端中IStudent,Student两个java文件与服务端中IStudent,Student是一样的

Test.java

package com.itlwc;

import java.net.MalformedURLException;

import org.codehaus.xfire.XFire;
import org.codehaus.xfire.XFireFactory;
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) {
		//创建web服务的元数据
		Service service = new ObjectServiceFactory().create(IStudent.class);
		//创建web服务代理
		XFire xFire = XFireFactory.newInstance().getXFire();
		XFireProxyFactory factory = new XFireProxyFactory(xFire);
		//服务地址(注意这个url地址后面不带?wsdl)
		String url = "http://192.168.0.161:8080/MyService/services/Student";
		//生成web服务调用对象
		try {
			IStudent is = (IStudent)factory.create(service, url);
			//增加方法
			boolean b = is.add(new Student("1001","李文超","男","18"));
			if(b){
				System.out.println("增加成功");
			}else{
				System.out.println("增加失败");
			}
			//查询方法
			Student student = is.find("1001");
			System.out.println(student.toString());
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}
	}
}
/*
打印结果
	增加成功
	学号: 1001
	姓名: 李文超
	性别: 男
	年龄: 18
*/


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值