JRT界面打开器

news2024/11/17 15:53:45

开发BS界面时候有个问题,如果新做页面还没挂菜单,那么测试新页面有两个办法,一是把菜单挂上用,一是手输URL。而我在开发阶段两个事都不想干,那么怎么解决呢?

以前WebLoader启动时候会启动C#写的URL辅助器
在这里插入图片描述

在这里插入图片描述

这样虽然也很好用,但是不符合JRT百分百信创目标,同时还有安装.net环境才行,所以必须淘汰,这也是百分百承诺的唯一遗留问题,虽然用户不会用到,但是也不符合,提供BS的URL辅助器

效果,WebLoader引导的时候会打开URL辅助器和码表,这样开发就不用费劲猜网站发布在哪个端口了,我该用什么地址访问,必须体贴到位,还要人找用什么地址访问那是不称职的:
在这里插入图片描述

前端代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
    * 版权申明:本代码属于JRT计划下的代码,为了避免不必要的误解。未经作者许可,不得把JRT任何代码和设计引入作者所在公司产品,
    * JRT旨在打造一款简单、高效、自主、可控的适合传统非互联网行业的软件框架,来支持业务软件在信创中取得优势地位。
    * 分为Web端、客户端、代码生成器、码表、Linux运维命令、打印模板设计器、文件服务、连仪器基础、画表格基础等。
    -->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <title>开发打开URL辅助工具</title>
    <script src="../../resource/common/js/JRTBSBase.js" type="text/javascript"></script>
    <style type="text/css">
        .rounded-div {
            border-radius: 10px;
            padding: 20px 40px 20px 40px;
            width: 250px;
            height: 150px;
            font-size: 80px;
            font-weight: normal;
            margin-left: 150px;
        }

        .container {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 35vh;
            /* 设置模糊效果 */
            backdrop-filter: blur(10px);
            background-color: rgba(255, 255, 255, 0.5);
        }

        .containerhead {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 10vh;
            /* 设置模糊效果 */
            backdrop-filter: blur(10px);
            background-color: rgba(255, 255, 255, 0.5);
        }
    </style>
    <script language="javascript" type="text/javascript">
        var BasePath = '';
        var ResourcePath = '';
    </script>
    <script type="text/javascript">
        //主变了
        var me = {
            actionUrl: '../ashx/ashDevOpenPage.ashx'
        };
        //初始化
        $(function () {
            //文件树
            $('#treeFile').tree({
                onDblClick: function (node) {
                    if (node.url != "") {
                        window.open(node.url);
                    }
                }
            });

            //刷新
            $("#btnRefresh").click(function () {
                LoadTreeData();
            });


            //查询
            $("#txtFilter").searchbox({
                searcher: function (value, name) {
                    LoadTreeData();
                },
                prompt: TranslateDataMTHD('Enter Query File', '回车查询文件', '')
            });

            //加载树的数据
            function LoadTreeData() {
                var Filter = $("#txtFilter").searchbox("getValue");
                $("#txtFilter").searchbox("setValue","");
                $.ajax({
                    type: "post",
                    dataType: "json",
                    cache: false, //
                    async: true, //为true时,异步,不等待后台返回值,为false时强制等待;-asir
                    url: me.actionUrl + '?Method=GetFileTree',
                    data: {
                        Filter: Filter
                    },
                    success: function (data, status) {
                        //结束等待
                        $.messager.progress('close');
                        //对数据进行筛选,是后台抛的信息的话,就提示,以及决定是否继续
                        if (!FilterBackData(data)) {
                            return;
                        }
                        $('#treeFile').tree("loadData", [data]);
                    }
                });
            }

            LoadTreeData();
            //显示水印
            ShowWaterMark({
                watermarl_element: "bodyDev",
                watermark_txt: "JRTBase",
                watermark_x: $("#bodyDev").position().left + 20,
                watermark_y: $("#bodyDev").position().top + 20,
                watermark_width: 90,
                watermark_height: 40,
                watermark_x_space: 70,
                watermark_y_space: 50,
                watermark_fontsize: "24px",
                watermark_alpha: 0.4,
                watermark_color: "#50b90c",
                watermark_rows: 0,
                watermark_cols: 0
            });
        });

        //水印
        function ShowWaterMark(settings) {
            //默认设置
            var defaultSettings = {
                watermarl_element: "body",
                watermark_txt: "",
                //水印起始位置x轴坐标
                watermark_x: 20,
                //水印起始位置Y轴坐标
                watermark_y: 20,
                //水印行数
                watermark_rows: 0,
                //水印列数
                watermark_cols: 0,
                //水印x轴间隔
                watermark_x_space: 70,
                //水印y轴间隔
                watermark_y_space: 30,
                //水印字体颜色
                watermark_color: '#aade5f',
                //水印透明度
                watermark_alpha: 0.4,
                //水印字体大小
                watermark_fontsize: '15px',
                //水印字体
                watermark_font: '宋体',
                //水印宽度
                watermark_width: 210,
                //水印长度
                watermark_height: 80,
                //水印倾斜度数
                watermark_angle: 20
            };
            //采用配置项替换默认值,作用类似jquery.extend
            if (arguments.length === 1 && typeof arguments[0] === "object") {
                var src = arguments[0] || {};
                for (key in src) {
                    if (src[key] && defaultSettings[key] && src[key] === defaultSettings[key])
                        continue;
                    else if (src[key])
                        defaultSettings[key] = src[key];
                }
            }
            var oTemp = document.createDocumentFragment();
            var maskElement = document.getElementById(defaultSettings.watermarl_element) || document.body;
            //获取页面最大宽度
            var page_width = Math.max(maskElement.scrollWidth, maskElement.clientWidth);
            //获取页面最大高度
            var page_height = Math.max(maskElement.scrollHeight, maskElement.clientHeight);
            //水印数量自适应元素区域尺寸
            if (defaultSettings.watermark_cols == 0) {
                defaultSettings.watermark_cols = Math.ceil(page_width / (defaultSettings.watermark_x_space + defaultSettings.watermark_width));
                defaultSettings.watermark_rows = Math.ceil(page_height / (defaultSettings.watermark_y_space + defaultSettings.watermark_height));
            }
            var x;
            var y;
            for (var i = 0; i < defaultSettings.watermark_rows; i++) {
                y = defaultSettings.watermark_y + (defaultSettings.watermark_y_space + defaultSettings.watermark_height) * i;
                for (var j = 0; j < defaultSettings.watermark_cols; j++) {
                    x = defaultSettings.watermark_x + (defaultSettings.watermark_width + defaultSettings.watermark_x_space) * j;
                    var mask_div = document.createElement('div');
                    mask_div.id = 'mask_div' + i + j;
                    mask_div.className = 'mask_div';
                    //mask_div.appendChild(document.createTextNode(defaultSettings.watermark_txt));
                    mask_div.innerHTML = (defaultSettings.watermark_txt);
                    //设置水印div倾斜显示
                    mask_div.style.webkitTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
                    mask_div.style.MozTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
                    mask_div.style.msTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
                    mask_div.style.OTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
                    mask_div.style.transform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
                    mask_div.style.visibility = "";
                    mask_div.style.position = "absolute";
                    mask_div.style.left = x + 'px';
                    mask_div.style.top = y + 'px';
                    mask_div.style.overflow = "hidden";
                    mask_div.style.zIndex = "9999";
                    mask_div.style.pointerEvents = 'none';
                    //兼容IE9以下的透明度设置
                    mask_div.style.filter = "alpha(opacity=50)";
                    mask_div.style.opacity = defaultSettings.watermark_alpha;
                    mask_div.style.fontSize = defaultSettings.watermark_fontsize;
                    mask_div.style.fontFamily = defaultSettings.watermark_font;
                    mask_div.style.color = defaultSettings.watermark_color;
                    mask_div.style.textAlign = "center";
                    mask_div.style.width = defaultSettings.watermark_width + 'px';
                    mask_div.style.height = defaultSettings.watermark_height + 'px';
                    mask_div.style.display = "block";
                    oTemp.appendChild(mask_div);
                };
            };
            maskElement.appendChild(oTemp);
        }

    </script>
