JRT界面打开器

开发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时强制等待;-asirurl: 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.extendif (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.hqwc.cn/news/342952.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【elfboard linux 开发板】10. 设备树与烧录

1. 设备树介绍 设备树由一系列被命名的node和property组成 可以描述如下信息&#xff1a; CPU的数量和类别内存基地址和大小总线和桥外设连接中断控制器和中断使用情况GPIO控制器和GPIO使用情况Clock 控制器和 Clock 使用情况 由dts文件以文本方式对系统设备树进行描述&…

2023.12.10查找,线性探测法

二叉树的重构 集合实现对图的dfs,bfs复写 插入排序 霍夫曼树&#xff0c;霍夫曼编码 查找成功&#xff0c;查找失败的期望值计算 9.给定散列表大小为11&#xff0c;散列函数为H(Key)Key%11。按照线性探测冲突解决策略连续插入散列值相同的4个元素。问&#xff1a;此时该散…

小白福音!一键获取Cookie,从此不再求人!

文章目录 &#x1f4d6; 介绍 &#x1f4d6;&#x1f3e1; 环境 &#x1f3e1;&#x1f4d2; 使用方法 &#x1f4d2;⚓️ 相关链接 ⚓️ &#x1f4d6; 介绍 &#x1f4d6; 本文分享一个自己专为小白写的软件&#xff0c;该软件支持傻瓜式一件获取网页cookie 软件功能 Cookie…

STM32L051使用HAL库操作实例(14)- ADC采集电压

目录 一、前言 二、ADC外设简要说明 三、STM32CubeMX配置&#xff08;本文使用的STM32CubeMX版本为6.1.2&#xff09; 1.MCU选型 2.时钟使能 3.外部时钟配置 4.串口配置 5.ADC引脚配置 6.配置STM32CubeMX生成工程文件 7.点击GENERATE CODE生成工程文件 四、工程源码 …

上海AI实验室等开源,音频、音乐统一开发工具包Amphion

上海AI实验室、香港中文大学数据科学院、深圳大数据研究院联合开源了一个名为Amphion的音频、音乐和语音生成工具包。 Amphion可帮助开发人员研究文本生成音频、音乐等与音频相关的领域&#xff0c;可以在一个框架内完成&#xff0c;以解决生成模型黑箱、代码库分散、缺少评估…

蓝凌EIS智慧协同平台 多处SQL注入漏洞复现

0x01 产品简介 蓝凌EIS智慧协同平台是一款专为企业提供高效协同办公和团队合作的产品。该平台集成了各种协同工具和功能,旨在提升企业内部沟通、协作和信息共享的效率。 0x02 漏洞概述 由于蓝凌EIS智慧协同平台 doc_fileedit_word.aspx、frm_form_list_main.aspx、frm_butt…

Visual Studio中项目添加链接文件

这个需求在VS里面使用还真不多见&#xff0c;只是最近在做项目的版本编号的时候遇到一个头大的问题&#xff0c;我一个解决方案下面有几十个类库&#xff0c;再发布的时候这几十个类库的版本号必须要统一&#xff0c;之前我们都是在单个的AssemblyInfo.cs里面去改相关的信息&am…

企业如何做到安全又极速的分发传输大文件

在当代企业运营中&#xff0c;文件的传输和分发是至关重要的任务。然而&#xff0c;随着文件体积的增大和信息敏感性的凸显&#xff0c;企业需要找到一种既安全又能够高效传输大文件的方法。本文将深入探讨如何在企业环境中实现安全又高效的大文件传输。 一、分发大文件时需要注…

ubuntu20固定串口名称

查看串口的详细信息 udevadm info --name/dev/ttyUSB0结果&#xff1a; P: /devices/platform/scb/fd500000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0/usb1/1-1/1-1.2/1-1.2:1.0/ttyUSB0/tty/ttyUSB0 N: ttyUSB0 L: 0 S: serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UAR…

Linux中DCHP与时间同步

目录 一、DHCP &#xff08;一&#xff09;工作原理 1.获取 2.续约 &#xff08;二&#xff09;分配方式 &#xff08;三&#xff09;服务器配置 1.随机地址分配 2.固定地址分配 二、时间同步 &#xff08;一&#xff09;ntpdate &#xff08;二&#xff09;chrony …

【Python机器学习】构造决策树

通常来说&#xff0c;构造决策树直到所有叶结点都是纯的叶结点&#xff0c;但这会导致模型非常复杂&#xff0c;并且对于训练数据高度过拟合。 为了防止过拟合&#xff0c;有两种常见策略&#xff1a; 1、尽早停止树的生长&#xff0c;也叫预剪枝 2、先构造树&#xff0c;但…

MoE模型性能还能更上一层楼?一次QLoRA微调实践

Fine-Tuning Mixtral 8x7B with QLoRA&#xff1a;Enhancing Model Performance &#x1f680; 编者按&#xff1a;最近&#xff0c;混合专家(Mixture of Experts,MoE)这种模型设计策略展现出了卓越的语言理解能力&#xff0c;如何在此基础上进一步提升 MoE 模型的性能成为业界…