目录
应用场景:
需要我方提供webservice接口,使用方调用时传递数据,保存到我方的数据库中,
一:利用idea创建webservice项目
1)File>>new>>project

2)填写项目名,

3)项目初始结构(有一个自动生成的Java类–HelloWorld)

4)生成WSDL文件(右键文件>>Webservice>>Generate..)


会生成wsdl文件

5)配置tomcat


6)到这个时候,然后可以运行起服务了,但是访问服务页面时还是会报错。因为还要给部署的 Artifact 添加 Apache Axis 包的依赖。
选择File> Project Structure>>Artifacts。
会到在新的警告信息。点击警告信息右侧的Fix…按钮。

在弹出菜单里选择Add ‘JAX-WS-Apache Axis’ to the artifact。

修复完成后警告消失。

7)查看:在浏览器里输入:
http://localhost:8080/servicedome_war_exploded/services

点击HelloWorld(wsdl)能正常查看wsdl的内容则发布成功。服务器端完成。

8)编写客户端代码调用服务
package example;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.utils.StringUtils;
public class CalculateClient {
public static void main(String[] args) {
// 指定调用WebService的URL(这里是我们发布后点击HelloWorld)
String url = "http://localhost:8080/servicedome_war_exploded/services/HelloWorld?wsdl";
CalculateClient calculateClient = new CalculateClient();
String svrMinusResult = calculateClient.CallMethod(url, "sayHelloWorldFrom", new Object[]{"牛"});
System.out.println(svrMinusResult);
}
//实现WebService上发布的服务调用
public String CallMethod(String url, String method, Object[] args) {
String result = null;
if(StringUtils.isEmpty(url)) {
return "url地址为空";
}
if(StringUtils.isEmpty(method)) {
return "method地址为空";
}
Call rpcCall = null;
try {
//实例websevice调用实例
Service webService = new Service();
rpcCall = (Call) webService.createCall();
rpcCall.setTargetEndpointAddress(new java.net.URL(url));
rpcCall.setOperationName(method);
//执行webservice方法
String rslt = (String) rpcCall.invoke(args);
result = String.valueOf(rslt);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
运行:

可能会遇到的问题:
1.在启动Tomcat后,运行客户端代码遇到错误:“org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.”
解决办法:找到web->WEB-INF下的server-config.wsdd文件定位到下面的内容做修改:
去掉红框部分

至此,webservice项目已经搭建完成,
二:添加到数据库:
1)添加jar包
1: idea添加jar包,选择File> Project Structure

选择Modules>>点击+号>>选择JARs..

点击jar包所在的位置,点击ok

点击ok
2:添加到(此步一定要添加)!!!
尝试着将mysql-connector-java-5.1.44-bin.jar的jar包加入C:\Program Files\Java\jre1.6.0_02\lib\ext文件夹下,原来是不仅仅 要求将驱动加入classpath中,而且需要将该jar包加入到java运行环境的外部jar包中。
2)编写代码:
package example;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class BaseDao {
public static String sql_insert(String name)throws Exception {
System.out.println("w:"+name);
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://127.0.0.1:3306/Govern?useUnicode=true&characterEncoding=utf-8";
String user = "root";
String password = "123456";
// 建立数据库连接,获得连接对象conn
Connection conn = DriverManager.getConnection(url, user, password);
String sql = "insert into cs (cs) values (?);"; // 生成一条sql语句
// 创建一个Statment对象
PreparedStatement ps = conn.prepareStatement(sql);
// 为sql语句中第一个问号赋值
ps.setString(1, name);
// 执行sql语句
ps.executeUpdate();
// 关闭数据库连接对象
conn.close();
System.out.println("完毕!!!");
return "1";
}
}

数据库表字段:

id为自增的;
3)调用
在HelloWorld中修改(访问接口是调用添加到数据库的方法)
package example;
import Dao.BaseDao;
public class HelloWorld {
public String sayHelloWorldFrom(String from) throws Exception {
return BaseDao.sql_insert(from);
}
}
右键重新生成wsdl

重新调用一下客户端代码,调用服务

控制台(方法调用成功return的1)

数据库:

至此添加数据库也全部结束!
ps:
参数是可以再添加的
总结的有些急促,有不懂的可以评论哦(评论必回)
参考文章:
https://blog.youkuaiyun.com/qq_43147940/article/details/84712605:Intellij IDEA开发WebService
https://blog.youkuaiyun.com/jiajikang_jjk/article/details/79742718:java利用jdbc连接数据库之插入数据
直接调用添加到数据库可以添加,但是通过接口添加错误,解决办法:
https://blog.youkuaiyun.com/qq_20936333/article/details/81254928
本文详细介绍了如何使用IntelliJ IDEA创建Webservice项目,包括生成WSDL文件、配置Tomcat、添加Apache Axis依赖及数据库操作。通过具体步骤和代码示例,指导读者从零开始搭建Webservice,并实现数据的数据库存取。
9212

被折叠的 条评论
为什么被折叠?