</head>
<body id="bodyDev">
    <div class="easyui-layout" fit="true">
        <div data-options="region:'north',title:'',split:true" style="height: 45px; padding: 5px 0 0 10px;">
            <input id="txtFilter" style="margin-left: 14px; width: 280px;"></input>
            <span class="sp6"></span>
            <a id="btnRefresh" href="#" class="easyui-linkbutton" data-options="">刷新</a>
            <span class="sp"></span>
            <span>此工具用来简化基于JRT开发的打开页面难度,为开发带来良好的体验</span>
        </div>
        <div data-options="region:'west',title:'',split:true" style="width: 340px;">
            <ul id="treeFile" fit="true"></ul>
        </div>
        <div data-options="region:'center',title:''">
            <div class="containerhead">
                <span style="font-size: 40px;font-weight:bold;">JRT计划-传统行业信创革新</span>
            </div>
            <div class="container">
                <div class="rounded-div" style="background-color: #449be2;">简单</div>
                <div class="rounded-div" style="background-color: #2ab66a;">高效</div>
                <div class="rounded-div" style="background-color: #ffb746;">务实</div>

            </div>
            <div class="container">
                <div class="rounded-div" style="background-color: #f3723b;">自主</div>
                <div class="rounded-div" style="background-color: #0670c6;">可控</div>
                <div class="rounded-div" style="background-color: #50b90c;">创新</div>
            </div>
        </div>
    </div>
