目录
应用场景:
一:利用idea创建webservice项目
二:添加到数据库:
需要我方提供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
尝试着将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.csdn.net/qq_43147940/article/details/84712605:Intellij IDEA开发WebService
https://blog.csdn.net/jiajikang_jjk/article/details/79742718:java利用jdbc连接数据库之插入数据
直接调用添加到数据库可以添加,但是通过接口添加错误,解决办法:
https://blog.csdn.net/qq_20936333/article/details/81254928