spring+springMVC+mybatis的整合 part10

简介: 可以设置其他的页码和条数测试,均可以通过,所以分页的接口已经完成。单独拿出一个页面来实现其实分页列表也没什么,重点在于做出列表局部刷新,减少页面请求。具体的流程图如下:按照上图中,可以看到我们只需要把上一页和下一页的ajax调用写好就能完成我们这个简单分页的网络请求。

可以设置其他的页码和条数测试,均可以通过,所以分页的接口已经完成。单独拿出一个页面来实现

其实分页列表也没什么,重点在于做出列表局部刷新,减少页面请求。
具体的流程图如下:


按照上图中,可以看到我们只需要把上一页和下一页的ajax调用写好就能完成我们这个简单分页的网络请求。 至于第一页和最后一页的按钮事件也就是把页码设定为1和最后一页。
下一页的js调用:

var pageNum;
    function goToNextPage() {
        pageNum = parseInt(pageNum) + 1;//这里必须用parseInt(pageNum)这样才能拿到int型值,否则这里拿出来的是字符串
        $.ajax({
            type: "GET",//后端分页接口这里是没有指定请求方式
            url: '/actionLog/findLogList?pageNum=' + pageNum + '&pageSize=15',
            dataType: 'json', 
            cache: false,
            success: function (data) {
                if (data.code == 1) {
                    updateList(data);//更新列表界面
                    pageNum = data.pageNum;
                    $("#log-controller-now").html(pageNum);//把当前页面输出到网页对应ID的标签上面
                }
            }
        });
    }

从上面可以看到,分页列表的请求变化的是页码,然后每一页长度是固定的,然后拿到返回的数据进行加载就行了。

既然上面已经看到了下一页的界面数据加载了,
同理我们可以得出上一页的的js调用如下:

function goToLastPage() {
        pageNum = parseInt(pageNum) - 1;
        $.ajax({
            type: "GET",
            url: '/actionLog/findLogList?pageNum=' + pageNum + '&pageSize=15',
            dataType: 'json', 
            cache: false,
            success: function (data) {
                if (data.code == 1) {
                    updateList(data);
                    pageNum = data.pageNum;
                    $("#log-controller-now").html(pageNum);
                }
            }
        });
    }

js写出来,下面需要把网页数据加载进去
需要使用模版进行网页数据的加载。
在这里我们需要引入模版的js,js名称是:doT.min.js
从上面的上一页和下一页访问的js方法中,我们可以看到都使用了updateList(data)这个方法,这个方法就是来加载界面的
引入js后,我们需要开始写网页代码了

<div class="am-scrollable-horizontal am-text-ms" style="font-family: '微软雅黑';">
    <table class="am-table   am-text-nowrap">
        <thead>
            <tr>
                <th>id</th>
                <th>IP地址</th>
                <th>系统名称</th>
                <th>访问地址</th>
                <th>SessionId</th>
                <th>浏览器名</th>
            </tr>
        </thead>
        <tbody id="log-table-body">
            <script id="pagetmpl" type="text/x-dot-template">   <%--//这里js的ID为模版的id,type这个位模版类型--%>
                {{for(var i=0; i < it.length ; i++){ }} 
                    <tr>
                        <%--这里取得全是json中的字段名称--%>
                        <td> {{=it[i].id}}</td> 
                        <td>{{=it[i].ipAddrV4}}</td>
                        <td>{{=it[i].osName}}</td>
                        <td><span class="label label-danger"> {{ =it[i].description }} </span></td>
                        <td>{{=it[i].sessionId}}</td>
                        <td>{{=it[i].broName}}</td>
                    </tr>
                {{ } }}
            </script>
        </tbody>
    </table>
    <div class="am-cf">
        <div class="am-fr">
            <ul class="am-pagination tpl-pagination" id="log-table-page-controller">
                <li><a id="log-controller-last" onclick='goToLastPage()'>上一页</a></li>
                <li class="am-disabled"><a id="log-controller-now">1</a></li>
                <li><a id="log-controller-next" onclick="goToNextPage()">下一页</a></li>
            </ul>
        </div>
    </div>
</div>

我们知道应该怎么追加列表条目了,现在我们需要的是实现追加。按照代码结构观察我们可以发现,我们要想实现数据自动装载到页面上面,我们需要让程序顺序执行就对了。

<%--这一点js我们写在网页的body后面,因为我们网页的列表数据是异步加载的。所以让他直接执行就好了--%>
<script type="application/javascript">
    $.ajax({
        type: "GET",
        url: '<%=request.getContextPath()%>/actionLog/findLogList?pageNum=1&pageSize=15',
        dataType: 'json', //当这里指定为json的时候,获取到了数据后会自己解析的,只需要 返回值.字段名称 就能使用了
        cache: false,
        success: function (data) {
            if (data.code == 1) {
                pagefn = doT.template($("#pagetmpl").html());   //初始化列表模板
                updateList(data);   //更新数据
                pageNum = data.pageNum;
            }
        }
    });

    function updateList(data) {
        $("#pagetmpl").empty(); //清空模板数据
        $("#log-table-body").html(pagefn(data.data));   //加入数据到模板
    }

</script>

前面我们的JS是写在头部的,如果说自动执行肯定会找不到控件,所以我们需要让自动加载在页面完成后加载。也就是在</body>后加上