</body>
</html>





后台代码:

import JRT.Core.MultiPlatform.JRTContext;
import JRTBLLBase.BaseHttpHandlerNoSession;
import JRTBLLBase.Helper;

import java.io.File;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;

/**
 * 版权申明:本代码属于JRT计划下的代码,为了避免不必要的误解。未经作者许可,不得把JRT任何代码和设计引入作者所在公司产品,
 * JRT旨在打造一款简单、高效、自主、可控的适合传统非互联网行业的软件框架,来支持业务软件在信创中取得优势地位。
 * 分为Web端、客户端、代码生成器、码表、Linux运维命令、打印模板设计器、文件服务、连仪器基础、画表格基础等。
 */

/**
 * 供开发使用的页面打开工具,简化开发,避免开发新页面必须挂接菜单才能访问或者手输URL太麻烦
 */
public class ashDevOpenPage extends BaseHttpHandlerNoSession {
    /**
     * 得到目录树
     *
     * @return
     */
    public String GetFileTree() throws Exception {
        //筛选条件
        String Filter = Helper.ValidParam(JRTContext.GetRequest(Request, "Filter"), "");
        //转小写
        if (!Filter.isEmpty()) {
            Filter = Filter.toLowerCase();
        }
        List<String> exts = new ArrayList<>();
        exts.add("java");
        exts.add("aspx");
        exts.add("html");
        OpenPageTreeNode mainNode = new OpenPageTreeNode();
        File dir = new File(JRTContext.WebBasePath);
        SeeFile(dir, exts, mainNode, "", "../..", 1, Filter);
        return Helper.Object2Json(mainNode);
    }

