简介:
前端用Html构建页面,用JSP的Ajax给NodeJS发送操作请求:http://192.168.0.190:3000/login,NodeJS根据请求调用Java发布的WS接口:http://192.168.0.190:8888/WSLogin?wsdl,将返回结果返回的前端。
安装环境及版本:
系统环境:CentOS Linux release 7.5.1804 (Core)
JDK版本:apache-tomcat-9.0.36.tar.gz
Tomcat版本:apache-tomcat-9.0.36.tar.gz
NodeJS版本:node-v14.4.0-linux-x64.tar.xz
Eclipse IDE版本:Eclipse IDE for Enterprise Java Developers
Version: 2020-06 (4.16.0)
Build id: 20200615-1200
一、前提条件
参考《JAVA发布WebService接口》构建WS接口:http://192.168.0.190:8888/WSLogin?wsd
参考《NodeJS调用Java WS接口》将Tomcat的默认发布目录修改为:/usr/local/tomcat/apache-tomcat-9.0.36/webapps/html
参考《NodeJS安装(Centos)》安装NodeJS
二、前端(Html + JSP)
利用Html新建登录页面,使用JSP通过ajax调用NodeJS发布的监听,端口设置为监听端口号:http://192.168.0.190:3000/login
$.ajax('http://192.168.0.190:3000/login', {
type:'POST',
data:{
app_id: app_id,
timestamp: timestamp,
user_name: user_name,
user_pwd: user_pwd,
sign: createSign(this, data)
},
dataType: 'json'
}).done(function(data) {
console.log(data);
window.location.href='./index.html';
}).fail(function(xhr, status) {
console.log(xhr)
console.log(status)
alert('operate result:\n status = ' + status + ";\n xhr.responseText = " + xhr.responseText);
});
三、中端(NodeJS)
设置监听端口3000,根据路由/login操作,解析传入的参数,然后调用Java发布的WS接口:http://192.168.0.190:8888/WSLogin?wsdl,并将WS接口返回的数据返回给前端
var soap = require('soap');
var http = require('http');
var querystring = require('querystring');
var url = require('url');
//创建服务器
var server = http.createServer(function (req, res) {
res.setHeader("Access-Control-Allow-Origin", "*");
console.log(req.url);
if (req.url === '/login') {
var pathName = url.parse(req.url).pathname.replace(/\//, '');
console.log(pathName);
var alldata = '';
req.on('data', function (chunk) {
alldata += chunk;
});
req.on('end', function () {
//将字符串转换位一个对象
console.log(alldata);
var dataString = alldata.toString();
//将接收到的字符串转换位为json对象
var dataObj = querystring.parse(dataString);
console.log(dataObj);
var url = 'http://192.168.0.190:8888/WSLogin?wsdl';
//使用soap,根据wsdl地址创建客户端
soap.createClient(url,function(err,client) {
console.log(err);
if(err){
console.log(err);
}
//返回一个客户端,并且传参调用Java的接口,接收返回的数据
client.sayHello({arg0:'mike '}, function(error, result) {
//打印接收到的数据
console.log(error);
console.log(result);
console.log(result.return);
console.log(JSON.stringify(result));
var tt = JSON.stringify({data: result, message: 'success'});
console.log(tt);
res.end(tt);
});
});
});
}
});
//设置监听端口
server.listen(3000, "192.168.0.190", function () {
console.log("server is started listen port 3000");
});
四、后端(Java)
参考构建WS接口即可,可以通过浏览器地址:http://192.168.0.190:8888/WSLogin?wsdl进行查看
4.1 后端文件目录
默认发布目录:/usr/local/tomcat/apache-tomcat-9.0.36/webapps/html
[root@localhost html]# ll /usr/local/tomcat/apache-tomcat-9.0.36/webapps/html/
total 76
drwxr-xr-x 2 root root 42 Jun 29 22:39 css
-rw-r--r-- 1 root root 7414 Jun 29 22:39 index.html
drwxr-xr-x 2 root root 190 Jun 29 22:39 js
-rw-r--r-- 1 root root 2730 Jun 29 22:39 login.html
-rw-r--r-- 1 root root 1198 Jun 30 00:21 login.js
-rw-r--r-- 1 root root 2018 Jun 30 00:30 login_node.js
-rw-r--r-- 1 root root 1051 Jun 29 22:39 login_ws.php
-rw-r--r-- 1 root root 595 Jun 28 22:19 main.js
-rw-r--r-- 1 root root 497 Jun 29 22:47 mine.js
drwxr-xr-x 119 root root 4096 Jun 28 22:09 node_modules
-rw-r--r-- 1 root root 36581 Jun 28 22:09 package-lock.json
五、试验
启动NodeJS监听
[root@localhost html]# node login_node.js
server is started listen port 3000
启动登录页面:http://192.168.0.190:8080/login.html
输入用户名、密码后点击登录,查看NodeJS操作
NodeJS收到前端发过来的请求后,调用WS接口,并将WS接口返回的结果返给前端