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框架,在此总结下笔记。 intra-mart是一个前后端不分离的框架,开发时主要用的就是xml、html、js这几个文件; xml文件当做配置文件,html当做前端页面文件,js当做后端文件(js里…...
2025最新软件测试面试大全
前面看到了一些面试题,总感觉会用得到,但是看一遍又记不住,所以我把面试题都整合在一起,都是来自各路大佬的分享,为了方便以后自己需要的时候刷一刷,不用再到处找题,今天把自己整理的这些面试题…...
JDK17主要特性
JDK 17,也被称为Java 17或Java Platform, Standard Edition 17,是Java编程语言的第十七个主要版本,由Oracle公司在2021年9月发布。Java 17是一个长期支持(LTS,Long-Term Support)版本,这意味着它…...
基于SpringBoot的在线远程考试系统的设计与实现(源码+SQL脚本+LW+部署讲解等)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
Android Studio:Application 和 Activity的区别
Application 和 Activity 是 Android 中非常重要的两个组件,它们分别负责不同的生命周期管理和应用的不同层次的操作。 Application 是应用级别的生命周期管理,它在整个应用运行时只有一个实例,负责应用的全局初始化和资源管理。Activity 是…...
GAN(生成对抗网络,Generative Adversarial Network)
https://www.bilibili.com/video/BV1mp4y187dm/?spm_id_from333.788.recommend_more_video.2&vd_source35b06c13f470dff84c947fa3045bafc3...
大模型Dense、MoE 与 Hybrid-MoE 架构的比较
在大模型架构设计中,Dense(全连接)、MoE(混合专家)和Hybrid-MoE(混合式MoE)是三种主流的参数组织方式,它们在模型容量、计算效率和应用场景上存在显著差异。以下从核心原理、技术特点…...
Java进阶学习之路
Java进阶之路 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 Java进阶之路前言一、Java入门 Java基础 1、Java概述 1.1 什…...
Django 多数据库
django 支持项目连接多个数据库 DATABASES = {default: {ENGINE: django.db.backends.mysql,NAME: xxx,USER: root,"PASSWORD": xxxxx,HOST: xxxx,PORT: 3306,},bak: {ENGINE: django.db.backends.mysql,NAME: xxx,USER: root,"PASSWORD": xxxx,HOST: xxx…...
Vue 中如何嵌入可浮动的第三方网页窗口(附Demo)
目录 前言1. 思路Demo2. 实战Demo 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 1. 思路Demo 以下Demo提供思路参考,需要结合实际自身应用代码 下述URL的链接使用百度替代! 方式 1…...
6-图像金字塔与轮廓检测
文章目录 6.图像金字塔与轮廓检测(1)图像金字塔定义(2)金字塔制作方法(3)轮廓检测方法(4)轮廓特征与近似(5)模板匹配方法6.图像金字塔与轮廓检测 (1)图像金字塔定义 高斯金字塔拉普拉斯金字塔 高斯金字塔:向下采样方法(缩小) 高斯金字塔:向上采样方法(放大)…...
【学Rust写CAD】4 相对坐标系详解与实现要素概览
相对坐标系(Relative Coordinate System, RCS)是一个强大且灵活的工具,尤其在绘图、三维建模等领域中发挥着重要作用。以下是对相对坐标系的详细解析,包括其定义、应用、特性、与绝对坐标的区别、在CAD中的应用以及实现方式。 一…...
win编译openssl
一、perl执行脚本 1、安装perl脚本 perl安装 2、配置perl脚本 perl Configure VC-WIN32 no-asm no-shared --prefixE:\openssl-x.x.x\install二、编译openssl 1、使用vs工具编译nmake 如果使用命令行nmake编译会提示“无法打开包括文件: “limits.h”“ 等错误信息 所以…...
Kafka 使用说明(kafka官方文档中文)
文章来源:kafka -- 南京筱麦软件有限公司 第 1 步:获取 KAFKA 下载最新的 Kafka 版本并提取它: $ tar -xzf kafka_{{scalaVersion}}-{{fullDotVersion}}.tgz $ cd kafka_{{scalaVersion}}-{{fullDotVersion}} 第 2 步:启动 KAFKA 环境 注意:您的本地环境必须安装 Java 8+。…...
PyTorch数据建模
回归分析 import torch import numpy as np import pandas as pd from torch.utils.data import DataLoader,TensorDataset import time strat = time.perf_counter()...
Node.js与嵌入式开发:打破界限的创新结合
文章目录 一、Node.js的本质与核心优势1.1 什么是Node.js?1.2 嵌入式开发的范式转变二、Node.js与嵌入式结合的四大技术路径2.1 硬件交互层2.2 物联网协议栈2.3 边缘计算架构2.4 轻量化运行时方案三、实战案例:智能农业监测系统3.1 硬件配置3.2 软件架构3.3 核心代码片段四、…...
CVPR | CNN融合注意力机制,芜湖起飞!
**标题:**On the Integration of Self-Attention and Convolution **论文链接:**https://arxiv.org/pdf/2111.14556 **代码链接:**https://github.com/LeapLabTHU/ACmix 创新点 1. 揭示卷积和自注意力的内在联系 文章通过重新分解卷积和自…...
Markdown转换器中间件
目录 需求 文本编码检测 Markdown→HTML 注意 实现 需求 Markdown是一种文本格式;不被浏览器支持;编写一个在服务器端把Markdown转换为HTML的中间件。我们开发的中间件是构建在ASP.NET Core内置的StaticFiles中间件之上,并且在它之前运…...
https是如何保证安全的,又是如何保证不被中间人攻击的?
HTTPS如何保证安全,以及如何防止中间人攻击 保护用户隐私和数据安全已经成为了一个不可忽视的问题。随着网络攻击的不断升级,HTTPS(超文本传输安全协议)成为了我们在网络上交流时的一道重要防线。以下是HTTPS是如何保证安全的&am…...
2025.2.5
Web [SWPUCTF 2021 新生赛]ez_unserialize: 这个题先了解一下反序列化:反序列化是序列化的逆过程。序列化是将对象或数据结构转换为可以存储或传输的格式(如JSON、XML或二进制格式)的过程。反序列化则是将这个格式的数据转换回原始的对象或…...
TGT-HC:一种用于无线时间敏感网络的时隙感知整形MAC方案的调研、设计与评估
论文标题 中文标题:TGT-HC:一种用于无线时间敏感网络的时隙感知整形MAC方案的调研、设计与评估 英文标题:Survey, Design and Evaluation of TGT-HC: A Time-Aware Shaper MAC for Wireless TSN 作者信息 Raymond J. Jayabal(I…...
Ollama教程:轻松上手本地大语言模型部署
Ollama教程:轻松上手本地大语言模型部署 在大语言模型(LLM)飞速发展的今天,越来越多的开发者希望能够在本地部署和使用这些模型,以便更好地控制数据隐私和计算资源。Ollama作为一个开源工具,旨在简化大语言…...
《Redis4.0数据持久化》
【redis持久化导读】Redis作为一款高性能的内存数据库,支持key-value键值对的形式存储数据,为业务层提供了高效的数据查询能力,但大家有思考过一个问题没?假如redis服务所在的主机突然挂了,那么之前缓存在内存的数据是…...
如何利用Docker和.NET Core实现环境一致性、简化依赖管理、快速部署与扩展,同时提高资源利用率、确保安全性和生态系统支持
目录 1. 环境一致性 2. 简化依赖管理 3. 快速部署与扩展 4. 提高资源利用率 5. 确保安全性 6. 生态系统支持 总结 使用 Docker 和 .NET Core 结合,可以有效地实现环境一致性、简化依赖管理、快速部署与扩展,同时提高资源利用率、确保安全性和生态…...
前端js高级25.1.30
原型:函数的组成结构 通过这个图我们需要知道。 假设我们创建了一个Foo函数。 规则:Function.protoType是函数显示原型。__proto__是隐式对象。 Function、Object、Foo函数的__proto__指向了Function.protoType说明。这三个都依托function函数来创建。…...
C语言打印输出星号图形(三角形、菱形、漏斗)
文章目录 1. 介绍2. 案例分析3. 漏斗型4. 直角三角形4.1 左上直角三角形4.2 右上直角三角形4.3 左下直角三角形4.4 右下直角三角形 5. 等腰三角形5.1 正等腰三角形5.2 倒等腰三角形 6. 平行四边形6.1 纵向左下平行四边形6.2 纵向左上平行四边形6.3 横向左上平行四边形6.4 横向左…...
litemall,又一个小商场系统
litemall Spring Boot后端 Vue管理员前端 微信小程序用户前端 Vue用户移动端 代码地址:litemall: 又一个小商城。 litemall Spring Boot后端 Vue管理员前端 微信小程序用户前端 Vue用户移动端...
消费kafka消息示例
以下是使用 Java 结合 Spring Kafka 框架来监听 updated-topic-test 这个 Kafka Topic 的详细实现步骤及代码示例,用于捕获人员信息变更的事件。 1. 添加依赖 在 pom.xml 文件中添加 Spring Kafka 相关依赖: <dependencies><!-- Spring Boot…...
ShardingSphere--03--SpringBoot整合案例
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 SpringBoot整合案例1.建表2.nacos 配置ShardingSphere 规则3.java 依赖4.sql5.java 代码 SpringBoot整合案例 1.建表 CREATE TABLE t_audience_customer_0 (audid …...
K8S运行时切换-从Docker到Containerd的切换实战
1. 切换的原因 性能提升:Containerd通过减少抽象层提升了整体性能。 安全性增强:它提供了更直接的系统调用,减少了潜在的安全风险。 简化架构:Containerd拥有更简洁的设计,使得维护和故障排除更为容易。 官方支持趋…...
C# yield 关键字
前言 在 C# 中,yield 关键字是一个非常独特且强大的语言特性,它主要用于迭代器块(Iterator Block)中,能够让开发者以一种简洁高效的方式实现自定义的可迭代类型,轻松地生成并返回一个序列的值ÿ…...
软件设计模式
目录 一.创建型模式 抽象工厂 Abstract Factory 构建器 Builder 工厂方法 Factory Method 原型 Prototype 单例模式 Singleton 二.结构型模式 适配器模式 Adapter 桥接模式 Bridge 组合模式 Composite 装饰者模式 Decorator 外观模式 Facade 享元模式 Flyw…...
【Leetcode 每日一题 - 补卡】922. 按奇偶排序数组 II
问题背景 给定一个非负整数数组 n u m s nums nums, n u m s nums nums 中一半整数是 奇数 ,一半整数是 偶数 。 对数组进行排序,以便当 n u m s [ i ] nums[i] nums[i] 为奇数时, i i i 也是 奇数 ;当 n u m s [ …...
Redis缓存穿透、击穿、雪崩介绍以及解决方案
一、缓存穿透 1.1 什么是缓存穿透? 指的是,外部进来的请求,查询一个不存在的数据。Redis中没有,数据库中也没有,这时候如果外部恶意大量请求,所有请求会直接查询数据库,导致数据库崩溃 1.2 解决…...
Django框架丨从零开始的Django入门学习
Django 是一个用于构建 Web 应用程序的高级 Python Web 框架,Django是一个高度模块化的框架,使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能…...
AI绘画:解锁商业设计新宇宙(6/10)
1.AI 绘画:商业领域的潜力新星 近年来,AI 绘画技术以惊人的速度发展,从最初简单的图像生成,逐渐演变为能够创造出高度逼真、富有创意的艺术作品。随着深度学习算法的不断优化,AI 绘画工具如 Midjourney、Stable Diffu…...
.net的一些知识点
1.public,protected,private的区别 从访问权限来说是 public>protecd>private 翻译成汉字:公有的>受保护的>私有的 但是在拿那种旧版本(2017及之前)的vs创建class的时候,这个类是没有修饰符的。现在vs2022版本创建带了默认修饰符&#x…...
【Docker】——安装Docker以及解决常见报错
🎼个人主页:【Y小夜】 😎作者简介:一位双非学校的大二学生,编程爱好者, 专注于基础和实战分享,欢迎私信咨询! 🎆入门专栏:🎇【MySQL࿰…...
Linux环境部署DeepSeek大模型
一、背景 【DeepSeek 深度求索】这个春节给了世界一个重磅炸弹,弄得美国都睡不好觉。这次与以往不同,之前我们都是跟随着美国的AI人工智能,现在DeepSeek通过算法上的优化,大大降低了训练模型所需的成本以及时间,短期造…...
Java 面试真题
本题适合一到三年 Java 开发 ,以下问题都是按照原面试官提问记录 文章目录 我要进大厂系列面试题二面 我要进大厂系列面试题 全部真题,欢迎投稿你的面试经验。 本篇涉及基础较多,但要耐性看完。 JVM内存模型垃圾回收器用的哪个gc各个算法…...
Electron使用WebAssembly实现CRC-8 MAXIM校验
Electron使用WebAssembly实现CRC-8 MAXIM校验 将C/C语言代码,经由WebAssembly编译为库函数,可以在JS语言环境进行调用。这里介绍在Electron工具环境使用WebAssembly调用CRC-8 MAXIM格式校验的方式。 CRC-8 MAXIM校验函数WebAssembly源文件 C语言实现C…...
(一)DeepSeek大模型安装部署-Ollama安装
大模型deepseek安装部署 (一)、安装ollama curl -fsSL https://ollama.com/install.sh | sh sudo systemctl start ollama sudo systemctl enable ollama sudo systemctl status ollama(二)、安装ollama遇到网络问题,请手动下载 ollama-linux-amd64.tgz curl -L …...
Unity游戏(Assault空对地打击)开发(6) 鼠标光标的隐藏
前言 鼠标光标在游戏界面太碍眼了,要隐藏掉。 详细操作 新建一个脚本HideCursor,用于隐藏/取消隐藏光标。 写入以下代码。 意义:游戏开始自动隐藏光标,按Esc(隐藏<-->显示)。 using System.Collectio…...
蓝桥杯python基础算法(2-1)——排序
目录 一、排序 二、例题 P3225——宝藏排序Ⅰ 三、各种排序比较 四、例题 P3226——宝藏排序Ⅱ 一、排序 (一)冒泡排序 基本思想:比较相邻的元素,如果顺序错误就把它们交换过来。 (二)选择排序 基本思想…...
算法随笔_36: 复写零
上一篇:算法随笔_35: 每日温度-CSDN博客 题目描述如下: 给你一个长度固定的整数数组 arr ,请你将该数组中出现的每个零都复写一遍,并将其余的元素向右平移。 注意:请不要在超过该数组长度的位置写入元素。请对输入的数组 就地 进行上述修改…...
基于springboot的体质测试数据分析及可视化设计
作者:学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等 文末获取“源码数据库万字文档PPT”,支持远程部署调试、运行安装。 项目包含: 完整源码数据库功能演示视频万字文档PPT 项目编码࿱…...
知识蒸馏教程 Knowledge Distillation Tutorial
来自于:Knowledge Distillation Tutorial 将大模型蒸馏为小模型,可以节省计算资源,加快推理过程,更高效的运行。 使用CIFAR-10数据集 import torch import torch.nn as nn import torch.optim as optim import torchvision.tran…...
排序算法--选择排序
选择排序虽然简单,但时间复杂度较高,适合小规模数据或教学演示。 // 选择排序函数 void selectionSort(int arr[], int n) {for (int i 0; i < n - 1; i) { // 外层循环控制当前最小值的存放位置int minIndex i; // 假设当前位置是最小值的索引// 内…...
视频融合平台EasyCVR无人机场景视频压缩及录像方案
安防监控视频汇聚EasyCVR平台在无人机场景中发挥着重要的作用,通过高效整合视频流接入、处理与分发等功能,为无人机视频数据的实时监控、存储与分析提供了全面支持,广泛应用于安防监控、应急救援、电力巡检、交通管理等领域。 EasyCVR支持GB…...
【react-redux】react-redux中的 useDispatch和useSelector的使用与原理解析
一、useSelector 首先,useSelector的作用是获取redux store中的数据。 下面就是源码,感觉它的定义就是首先是createSelectorHook这个方法先获得到redux的上下文对象。 然后从上下文对象中获取store数据。然后从store中得到选择的数据。 2、useDispatc…...