利用myeclipse自带的功能实现webservice

本文通过实例演示如何使用Java和JDBC实现WebService服务端及客户端的交互,包括创建实体类、接口、接口实现类,并详细展示了增删改查等操作的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近一直在听说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,这只是一种实现方式,网上有很多种。
本文博主原创,仅供学习,盗用必究

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值