ajax ssm 页面跳转_ssm项目实战实现页面的局部刷新功能

本文介绍了如何在SSM项目中使用Ajax实现页面的局部刷新,包括页面切换、查询用户列表、删除、修改和新增功能。通过Ajax请求,结合SpringMVC的json转换器,实现了异步数据交互,提高了用户体验。
摘要由CSDN通过智能技术生成

好的各位小伙伴

继续学习知识了

ajax_json

咱们之前用SSM三大框架整合,实现了用户的增删改查功能.今天主要是将之前实现的用户功能,修改成 ajax 的方式,实现页面的局部刷新功能.

首先来实现一个简单的

页面切换功能

页面的代码

css 样式

js 代码

整个页面的效果

实现查询用户列表功能

ajax 请求 url 与 SpringMVC 的 url 同样能够匹配,但是 ajax 是异步刷新,不需要返回页面地址,所以一般 ajax 请求无论是集合还是字符串,都会转化成 json类型的字符串返回,然后 ajax 得到返回进行解析

springMVC 提供了 json 返回类型的转换器 MappingJackson2HttpMessageConverter

( 在springMVC中开启注解驱动会默认加上)

加入 json 解析需要的 jar 包

jackson-annotations-2.5.4.jar

jackson-core-2.5.4.jar

jackson-databind-2.5.4.jar

编写页面代码

js请求

通过 getUserListAjaxJson 返回一个 json 对象

ajax 返回的格式类型必须设置为'json'在controller方法里面可以直接返回集合或者对象 ,但是要加上 @ResponseBody 注解来标明返回一个 json对象让springmvc 调用 MappingJackson2HttpMessageConverter 转换讲集合或者对象转换成 json 字符串

解析返回的json对象显示在页面上

看一下效果

首先点击页面上的查询按钮,调用 js ,js 请求 controller 中的 getUserListAjaxJson 返回一个 json 对象,在通过 js 来解析这个 json 对象显示到页面上,最终完成我们的查询功能.

实现删除功能

先在页面上添加两个按钮修改和删除

接下来写删除的 js 代码,调用 controller 的 userDelAjaxJson

编写 controller 中的 userDelAjaxjaon,用map来装返回的对象.

删除功能效果展示:

修改功能的实现

按钮咱们已经写好了,直接写 js 代码

修改功能首先要获取用户的 userId 根据 userId 去后台数据库获取用户的信息.

把获取的信息展示到另一个页面上

获取了用户的信息之后,进行修改,修改完了数据还要进行一下保存,来写保存的js 代码

再来写一下 controller 里面的保存代码

效果展示

新增功能的实现

先来写一个添加用户的按钮

其实新增用户可以和修改用户共用一套业务逻辑,这边就不重复的了,唯一需要的就是添加一个判断功能,如果 userId 为空就是添加用户的功能,否则就是修改用户.

效果展示:

今天的分享就到这里了

小伙伴们

拜拜

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>动漫搜索</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <script type="text/javascript"> var xmlhttp; function loadXMLDoc(url,cfun) { // alert("hadhfaf"); xmlhttp=new XMLHttpRequest(); xmlhttp.onreadystatechange=cfun; xmlhttp.open("GET",url,true); xmlhttp.send(); } function myfunction(id,times) { //alert("123"); loadXMLDoc("open.jsp?id="+id+"&times="+times+"&t="+Math.random(),function() { //alert(xmlhttp.status); if(xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById(id).innerHTML=xmlhttp.responseText; } }); } </script> <% //currentPage当前显示页数 if (request.getParameter("currentPage") == null||request.getParameter("currentPage").equals("")) { pageContext.setAttribute("currentPage", new Integer(0)); } else { pageContext.setAttribute("currentPage", request .getParameter("currentPage")); } %> <sql:query var="rs" dataSource="jdbc/mysql"> select* from anime </sql:query> <!-- 得到所有记录数 --> <c:set var="resultNum"> <jsp:getProperty name="rs" property="rowCount" /> </c:set> <!-- 每页显示记录数 --> <c:set var="PerPageNum" value="3" /> </head> <style type="text/css"> body{background-color:} </style> <body> <% int perPageNum = Integer.parseInt((String) pageContext .getAttribute("PerPageNum")); int resultNum = Integer.parseInt((String) pageContext .getAttribute("resultNum")); int pageNum; //如果所有记录数除每页显示记录数没有余数-1 if((int)resultNum%perPageNum==0) pageNum = (int)(resultNum / perPageNum-1); else pageNum = (int)(resultNum / perPageNum); pageContext.setAttribute("pageNum", pageNum); %> <div style="border:1px solid #cccccc; width:1100px;margin:100px 0 0 90px"> <table style=" width:1100px;"> <tr> <td>序号</td> <td>热搜动漫</td> <td>动漫简介</td> <td>更新集数</td> <td>搜索指数</td> <td>动漫详情</td> </tr> <c:if test="${currentPage lt 0 }"><!-- 当前显示页小于0 --> <c:set var="currentPage" value="0"></c:set> </c:if> <c:if test="${currentPage gt pageNum}"><!-- 当前显示页大于总页数 --> <c:set var="currentPage" value="${pageNum }"></c:set> </c:if> <c:set var="currentPage" value="${currentPage}" scope="session" /> <!-- 循环查找记录 --> <c:forEach var="row" items="${rs.rows}" begin="${currentPage*PerPageNum}" end="${PerPageNum+currentPage*PerPageNum-1}" > <tr> <td> ${row.id }</td> <td> <img src="image/${row.image}" width="50" height="50"/></td> <td style="width:600"> ${row.introduce}</td> <td> ${row.blues} </td> <td> ${row.times }</td> <c:set var="times" value="${row.times }" scope="session" /> <td> <input type="button" value="展开" onclick="myfunction(${row.id },${row.times })"/> </td> </tr> <tr> <td colspan=6 id="${row.id}"></td> </tr> </c:forEach> </table> <div style="margin:0px 0px 0px 800px"> 总共有${pageNum+1}页-第${currentPage+1}页-<a href="index.jsp?currentPage=${currentPage-1}">上一页</a> - <a href="index.jsp?currentPage=${currentPage+1}">下一页</a> </div> </div> </body> </html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值