    /**
     * 扫描文件
     *
     * @param dir           目录
     * @param extensionList 后缀
     * @param treeNode      树节点
     * @param regex         正则
     * @param path          相对地址累计
     * @param lev           层级
     * @param filter        筛选
     */
    private static boolean SeeFile(File dir, List<String> extensionList, OpenPageTreeNode treeNode, String regex, String path, int lev, String filter) {

        File[] files = dir.listFiles();
        //是否有文件
        boolean hasFile = false;
        if (files != null) {
            treeNode.url = "";
            treeNode.text = dir.getName();
            for (File file : files) {
                String newPath = path + "/" + dir.getName();
                if (lev == 1) {
                    newPath = path;
                }
                if (file.isDirectory()) {
                    //剔除不要的目录
                    if (file.getName().equals("AutoBuildTmp")) {
                        continue;
                    }
                    if (file.getName().equals("BinAshx")) {
                        continue;
                    }
                    if (file.getName().equals("CompileModel")) {
                        continue;
                    }
                    if (file.getName().equals("WEB-INF")) {
                        continue;
                    }
                    if (file.getName().equals("Conf")) {
                        continue;
                    }
                    if (file.getName().equals("resource")) {
                        continue;
                    }
                    //为空就创建
                    if (treeNode.children == null) {
                        treeNode.children = new ArrayList<>();
                    }
                    OpenPageTreeNode child = new OpenPageTreeNode();
                    child.children = new ArrayList<>();
                    child.url = "";
                    child.text = file.getName();
                    child.state = "closed";
                    boolean childHasFile = SeeFile(file, extensionList, child, regex, newPath, lev + 1, filter);
                    if (childHasFile == true) {
                        hasFile = true;
                        treeNode.children.add(child);
                    }

                } else {
                    //筛选
                    if (!filter.isEmpty()) {
                        if (!file.getName().toLowerCase().contains(filter)) {
                            continue;
                        }
                    }
                    hasFile = true;
                    if (regex != null && !regex.isEmpty()) {
                        if (Pattern.matches(regex, file.getName())) {
                            AddChild(treeNode, file, newPath);
                        }
                    } else if (extensionList != null) {
                        String fileName = file.getName();
                        String fileExtension = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
                        if (extensionList.contains(fileExtension)) {
                            AddChild(treeNode, file, newPath);
                        }
                    } else {
                        AddChild(treeNode, file, newPath);
                    }
                }
            }
        }
        return hasFile;
    }

    /**
     * 添加子节点到树
     *
     * @param treeNode 节点
     * @param file     文件
     * @param path     路径
     * @return 子节点
     */
    private static OpenPageTreeNode AddChild(OpenPageTreeNode treeNode, File file, String path) {
        //为空就创建
        if (treeNode.children == null) {
            treeNode.children = new ArrayList<>();
        }
        OpenPageTreeNode child = new OpenPageTreeNode();
        child.url = path + "/" + file.getName();
        child.text = file.getName();
        String fileName = file.getName();
        String fileExtension = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
        //java路径处理
        if (fileExtension.equals("java")) {
            child.url = child.url.replace(".java", ".ashx");
        }
        treeNode.children.add(child);
        return child;
    }

    /**
     * 打开页面的树节点
     */
    private static class OpenPageTreeNode {
        /**
         * url
         */
        public String url;

        /**
         * 文本
         */
        public String text;

        /**
         * 状态
         */
        public String state;

        /**
         * 子节点
         */
        public List<OpenPageTreeNode> children;

        /**
         * 构造
         */
        public OpenPageTreeNode() {
        }

        /**
         * 构造
         *
         * @param url
         * @param text
         * @param children
         */
        public OpenPageTreeNode(String url, String text, List<OpenPageTreeNode> children) {
            this.url = url;
            this.text = text;
            this.children = children;
        }
    }
}

WebLoader从启动C#的URL辅助器exe改为启动谷歌特定页面
在这里插入图片描述

这样开发体验就好很多,得到代码只要运行即可到打开好的页面使用,不需要开发去猜发布端口和协议和起始界面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1377372.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

仓储|仓库管理水墨屏RFID电子标签2.4G基站CK-RTLS0501G功能说明与安装方式

随着全球智能制造进度的推进以及物流智能化管理水平的升级&#xff0c;行业亟需一种既能实现RFID批量读取、又能替代纸质标签在循环作业、供应链管理以及实现动态条码标签显示的产品。在此种行业需求背景下&#xff0c;我是适时推出了基于墨水屏显示技术的VT系列可视化超高频标…

