如何在vue项目中嵌入jsp页面的方法(2种)


Posted in Javascript onFebruary 06, 2020

今日一个项目中一块功能模块是其他系统使用jsp已经开发好的页面,想着直接将其嵌入到当前的vue项目中节约开发成本;但是发现并非想象的那么简单

创建一个server.vue组件加载jsp页面

1 、第一种(使用 v-html进行jsp 渲染)

server.vue

<template>
 <div class="docker-server">
  <div v-html="pageContent"></div>
 </div>
</template>

<script type="text/ecmascript-6">
  export default {
    name: "server",
   data(){
     return{
      pageContent:'',
     }
   },
   created(){
      this.getDockerPage();
   },
   methods:{
    getDockerPage() {

     // $post为全局的axios post请求对象;dockerMange 为后端ip
     let url = `${api_config.dockerMange}/core/funcs/system/docker/server/index.jsp`;
     this.$post(url).then(res => {
      console.log(res);
      this.pageContent = res.data;
     }).catch(err => {
      console.log(err)
     });
    }
   }
  }
</script>

<style scoped>

</style>

请求返回的jsp数据格式

如何在vue项目中嵌入jsp页面的方法(2种)

后台返回的 index.jsp 内容如下:

<!DOCTYPE html>
<script type="text/javascript">
/** 常量定义 **/
var TDJSCONST = {
 YES: 1,
 NO: 0
};
/** 变量定义 **/
var contextPath = "/docker";
var imgPath = "/docker/core/styles/style1/img";
var ssoUrlGPower = "";
var limitUploadFiles = "jsp,java,jspx,exe"
var signFileServiceUrl = http://**/BjfaoWeb/TitleSign";
var isOnlineEval = "0";
var useSearchFunc = "1";
var maxUploadSize = 500;
var isDev = "0";
var ostheme = "1";
</script>

<html style="overflow: hidden;">
<head>
  <title>Docker容器服务器管理</title> <!-- http://** 我为保护服务ip 而手动更改了 -->
  <link rel="stylesheet" href="http://**/docker/core/styles/style1/css/views.css" rel="external nofollow" type="text/css"/>
  <link rel="stylesheet" href="http://**/docker/core/styles/style1/css/cmp/tab.css" rel="external nofollow" type="text/css"/>
  <link rel="stylesheet" href=http://**/docker/dist/css/common.css">
  <link rel="stylesheet" href="http://**/dist/css/iconfont.css" rel="external nofollow" >
  <script type="text/Javascript" src=http://**/docker/core/js/datastructs.js"></script>
  <script type="text/Javascript" src="http://**/docker/core/js/sys.js"></script>
  <script type="text/Javascript" src="http://**/docker/core/js/prototype.js"></script>
  <script type="text/Javascript" src="http://**/docker/core/js/smartclient.js"></script>
  <script type="text/Javascript" src="http://**/docker/core/js/cmp/tab.js"></script>
  <script type="text/javascript">
    function doInit() {
      var tabArray = [{
        title: "容器服务器管理",
        content: "",
        contentUrl: "http://**/docker/core/funcs/system/docker/server/manage.jsp",
        imgUrl: "http://**" + imgPath + "/cmp/tab/sys_config.gif",
        useIframe: true
        },
        {
          title: "新增容器服务器",
          content: "",
          contentUrl: "http://**/docker/core/funcs/system/docker/server/edit.jsp",
          imgUrl: "http://**" + imgPath + "/cmp/tab/sys_config.gif",
          useIframe: true
        }];
      buildTab(tabArray, 'contentDiv');
    }
  </script>
</head>
<body onload="doInit();">
<div id="contentDiv"></div>
</body>
</html>

页面显示如下:

如何在vue项目中嵌入jsp页面的方法(2种)

因:jsp页面只是写了几个标签,其他数据都是通过外部js中的方法动态渲染出来的,然而使用v-html只是将jsp 页面加载到了当前页面上,但是没有将js 再次load进来;所以页面上就只有几个没有用的标签!最终确认这种方法不可行

2、 第二种(使用 iframe 进行jsp嵌入)

修改后的 server.vue

<template>
 <div class="docker-server">
  <iframe name = "iframeChild" id = "iframeChild" v-bind:src="getPageUrl"
      width="100%" :height="iframeHeight"
      frameborder="0" scrolling="no" ref="iframeDom"
  ></iframe>
 </div>
</template>

