当前位置: 首页 > 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秒…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展&#xff0c;机器人仍难以胜任复杂的长时程任务&#xff08;如家具装配&#xff09;&#xff0c;主要受限于人…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向

在人工智能技术呈指数级发展的当下&#xff0c;大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性&#xff0c;吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型&#xff0c;成为释放其巨大潜力的关键所在&…...

云原生安全实战:API网关Envoy的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关 作为微服务架构的统一入口&#xff0c;负责路由转发、安全控制、流量管理等核心功能。 2. Envoy 由Lyft开源的高性能云原生…...