如何在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的datepicker的本地化以及Today问题
May 23 Javascript
JS动态获取当前时间,并写到特定的区域
May 03 Javascript
JS读取XML文件示例代码
Nov 15 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
Jun 26 Javascript
jQuery动态追加页面数据以及事件委托详解
May 06 jQuery
angular select 默认值设置方法
Jun 23 Javascript
详解vue父子组件间传值(props)
Jun 29 Javascript
jQuery简介_动力节点Java学院整理
Jul 04 jQuery
旺旺在线客服代码 旺旺客服代码生成器
Jan 09 Javascript
swiper动态改变滑动内容的实现方法
Jan 17 Javascript
Vue实现类似Spring官网图片滑动效果方法
Mar 01 Javascript
解决layui轮播图有数据不显示的情况
Sep 16 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 HandlerSocket的使用
2011/05/02 PHP
php的SimpleXML方法读写XML接口文件实例解析
2014/06/16 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
2014/11/08 PHP
Laravel 5框架学习之向视图传送数据
2015/04/08 PHP
PHP命名空间简单用法示例
2018/12/28 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
CL vs ForZe BO5 第三场 2.13
2021/03/10 DOTA
10个基于Jquery的幻灯片插件教程
2010/10/29 Javascript
JS实现alert中显示换行的方法
2015/12/17 Javascript
浅谈js函数中的实例对象、类对象、局部变量(局部函数)
2016/11/20 Javascript
用angular实现多选按钮的全选与反选实例代码
2017/05/23 Javascript
详解vue渲染从后台获取的json数据
2017/07/06 Javascript
vue.js组件之间传递数据的方法
2017/07/10 Javascript
探究react-native 源码的图片缓存问题
2017/08/24 Javascript
Angularjs中数据绑定的实例详解
2017/08/25 Javascript
Vue2.0实现组件数据的双向绑定问题
2018/03/06 Javascript
Vue多环境代理配置方法思路详解
2019/06/21 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
2020/11/18 Vue.js
js实现头像上传并且可预览提交
2020/12/25 Javascript
javascript实现点击产生随机图形
2021/01/25 Javascript
python数据结构之二叉树的统计与转换实例
2014/04/29 Python
Python实现的插入排序算法原理与用法实例分析
2017/11/22 Python
Python UnboundLocalError和NameError错误根源案例解析
2018/10/31 Python
python实现基于信息增益的决策树归纳
2018/12/18 Python
python3 实现函数写文件路径的正确方法
2019/11/27 Python
PyTorch预训练Bert模型的示例
2020/11/17 Python
CSS3实现莲花绽放的动画效果
2020/11/06 HTML / CSS
英国最受欢迎的手表网站:Watch Shop
2016/10/21 全球购物
澳大利亚设计的婴儿和女孩的衣服:Oobi
2018/12/16 全球购物
巴西电子、家电、智能手机购物网站:Girafa
2019/06/04 全球购物
台湾三立电视电商平台:电电购
2019/09/09 全球购物
入团者的自我评价分享
2013/12/02 职场文书
幼儿园门卫制度
2014/01/29 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
工伤事故赔偿协议书
2015/08/06 职场文书
GTX1660显卡搭配显示器推荐
2022/04/19 数码科技