您的位置:首页 > 编程语言 > Java开发

利用myeclipse自带的功能实现webservice

2017-12-20 18:35 411 查看
最近一直在听说WebService的一个远程调用的东西,我用Jdbc写了一套增删改查,创建了两个项目来模拟服务端和客户端的交互实现WebService,写下来,避免以后忘掉。

1、新建一个Web Service Project项目,在项目中创建实体、接口、和接口实现类



2、Cedevice.java(数据实体的java类,所以简单展示一下)

private int DEVICE_ID;//设备ID
private String DEVICE_NAME;//设备名称
private String DEVICE_IP;//设备端口IP
private String USERNAME;//登录用户名
private String PASSWORD;//登录密码


3、在CedeviceService.java接口中创建增删改查方法

public int add(Cedevice ce);
public List<Cedevice> getAll();
public Cedevice getById(int DEVICE_ID);
public int update(Cedevice oldce,Cedevice newce);
public int del(Cedevice ce);


4、在实现类中用jdbc完成对数据库的操作和数据返回的处理

@Override
public int add(Cedevice ce) {
// TODO Auto-generated method stub
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
try{
conn=ConnectionFactory.getConnection();
String sql="insert into ip_device_ce(DEVICE_ID,DEVICE_NAME,DEVICE_IP,USERNAME,PASSWORD) values(?,?,?,?,?)";
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1, ce.getDEVICE_ID());
pstmt.setString(2, ce.getDEVICE_NAME());
pstmt.setString(3, ce.getDEVICE_IP());
pstmt.setString(4, ce.getUSERNAME());
pstmt.setString(5, ce.getPASSWORD());
pstmt.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}finally{
ResourceClose.close(rs, pstmt, conn);
}
return 1;
}

@Override
public List<Cedevice> getAll() {
// TODO Auto-generated method stub
Cedevice ce=null;
List<Cedevice> list=new ArrayList<Cedevice>();
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
String sql="select * from ip_device_ce";
try{
conn=ConnectionFactory.getConnection();
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
while(rs.next()){
ce=new Cedevice();
ce.setDEVICE_ID(rs.getInt(1));
ce.setDEVICE_NAME(rs.getString(2));
ce.setDEVICE_IP(rs.getString(3));
ce.setUSERNAME(rs.getString(4));
ce.setPASSWORD(rs.getString(5));
list.add(ce);
}

}catch(Exception e){
e.printStackTrace();
}finally{
ResourceClose.close(rs, stmt, conn);
}
return list;
}

@Override
public Cedevice getById(int DEVICE_ID) {
// TODO Auto-generated method stub
Cedevice ce=null;
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
try{
conn=ConnectionFactory.getConnection();
String sql="select DEVICE_ID,DEVICE_NAME,DEVICE_IP,USERNAME,PASSWORD from ip_device_ce where DEVICE_ID=? ";
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1, DEVICE_ID);
rs=pstmt.executeQuery();
while(rs.next()){
ce=new Cedevice();
ce.setDEVICE_ID(rs.getInt(1));
ce.setDEVICE_NAME(rs.getString(2));
ce.setDEVICE_IP(rs.getString(3));
ce.setUSERNAME(rs.getString(4));
ce.setPASSWORD(rs.getString(5));
}

}catch(Exception e){
e.printStackTrace();
}finally{
ResourceClose.close(rs, pstmt, conn);
}
return ce;
}

@Override
public int update(Cedevice oldce, Cedevice newce) {
// TODO Auto-generated method stub
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
try{
conn=ConnectionFactory.getConnection();
String sql="update ip_device_ce set DEVICE_NAME=?,DEVICE_IP=?,USERNAME=?,PASSWORD=? where DEVICE_ID=? ";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, newce.getDEVICE_NAME());
pstmt.setString(2, newce.getDEVICE_IP());
pstmt.setString(3, newce.getUSERNAME());
pstmt.setString(4, newce.getPASSWORD());
pstmt.setInt(5, oldce.getDEVICE_ID());
pstmt.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}finally{
ResourceClose.close(rs, pstmt, conn);
}
return 1;
}

@Override
public int del(Cedevice ce) {
// TODO Auto-generated method stub
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
try{
conn=ConnectionFactory.getConnection();
String sql="delete from ip_device_ce where DEVICE_ID=?";
pstmt=conn.prepareStatement(sql);
pstmt.setInt(1, ce.getDEVICE_ID());
pstmt.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}finally{
ResourceClose.close(rs, pstmt, conn);
}
return 0;
}


5、建立与数据库交互的配置文件

ConnectionFactory.java

//定义数据库驱动程序
private static String driver="com.mysql.jdbc.Driver";
//定义数据库链接地址
private static String url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8";
//数据库用户名
private static String userName="root";
//数据库密码
private static String password="root";

//创建一个静态方法,用来连接数据库
public static Connection getConnection(){
try{
//返回一个driver类
Class.forName(driver);
//返回一个登录数据库的动作,传参数链接,用户名,密码
return DriverManager.getConnection(url,userName,password);
//抛出异常
}catch(Exception e){
e.printStackTrace();
//返回空
return null;
}
}


ResourceClose.java

public static void close(ResultSet rs,Statement stmt,Connection conn){
//描述和使用多个资源
try{
if(rs!=null)rs.close();
if(stmt!=null)stmt.close();
if(conn!=null)conn.close();
//抛出异常
}catch(Exception e){
e.printStackTrace();
}

}

//关闭、断开连接
public static void close(ResultSet rs,Statement stmt){
close(rs,stmt,null);
}
public static void close(Statement stmt,Connection conn){
close(null,stmt,conn);
}
public static void close(Connection conn){
close(null,null,conn);
}
public static void close(ResultSet rs){
close(rs,null,null);
}
public static void close(Statement stmt){
close(null,stmt,null);
}


6、在实现类中加入WebService注解,表示发布这个实现类



**下面开始发布实现类,把这个项目当做服务端**


1、点击New Web Service的选项,选择New Web Service



2、然后在打开的页面选择第二个选项,Project里是你要发布成服务端的项目名



3、点击Next后,在新打开的页面的Java class框里写入你要发布的实现类


写完其他各项文件会自动生成,直接点击Finish结束。

这时项目中就会多出来两个文件。如下图:





web.xml文件中也会自动生成一些配置项。

4、最后一步,导入你需要的数据库jar包,博主用的mysql,然后右键点击项目,选中Build Path中的Add Libraries,出现如下界面



选中这一项点击Next

然后在新的页面最下面找到这两项选中,点击结束



启动Tomcat,服务端发布完成。

最后再利用服务端生成客户端

1、新建一个项目为aaa,点击生成服务端旁边的小箭头,选择下面的那一项,然后在打开的见面中的Project选择aaa



2、点击Next后添加如下图信息,点击Next



3、最后就会发现在你选择的路径下生成了好多java文件



图里的错误是博主后期修改导致,正常生成没有报错。

4、利用你熟悉的web框架来完成与服务端的交互,博主用的是ssm



以上就是我实现的WebService,这只是一种实现方式,网上有很多种。

本文博主原创,仅供学习,盗用必究
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java web service myeclipse