可能有人会发现我获取到的IPV4地址是0:0:0:0:0:0:0:1
这代码的问题只会出现在本机访问服务,获取ip时才会出现。而且如果你本机通过localhost127.0.0.1本机真实地址访问时获取到的ip也有区别
如果你把localhost改成127.0.0.1的话获取到的IP地址就是127.0.0.1,如果换成localhost获取到的就是0:0:0:0:0:0:0:1
然后我们在MainController中让页面可以跳转到行为日志表中

/*
    *日志主页
    */
    @GetMapping("/listActionLog")
    public String listActionLog() {
        return "list_action_log";
    }

下面我们可以测试下,登录后输入http://localhost:8080/ssm/mvc/listActionLog
跳转到行为日志表页面

Paste_Image.png

也许有人会问,URL中的ssm哪来的?
这个是在项目部署的时候配置的,可以看part2
至此 spring+springMVC+mybatis的简单整合基本结束
项目github地址:https://github.com/JinBinPeng/spring-springMVC-mybatis

主要参考于大牛Clone丶记忆的SSM集成之路

目录
相关文章
|
12天前
|
SQL JavaScript Java
Spring Boot 3 整合 Mybatis-Plus 实现数据权限控制
本文介绍了如何在Spring Boot 3中整合MyBatis-Plus实现数据权限控制,通过使用MyBatis-Plus提供的`DataPermissionInterceptor`插件,在不破坏原有代码结构的基础上实现了细粒度的数据访问控制。文中详细描述了自定义注解`DataScope`的使用方法、`DataPermissionHandler`的具体实现逻辑,以及根据用户的不同角色和部门动态添加SQL片段来限制查询结果。此外,还展示了基于Spring Boot 3和Vue 3构建的前后端分离快速开发框架的实际应用案例,包括项目的核心功能模块如用户管理、角色管理等,并提供Gitee上的开源仓库
107 11
|
1月前
|
设计模式 前端开发 Java
步步深入SpringMvc DispatcherServlet源码掌握springmvc全流程原理
通过对 `DispatcherServlet`源码的深入剖析,我们了解了SpringMVC请求处理的全流程。`DispatcherServlet`作为前端控制器,负责请求的接收和分发,处理器映射和适配负责将请求分派到具体的处理器方法,视图解析器负责生成和渲染视图。理解这些核心组件及其交互原理,有助于开发者更好地使用和扩展SpringMVC框架。
48 4
|
1月前
|
缓存 Java 数据库连接
深入探讨:Spring与MyBatis中的连接池与缓存机制
Spring 与 MyBatis 提供了强大的连接池和缓存机制,通过合理配置和使用这些机制,可以显著提升应用的性能和可扩展性。连接池通过复用数据库连接减少了连接创建和销毁的开销,而 MyBatis 的一级缓存和二级缓存则通过缓存查询结果减少了数据库访问次数。在实际应用中,结合具体的业务需求和系统架构,优化连接池和缓存的配置,是提升系统性能的重要手段。
92 4
|
1月前
|
SQL Java 数据库连接
spring和Mybatis的各种查询
Spring 和 MyBatis 的结合使得数据访问层的开发变得更加简洁和高效。通过以上各种查询操作的详细讲解,我们可以看到 MyBatis 在处理简单查询、条件查询、分页查询、联合查询和动态 SQL 查询方面的强大功能。熟练掌握这些操作,可以极大提升开发效率和代码质量。
105 3
|
2月前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
181 2
|
2月前
|
Java 数据库连接 数据库
spring和Mybatis的逆向工程
通过本文的介绍,我们了解了如何使用Spring和MyBatis进行逆向工程,包括环境配置、MyBatis Generator配置、Spring和MyBatis整合以及业务逻辑的编写。逆向工程极大地提高了开发效率,减少了重复劳动,保证了代码的一致性和可维护性。希望这篇文章能帮助你在项目中高效地使用Spring和MyBatis。
54 1
|
3月前
|
JSON 前端开发 Java
SSM:SpringMVC
本文介绍了SpringMVC的依赖配置、请求参数处理、注解开发、JSON处理、拦截器、文件上传下载以及相关注意事项。首先,需要在`pom.xml`中添加必要的依赖,包括Servlet、JSTL、Spring Web MVC等。接着,在`web.xml`中配置DispatcherServlet,并设置Spring MVC的相关配置,如组件扫描、默认Servlet处理器等。然后,通过`@RequestMapping`等注解处理请求参数,使用`@ResponseBody`返回JSON数据。此外,还介绍了如何创建和配置拦截器、文件上传下载的功能,并强调了JSP文件的放置位置,避免404错误。
|
3月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
473 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
3月前
|
Java 数据库连接 API
springBoot:后端解决跨域&Mybatis-Plus&SwaggerUI&代码生成器 (四)
本文介绍了后端解决跨域问题的方法及Mybatis-Plus的配置与使用。首先通过创建`CorsConfig`类并设置相关参数来实现跨域请求处理。接着,详细描述了如何引入Mybatis-Plus插件,包括配置`MybatisPlusConfig`类、定义Mapper接口以及Service层。此外,还展示了如何配置分页查询功能,并引入SwaggerUI进行API文档生成。最后,提供了代码生成器的配置示例,帮助快速生成项目所需的基础代码。
254 1
|
XML 前端开发 Java
Spring、SpringMVC和SpringBoot之间的关系
1、Spring Spring是一个开源容器框架,它接管了Web层、业务层、DAO层、持久性层的组件,并可以配置各种bean并维护bean到bean的关系。 其核心是控制反转(IOC)和面向方面(AOP),这只是一个分层的轻量级开源框架。
1137 0
Spring、SpringMVC和SpringBoot之间的关系