Invalid bound statement(只有调用IService接口这一层会报错的)

问题描述:controller直接调用实现类可以,但是一旦调用IService这个接口这一层就报错. 找遍了大家都说是xml没对应好,但是我确实都可以一路往下跳,真的对应好了.结果发现是 MapperScan写错了,如下才是对的. MapperScan的作用是不需要在mapper上一直写注解了,只要启动类上写好就放…

OpenCV-Python(32):SIFT算法

目标 学习SIFT 算法的概念学习在图像中查找SIFT关键点和描述符 原理及介绍 在前面两节我们学习了一些角点检测技术&#xff1a;比如Harris 等。它们具有旋转不变特性&#xff0c;即使图片发生了旋转&#xff0c;我们也能找到同样的角点。很明显即使图像发生旋转之后角点还是角…

基于SkyEye仿真6678处理器:实现国产操作系统ReWorks仿真运行

信号处理的数据量以及实时性的要求随着嵌入式技术的发展不断提高&#xff0c;众多厂商和研究所选择多核DSP处理器芯片去替代原有的单核DSP&#xff0c;并运行嵌入式操作系统来保证信号处理的实时性以及精确性。然而受到硬件资源或者项目实施周期限制&#xff0c;软件工程师调试…

JS实现网页轮播图

轮播图也称为焦点图&#xff0c;是网页中比较常见的网页特效。 1、页面基本结构&#xff1a; 大盒子focus&#xff0c;里面包含 左右按钮ul 包含很多个li &#xff08;每个li里面包含了图片&#xff09;下面有很多个小圆圈 因为我们想要点击按钮&#xff0c;轮播图左右播放&a…

“消费新纪元:从传统消费到消费增值的跨越!“

你是否已经厌倦了传统消费模式&#xff0c;感觉每一次购物只是让钱从左手流到右手&#xff1f;现在&#xff0c;一个新的消费模式正在兴起&#xff0c;它让你的消费变得更有价值&#xff01; 消费增值是一种创新的消费理念&#xff0c;它让你在享受优质商品和服务的同时&#x…

学生公寓里如何进行安全用电管理

安科瑞武陈燕acrelcy 学校肩负着教育、科研和社会服务的重任&#xff0c;是构成社会的重要社区&#xff0c;也是资源能源消费的大户&#xff0c;其中学生公寓电能的消耗占到了学校整体能源消耗的很大部分&#xff0c;根据国家建设节约型校园的要求&#xff0c;各高校对电能的管…

2023年全国职业院校技能大赛软件测试赛题—单元测试卷①

单元测试 一、任务要求 题目1&#xff1a;根据下列流程图编写程序实现相应分析处理并显示结果。返回文字“xa*a*b的值&#xff1a;”和x的值&#xff1b;返回文字“xa-b的值&#xff1a;”和x的值&#xff1b;返回文字“xab的值&#xff1a;”和x的值。其中变量a、b均须为整型…

Oracle 19c OCP 1z0 082考场真题解析第32题

考试科目&#xff1a;1Z0-083 考试题量&#xff1a;85 通过分数&#xff1a;57% 考试时间&#xff1a;150min本文为云贝教育郭一军&#xff08;微信&#xff1a;guoyJoe&#xff09;原创&#xff0c;请尊重知识产权&#xff0c;转发请注明出处&#xff0c;不接受任何抄袭、演绎…

在 Nvidia Docker 容器编译构建显存优化加速组件 xFormers

本篇文章&#xff0c;聊聊如何在新版本 PyTorch 和 CUDA 容器环境中完成 xFormers 的编译构建。 让你的模型应用能够跑的更快。 写在前面 xFormers 是 FaceBook Research &#xff08;Meta&#xff09;开源的使用率非常高的 Transformers 加速选型&#xff0c;当我们使用大模…

可以打印试卷的软件有哪些?推荐这几款

