当前位置: 首页 > news >正文

intra-mart实现简易登录页面笔记

一、前言

最近在学习intra-mart框架,在此总结下笔记。

intra-mart是一个前后端不分离的框架,开发时主要用的就是xml、html、js这几个文件;
xml文件当做配置文件,html当做前端页面文件,js当做后端文件(js里能连接数据库);
所以js文件需要注意,因为算后端文件,其中的语法与前端开发的js有些不太相同(日志打印不能用console.log)。

二、代码部分

1.路由文件

WEB-INF/conf/routing-jssp-config/test.xml

<?xml version="1.0" encoding="UTF-8"?>
<routing-jssp-configxmlns="http://www.intra-mart.jp/router/routing-jssp-config"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.intra-mart.jp/router/routing-jssp-config routing-jssp-config.xsd"><authz-default mapper="welcome-all" /><file-mapping path="/test/test1" page="test/myTest1" /><file-mapping path="/test/test2" page="test/myTest2" /><file-mapping path="/test/test3" page="test/myTest3" /></routing-jssp-config>

其中用到了3个路径,test1是登录首页,test2是登录后的页面,test3只是一个接口,用来实现一个简单的注册功能。

2.登录页面

用到了2个文件:
WEB-INF/jssp/src/test/myTest1.html


<script src="ui/libs/jquery-validation-1.9.0/jquery.validate.js"></script>
<script type="text/javascript">console.log("加载js")jQuery(function() {jQuery('#register').click(function() {console.log("点击按钮")console.log(jQuery('#userName').val())jQuery.ajax({headers:{'test1':'mytest'},error:imuiTransitionToErrorPage,async:false, cache:false, dataType:'json', type:'POST', url:'test/test3', data:{'userName': jQuery('#userName').val(),'userPass': jQuery('#userPass').val()},success:function(result) {console.log("返回信息")                console.log(result)if (result.error) {imuiShowErrorMessage(result.errorMessage, result.detailMessages);return;}imuiShowSuccessMessage(result.code, result.msg);}});});})</script><div class="imui-title"><h1>Test</h1>
</div>
<div class="imui-toolbar-wrap"><div class="imui-toolbar-inner"><!-- ツールバー左側 --><ul class="imui-list-toolbar"><!-- 戻る --><li><a href="#dummy" class="imui-toolbar-icon" title="戻る"><span class="im-ui-icon-common-16-back"></span></a></li></ul><!-- ツールバー右側 --><ul class="imui-list-toolbar-utility"><li><a href="#dummy" class="imui-toolbar-icon" title="最新情報"><span class="im-ui-icon-common-16-refresh"></span></a></li></ul></div>
</div><div class="imui-form-container-wide"><div class="imui-chapter-title"><h2>login</h2></div><form method="post" name="LoginForm" action="test/test2">
<table class="imui-form"><tbody><tr><th><label class="imui-required">账号</label></th><td><input type="text" name="userName" id="userName"></td></tr><tr><th><label>密码</label></th><td><input type="text" name="userPass" id="userPass"></td></tr></tbody>
</table>
<div class="imui-operation-parts"><input type="submit" value="登录" class="imui-small-button"><input type="button" value="注册" class="imui-small-button" id="register">
</div>
</form>  </div>

WEB-INF/jssp/src/test/myTest1.js

function init(request) {}

页面效果:
在这里插入图片描述

这个页面逻辑,主要是点击登录按钮,就执行form表单的action,跳转到test/test2页面;

点击注册按钮,就用ajax请求test/test3接口,把输入的账号和密码存入数据库,并返回相应提示。

3.注册接口

用到了2个文件:
WEB-INF/jssp/src/test/myTest3.html


WEB-INF/jssp/src/test/myTest3.js

load('tenant/authz/ajax/common_api');
var MSG = MessageManager.getMessage;/*** @param request*/
function init(request) {var data;var logger = Logger.getLogger();logger.info(request.userName);logger.info(request.userPass);var database = new SharedDatabase("imart_test");var result;try{result = database.execute("insert into user_table (user_name, user_pass) VALUES ('"+request.userName+"', '"+request.userPass+"');");}catch(e){logger.info('error', e);  }logger.info('arguments=[{}]', result);logger.info('arguments3=[{}]', result.isSuccess()== true );var ret;if(result.isSuccess()){var ret = {"code":250, "msg":"success"};}else{var ret = {"code":249, "msg":"error"};}outputJSON(ret);}

虽然只是接口,但是也得写个空的html文件;

js文件里,就会接收入参,存入数据库user_table表里;

最后返回提示信息。

页面效果:
在这里插入图片描述
输入d,4,点击注册,就会存入数据库。

4.登录后页面

用到了2个文件:
WEB-INF/jssp/src/test/myTest2.html


