Html+JSP通过NodeJS访问Java WS接口

简介:

前端用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

image-8.png (1074×632)

输入用户名、密码后点击登录,查看NodeJS操作

image-9.png (877×391)

NodeJS收到前端发过来的请求后,调用WS接口,并将WS接口返回的结果返给前端

发表回复