可以打印试卷的软件有哪些&#xff1f;随着科技的飞速发展&#xff0c;越来越多的学习工具如雨后春笋般涌现&#xff0c;其中&#xff0c;能够打印试卷的软件尤其受到广大学生和家长的青睐。这些软件不仅方便快捷&#xff0c;而且内容丰富&#xff0c;可以满足不同学科、不同年…

从零学Java Set集合

Java Set集合 文章目录 Java Set集合1 Set 集合2 Set实现类2.1 HashSet【重点】2.2 LinkedHashSet2.3 TreeSet 3 Comparator 自定义比较器 1 Set 集合 特点&#xff1a;无序无下标、元素不可重复。 方法&#xff1a;全部继承自Collection中的方法。 常用方法&#xff1a; publ…

windos exe 以服务的形式运行(开机运行)

windos 品台编写的 小工具 exe 或者 批处理 .bat 经常需要开机自启动&#xff0c;可以直接把它 加在开启启动项&#xff0c;或者做成 windos服务&#xff0c;这样既可以开机自动启动而且还可以 防止误触关闭掉&#xff1b; windos 以服务启动 exe/bat 的通用方式&#xff1…

js逆向第18例:猿人学第15题备周则意怠-常见则不疑

文章目录 一、前言二、定位关键参数三、代码实现四、参考文献一、前言 任务十五:抓取这5页的数字,计算加和并提交结果 二、定位关键参数 先找到数据接口 可以看到接口的url地址中存在变量m如下 进入堆栈,定位m值 如下图逻辑很清晰,可以看到window.

ChatGPT到底能做什么呢?

1、熟练掌握ChatGPT提示词技巧及各种应用方法&#xff0c;并成为工作中的助手。 2、通过案例掌握ChatGPT撰写、修改论文及工作报告&#xff0c;提供写作能力及优化工作 3、熟练掌握ChatGPT融合相关插件的应用&#xff0c;完成数据分析、编程以及深度学习等相关科研项目。 4、…

【AI视野·今日Sound 声学论文速览 第四十三期】Mon, 8 Jan 2024

AI视野今日CS.Sound 声学论文速览 Mon, 8 Jan 2024 Totally 6 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers MusicAOG: an Energy-Based Model for Learning and Sampling a Hierarchical Representation of Symbolic Music Authors Yikai Qian, Tia…

实现秒杀功能设计

页面 登录页面 登录成功后&#xff0c;跳转商品列表 商品列表页 加载商品信息 商品详情页 根据商品id查出商品信息返回VO&#xff08;包括rmiaoshaStatus、emainSeconds&#xff09;前端根据数据展示秒杀按钮&#xff0c;点击开始秒杀 订单详情页 秒杀页面设置 后端返回秒杀…

在线陪玩软件开发系统(APP小程序H5、平台、搭建)游戏陪玩系统APP开发 源码搭建,源码交付,支持二开!

一、游戏陪玩系统APP的核心功能 1. 匹配系统&#xff1a;通过智能匹配算法&#xff0c;将寻找陪玩的玩家与愿意提供陪玩服务的玩家进行匹配&#xff0c;确保双方的需求能够得到满足。 2. 实时通讯&#xff1a;提供实时语音和文字聊天功能&#xff0c;让玩家和陪玩者可以在游戏…

Js - 函数(四)

1.函数简单介绍 什么是函数&#xff1f; 函数&#xff08;function&#xff09;是执行特定任务的一段代码块 为什么需要函数&#xff1f; 可以实现代码复用&#xff0c;提高开发效率 2.函数使用 函数的声明语法 函数名命名规范 函数的调用语法 函数体 函数体是函数的构…

【Scala】——流程控制

1 if-else 分支控制 让程序有选择的的执行&#xff0c;分支控制有三种&#xff1a;单分支、双分支、多分支 1.1单分支 if (条件表达式) {执行代码块 }1.2 双分支 if (条件表达式) {执行代码块 1 } else {执行代码块 2 }1.3 多分支 if (条件表达式1) {执行代码块 1 } else …