<script src="ui/libs/jquery-validation-1.9.0/jquery.validate.js"></script>
<script type="text/javascript">//放在这里面,确保代码在 DOM 加载完成后执行
jQuery(function() {var data = '<imart type="string" value=data />'var nowUserList = '<imart type="string" value=nowUserList />'if(data=='登录成功'){console.log("登录成功")console.log(jQuery('#test_table').length)//初始化下listconsole.log(ImJson.parseJSON(nowUserList))var jsonObj = ImJson.parseJSON(nowUserList);jQuery('#test_table').append('<caption>当前数据库已有的用户信息</caption>');for (var i = 0; i < jsonObj.length; i++) {jQuery('#test_table').append('<tr id="tr' + i + '"><td>'+jsonObj[i].user_name+'</td><td>'+jsonObj[i].user_pass+'</td></tr>');}}
else{console.log("登录失败")
}})
</script><imart type="string" value=data />.
<table id="test_table" class="imui-table-sort">
</table>

WEB-INF/jssp/src/test/myTest2.js


var data;var nowUserList;function init(request) {var logger = Logger.getLogger();logger.info(request.userName);logger.info(request.userPass);var database = new SharedDatabase("imart_test");var result = database.execute("select * from user_table where user_name='"+request.userName+"' and user_pass='"+request.userPass+"' ");logger.info('arguments=[{}]', result);logger.info('length='+result.data.length);if(result.data.length > 0){data = "登录成功"}else{data = "登录失败"}var result2 = database.execute("select * from user_table limit 10 ");//转换为json字符串nowUserList = ImJson.toJSONString(result2.data);//字符串转json对象//ImJson.parseJSON//logger.info('result2='+result2.data.length);//logger.info('result2='+result2.data[0].user_name);//data = result.data[0].user_name;}

跳转过来时,都会先执行js文件,其中先查询了下数据库,用户是否存在;然后把用户列表查询出来了,前端用for循环展示下;

html文件中,有判断,如果登录成功,那就初始化下table,展示下用户列表;

如果登录失败,那就只提示登录失败。

页面效果:
在这里插入图片描述
在这里插入图片描述

三、备注

本文总结了下intra-mart各个页面参数传递方法,接口调用方法,与for循环展示列表方法。

js文件直接当后端使用,比较少见,参数传递也和java不太相同。

前后端未分离,大部分用jquery和框架内置方法。

相关文章:

intra-mart实现简易登录页面笔记

一、前言 最近在学习intra-mart框架&#xff0c;在此总结下笔记。 intra-mart是一个前后端不分离的框架&#xff0c;开发时主要用的就是xml、html、js这几个文件&#xff1b; xml文件当做配置文件&#xff0c;html当做前端页面文件&#xff0c;js当做后端文件&#xff08;js里…...

SpringBoot整合RocketMQ

前言 在当今快速发展的软件开发领域&#xff0c;构建高效、稳定的应用系统是每个开发者的追求。Spring Boot 作为一款极具影响力的开发框架&#xff0c;凭借其强大的自动化配置和便捷的开发特性&#xff0c;极大地简化了项目搭建过程。使用 Spring Boot&#xff0c;我们无需再…...

深入理解 YUV Planar 和色度二次采样 —— 视频处理的核心技术

深入理解 YUV Planar 和色度二次采样 —— 视频处理的核心技术 在现代视频处理和编码中,YUV 颜色空间和**色度二次采样(Chroma Subsampling)**是两个非常重要的概念。它们的结合不仅能够显著减少视频数据量,还能在保持较高视觉质量的同时优化存储和传输效率。而 YUV Plana…...

项目顺利交付,几个关键阶段

年前离放假还有10天的时候&#xff0c;来了一个应急项目&#xff0c; 需要在放假前一天完成一个演示版本的项目&#xff0c;过年期间给甲方领导看。 本想的最后几天摸摸鱼&#xff0c;这么一来&#xff0c;非但摸鱼不了&#xff0c;还得加班。 还在虽然累&#xff0c;但也是…...

第七天 开始学习ArkTS基础,理解声明式UI编程思想

学习 ArkTS 的声明式 UI 编程思想是掌握 HarmonyOS 应用开发的核心基础。以下是一份简洁高效的学习指南&#xff0c;帮助你快速入门&#xff1a; 一、ArkTS 声明式 UI 核心思想 数据驱动 UI f(state)&#xff1a;UI 是应用状态的函数&#xff0c;状态变化自动触发 UI 更新。单…...

windows C++ Fiber (协程)

协程&#xff0c;也叫微线程&#xff0c;多个协程在逻辑上是并发的&#xff0c;实际并发由用户控件。 在windows上引入了纤程(fiber)。 WinBase.h 中函数原型 #if(_WIN32_WINNT > 0x0400)// // Fiber begin //#pragma region Application Family or OneCore Family or Game…...

游戏引擎学习第89天

回顾 由于一直没有渲染器&#xff0c;终于决定开始动手做一个渲染器&#xff0c;虽然开始时并不确定该如何进行&#xff0c;但一旦开始做&#xff0c;发现这其实是正确的决定。因此&#xff0c;接下来可能会花一到两周的时间来编写渲染器&#xff0c;甚至可能更长时间&#xf…...

2025新鲜出炉--前端面试题(一)

文章目录 1. vue3有用过吗, 和vue2之间有哪些区别2. vue-router有几种路由, 分别怎么实现3. webpack和rollup这两个什么区别, 你会怎么选择4. 你能简单介绍一下webpack项目的构建流程吗5. webpack平时有手写过loader和plugin吗6. webpack这块你平时做过哪些优化吗&#xff1f;7…...

教程 | i.MX RT1180 ECAT_digital_io DEMO 搭建(一)

本文介绍 i.MX RT1180 EtherCAT digital io DEMO 搭建&#xff0c;Master 使用 TwinCAT &#xff0c;由于步骤较多&#xff0c;分为上下两篇&#xff0c;本文为第一篇&#xff0c;主要介绍使用 TwinCAT 控制前的一些准备。 原厂 SDK 提供了 evkmimxrt1180_ecat_examples_digit…...

Pyecharts系列课程04——折线图/面积图(Line)

本章我们学习在Pyecharts中折线图&#xff08;Line&#xff09;的使用。折线图通用应用于数据的趋势分析。 折线图 我们现在有两组数据&#xff0c;x_data是2024年的月份&#xff0c;y_data为对应张三甲每个月的用电量。 # 家庭每月用电量趋势 x_data ["1月", &q…...

变压器-000000

最近一个项目是木田12V的充电器&#xff0c;要设计变压器&#xff0c;输出是12V,电压大于1.5A12.6*1.518.9W. 也就是可以将变压器当成初级输入的一个负载。输入端18.9W. 那么功率UI 。因为变压器的输入是线性上升的&#xff0c;所以电压为二份之一&#xff0c;也就是1/2*功率…...

凝思60重置密码

凝思系统重置密码 - 赛博狗尾草 - 博客园 问题描述 凝思系统进入单用户模式&#xff0c;在此模式下&#xff0c;用户可以访问修复错误配置的文件。也可以在此模式下安装显卡驱动&#xff0c;解决和已加载驱动的冲突问题。 适用范围 linx-6.0.60 linx-6.0.80 linx-6.0.100…...

linux——网络计算机{序列化及反序列化(JSON)(ifdef的用法)}

linux——网络&#xff08;服务器的永久不挂——守护进程&#xff09;-CSDN博客 目录 一、序列化与反序列化 1. 推荐 JSON 库 2. 使用 nlohmann/json 示例 安装方法 基础用法 输出结果 3. 常见操作 4. 其他库对比 5. 选择建议 二、ifdef宏的用法 基本语法 核心用途…...

【教程】docker升级镜像

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 目录 自动升级 手动升级 无论哪种方式&#xff0c;最重要的是一定要通过-v参数做数据的持久化&#xff01; 自动升级 使用watchtower&#xff0c;可…...

迅为RK3568开发板篇OpenHarmony实操HDF驱动控制LED-编写应用APP

在应用代码中我们实现如下功能&#xff1a; 当应用程序启动后会获取命令行参数。如果命令行没有参数&#xff0c;LED 灯将循环闪烁&#xff1b;如果命令行带有参数&#xff0c;则根据传输的参数控制 LED 灯的开启或关闭。通过 HdfIoServiceBind 绑定 LED灯的 HDF 服务&#xff…...

python代码

python\main_script.py from multiprocessing import Process import subprocessdef call_script(args):# 创建一个新的进程来运行script_to_call.pyprocess Process(targetrun_script, args(args[0], args[1]))process.start()process2 Process(targetrun_script, args(arg…...

React 打印插件 -- react-to-print

一、安装依赖 npm install react-to-print 二、使用 import { useReactToPrint } from "react-to-print"; import React, { useRef, forwardRef } from react;const Content () > {const contentRef useRef(null);const reactToPrintFn useReactToPrint({ c…...

探索C语言简易计算器程序的实现与优化

在C语言编程学习中&#xff0c;实现一个简易计算器是一个常见且有趣的练习项目。它不仅能帮助我们巩固基本的语法知识&#xff0c;如函数、循环、分支结构&#xff0c;还能让我们深入理解程序设计的逻辑。接下来&#xff0c;我们将分析三段实现简易计算器功能的C语言代码&#…...

深入了解 MySQL:从基础到高级特性

引言 在当今数字化时代&#xff0c;数据的存储和管理至关重要。MySQL 作为一款广泛使用的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;凭借其高性能、可靠性和易用性&#xff0c;成为众多开发者和企业的首选。本文将详细介绍 MySQL 的基础概念、安装启…...

OSPF基础(1):工作过程、状态机、更新

OSPF基础 1、技术背景&#xff08;与RIP密不可分&#xff0c;因为RIP中存在的问题&#xff09; RIP中存在最大跳数为15的限制&#xff0c;不能适应大规模组网周期性发送全部路由信息&#xff0c;占用大量的带宽资源以路由收敛速度慢以跳数作为度量值存在路由环路可能性每隔30秒…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...