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

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-config
    xmlns="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)
    //初始化下list
    console.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和框架内置方法。


http://www.kler.cn/a/535256.html

相关文章:

  • 凝思60重置密码
  • vs code 使用教程
  • 自定义多功能输入对话框:基于 Qt 打造灵活交互界面
  • Gcc缺省使用的C/C++版本
  • 107,【7】buuctf web [CISCN2019 华北赛区 Day2 Web1]Hack World
  • DeepSeek R1 x ApiSmart
  • C语言之函数指针
  • wait/notify/join/设计模式
  • 无人机动力套(电机、电调)技术详解
  • mysql8的并行复制介绍
  • Git 远程仓库的操作与协作
  • 离散浣熊优化算法(DCOA)求解大规模旅行商问题(Large-Scale Traveling Salesman Problem,LTSP),MATLAB代码
  • 基于Typescript,使用Vite构建融合Vue.js的Babylon.js开发环境
  • 2025年Android NDK超全版本下载地址
  • Pycharm 2024版本出现 We could not validate your license怎么办?解决方法一步到位!
  • 疯狂SQL转换系列- SQL for Milvs2.4
  • GD32F4xx系列微控制器中,定时器可以配置为霍尔传感器模式,用于处理霍尔传感器的输出信号
  • GNN多任务预测模型实现(二):将EXCEL数据转换为图数据
  • 数据实时推送至前端的主流方法总结
  • 为何实现大语言模型的高效推理以及充分释放 AI 芯片的计算能力对于企业级落地应用来说,被认为具备显著的研究价值与重要意义?
  • 面向对象程序设计-实验1
  • 快速单机部署ollama v0.5.7 +openwebui(免去网络环境干扰)
  • 【后端开发】系统设计101——Devops,Git与CICD,云服务与云原生,Linux,安全性,案例研究(30张图详解)
  • 下标为3的倍数
  • 解锁C#数据校验:从基础到实战的进阶之路
  • 日志模块自定义@SkipLogAspect注解跳过切面