<script type="text/ecmascript-6">
  export default {
    name: "server",
   data(){
     return{
      iframeHeight:500,
      getPageUrl:`${api_config.dockerMange}/core/funcs/system/docker/server/index.jsp?MySessionId=${JSON.parse(sessionStorage.getItem("userInfo")).userToken}`
     }
   },
   mounted: function () {
    this.$nextTick(() => {
     if(this.$refs.iframeDom)
      this.iframeHeight = window.innerHeight - this.$refs.iframeDom.$el.offsetTop;
    })
   },
  }
</script>

<style scoped>

</style>

这次终于对了运行效果如下:

如何在vue项目中嵌入jsp页面的方法(2种)

还是老式的方法过的奥,测试证明这种方式可行,完美解决问题 嘿嘿。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery ui1.7 dialog只能弹出一次问题
Aug 27 Javascript
js下用层来实现select的title提示属性
Feb 23 Javascript
JavaScript中去掉数组中的重复值的实现方法
Aug 03 Javascript
javascript中的缓动效果实现程序
Dec 29 Javascript
jquery1.10给新增元素绑定事件的方法
Mar 06 Javascript
jquery显示loading图片直到网页加载完成的方法
Jun 25 Javascript
JS获取下拉框显示值和判断单选按钮的方法
Jul 09 Javascript
javascript实现tab响应式切换特效
Jan 29 Javascript
前端js弹出框组件使用方法
Aug 24 Javascript
JS实现的汉字与Unicode码相互转化功能分析
May 25 Javascript
vue项目持久化存储数据的实现代码
Oct 01 Javascript
angular 表单验证器验证的同时限制输入的实现
Apr 11 Javascript
js get和post请求实现代码解析
Feb 06 #Javascript
Windows下安装 node 的版本控制工具 nvm
Feb 06 #Javascript
Vue3项目打包后部署到服务器 请求不到后台接口解决方法
Feb 06 #Javascript
node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)
Feb 06 #Javascript
node.js开发辅助工具nodemon安装与配置详解
Feb 06 #Javascript
Vue表单控件数据绑定方法详解
Feb 05 #Javascript
Vue过渡效果之CSS过渡详解(结合transition,animation,animate.css)
Feb 05 #Javascript
You might like
PHP初学入门
2006/11/19 PHP
几款免费开源的不用数据库的php的cms
2010/12/19 PHP
JS中简单的实现像C#中using功能(有源码下载)
2007/01/09 Javascript
Dom加载让图片加载完再执行的脚本代码
2008/05/15 Javascript
JavaScript 程序编码规范
2010/11/23 Javascript
一道JS前端闭包面试题解析
2015/12/25 Javascript
JS生成和下载二维码的代码
2016/12/07 Javascript
浅谈Javascript中的Label语句
2016/12/14 Javascript
JS组件系列之JS组件封装过程详解
2017/04/28 Javascript
原生JS实现的双色球功能示例
2018/02/02 Javascript
深入理解JS的事件绑定、事件流模型
2018/05/13 Javascript
Vue中使用webpack别名的方法实例详解
2018/06/19 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
2018/06/30 Javascript
浅谈JS和jQuery的区别
2019/03/27 jQuery
如何根据业务封装自己的功能组件
2019/04/19 Javascript
vue swipe自定义组件实现轮播效果
2019/07/03 Javascript
JavaScript Window窗口对象属性和使用方法
2020/01/19 Javascript
浅谈鸿蒙 JavaScript GUI 技术栈
2020/09/17 Javascript
three.js中多线程的使用及性能测试详解
2021/01/07 Javascript
[55:45]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.24
2019/09/10 DOTA
python转换摩斯密码示例
2014/02/16 Python
python中使用PIL制作并验证图片验证码
2018/03/15 Python
python使用opencv驱动摄像头的方法
2018/08/03 Python
Python基于OpenCV实现人脸检测并保存
2019/07/23 Python
在django模板中实现超链接配置
2019/08/21 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
2019/10/30 Python
python dataframe NaN处理方式
2019/12/26 Python
Python脚本如何在bilibili中查找弹幕发送者
2020/06/04 Python
可能这些是你想要的H5软键盘兼容方案(小结)
2019/04/23 HTML / CSS
Debenhams爱尔兰:英国知名的百货公司
2017/01/02 全球购物
New Balance澳大利亚官网:运动鞋和健身服装
2019/02/23 全球购物
Bitiba意大利:在线宠物商店
2020/10/31 全球购物
劳资员岗位职责
2013/11/11 职场文书
伊琍体标语
2014/06/25 职场文书
实习工作表现评语
2014/12/31 职场文书
党风廉洁教育心得体会
2016/01/20 职场文书