发表于: 2017-12-22 21:48:44
1 682
今天完成的事情:
表格的分页查询,姓名模糊查询,以及页面跳转.还有mac上svn的客户端的使用..好吧,mac上真的很多东西都得重新学习.
恩,这是登陆页面..留给以后做登陆用,先临时搞一个吧.
进入页面
代码这块儿
首先我们需要再定义一个bean类用于存放分页所需要的各种数据.
在服务器进行SQL分页查询的语句:
<!--分页查询-->
<!-- 根据分页数据start 和size查询数据 -->
<select id="findByPage" parameterType="Map" resultType="Student">
select * FROM `student`
<if test="start!=null and size!=null">
limit #{start},#{size}
</if>
</select>
<!-- 查询用户记录总数 -->
<select id="selectCount" resultType="_int">
select count(*) from `student`
</select>
需要定义查询的2个基本字段,查询的起始坐标start以及查询的个数size
查询记录总数用于确定一共有多少页.
所以PageBean需要这样定义:
package com.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author Arike
* Create_at 2017/12/22 10:29
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Repository
public class PageBean<T> {
private int currPage;//当前页数
private int pageSize;//每页显示的记录数
private int totalCount;//总记录数
private int totalPage;//总页数
private List<T> lists;//每页接收的数据
private List<StudentPut> list;//每页显示的数据
}
还是老话,因为我的面向数据库和面向页面的是2个类,所以我这里定义了2个变量.
service层面:
@Override
public PageBean<Student> findByPage(int currentPage) {
HashMap<String, Object> map = new HashMap<>();
PageBean<Student> pageBean = new PageBean<>();
//封装当前页数
pageBean.setCurrPage(currentPage);
//每页显示数据
int pageSize=6;
pageBean.setPageSize(pageSize);
//封装记录总数
int totalCount = selectCount();
pageBean.setTotalCount(totalCount);
//封装总页数
double tc = totalCount;
Double num =Math.ceil(tc/pageSize);//向上取整
pageBean.setTotalPage(num.intValue());
map.put("start", (currentPage - 1) * pageSize);//你从第几个开始查
map.put("size", pageBean.getPageSize());//查多少个
//封装每页接收的数据
List<Student> list = iStudentDao.findByPage(map);
pageBean.setLists(list);
//封装每页显示的数据
List<StudentPut> list1 = new ArrayList<>();
for (Student student : list) {
list1.add(ChangeUtil.timeChange(student));
}
pageBean.setList(list1);
return pageBean;
}
Controller 对应的方法
/**
* 分页查询
* @param currentPage 当前页数
* @param model 传递给页面的模型对象
* @return 返回index主页
*/
@RequestMapping(value = "/student/index",method = RequestMethod.GET)
public String index(@RequestParam(value="currentPage",defaultValue="1",required=false)int currentPage, Model model){
long begin = System.currentTimeMillis();
model.addAttribute("pagemsg", servicelmpl.findByPage(currentPage));//回显分页数据
logger.info("查询耗时:" + ((double) (System.currentTimeMillis() - begin)) / 1000 + "秒");
return "index";
}
对应的jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>主页</title>
<style type="text/css">
td{text-align: center;}
.td2{text-align: right;}
.table1{
border:1px solid #ddd;
}
thead{
background-color:lightblue;
}
</style>
</head>
<body>
<font size="7">欢迎:修真院的基佬们</font>
<br>
<%-- 当前用户:${pageScope.currentUser}<!-- (只能在同一个页面中使用) --> <br>
当前用户:${requestScope.currentUser}-${roleName} 有重定向数据就访问不到<br>
当前用户:${sessionScope.currentUser}-${roleName} 可以使用<br> --%>
<hr>
<br>
<c:if test="${empty requestScope.pagemsg}">
没有任何用户信息!
</c:if>
<c:if test="${!empty requestScope.pagemsg}">
<table border="1" cellpadding="10" cellspacing="0" class="table1" width="1300px">
<thead>
<tr>
<td>ID</td>
<td>学生姓名</td>
<td>QQ号码</td>
<td>修真专业</td>
<td>毕业院校</td>
<td>在线学号</td>
<td>日报链接</td>
<td>辅导师兄</td>
<td>从哪里知道修真院</td>
<td>学习愿望</td>
<td>预计到校时间</td>
<td>修改</td>
<td>删除</td>
</tr>
</thead>
<c:forEach items="${requestScope.pagemsg.list}" var="s">
<tr>
<th>${s.id }</th>
<th>${s.name}</th>
<th>${s.QQ}</th>
<th>${s.major }</th>
<th>${s.gra_school }</th>
<th>${s.online_id}</th>
<th>${s.daily_link}</th>
<th>${s.bro}</th>
<th>${s.know_from}</th>
<th>${s.desire}</th>
<th>${s.entry_time}</th>
<th>
<form method="post" action="${pageContext.request.contextPath}/student/${s.id}"> <%-- <input type="hidden" name="_method" value="PUT">--%>
<input type="submit" value="修改"/>
</form>
</th>
<th>
<form method="post" action="${pageContext.request.contextPath}/student/${s.id}">
<input type="hidden" name="_method" value="DELETE">
<input type="submit" value="删除"/>
</form>
</th>
</tr>
</c:forEach>
</table>
</c:if>
<table border="0" cellspacing="0" cellpadding="0" width="1150px">
<tr>
<td>
<form method="get" action="${pageContext.request.contextPath}/student/name">
输入姓名进行查询
<input type="text" name="name" >
<input type="submit" value="查询" >
</form>
</td>
<td>
<form method="post" action="${pageContext.request.contextPath}/jsps/add.jsp">
<input type="submit" value="点击新增学生" >
</form>
</td>
<td class="td2">
<span>第${requestScope.pagemsg.currPage }/ ${requestScope.pagemsg.totalPage}页</span>
<span>总记录数:${requestScope.pagemsg.totalCount } 每页显示:${requestScope.pagemsg.pageSize}</span>
<span>
<c:if test="${requestScope.pagemsg.currPage != 1}">
<a href="${pageContext.request.contextPath }/student/index?currentPage=1">[首页]</a>
<a href="${pageContext.request.contextPath }/student/index?currentPage=${requestScope.pagemsg.currPage-1}">[上一页]</a>
</c:if>
<c:if test="${requestScope.pagemsg.currPage != requestScope.pagemsg.totalPage}">
<a href="${pageContext.request.contextPath }/student/index?currentPage=${requestScope.pagemsg.currPage+1}">[下一页]</a>
<a href="${pageContext.request.contextPath }/student/index?currentPage=${requestScope.pagemsg.totalPage}">[尾页]</a>
</c:if>
</span>
跳转
<td>
<form method="get" action="${pageContext.request.contextPath}/student/index?">
<input type="text" name="currentPage" size="3"/>
</form>
</td>
<td>页</td>
</tr>
</table>
</body>
</html>
jsp页面这里还有几个东西我没有搞懂,就明天的日报里一起总结.
模糊查询:
/**
* 通过姓名模糊查询
* @param name 从页面接收传入的姓名
* @param model 传递给页面显示的模型对象
* @return 跳转到name查询页面
*/
@RequestMapping(value = "/student/name",method = RequestMethod.GET)
public String name(String name,Model model){
long begin = System.currentTimeMillis();
List<Student> list = servicelmpl.getStudentByName(name);
logger.info("模糊查询耗时:" + ((double) (System.currentTimeMillis() - begin)) / 1000 + "秒");
List<StudentPut> list1 = new ArrayList<>();
for (Student student1 : list) {
list1.add(ChangeUtil.timeChange(student1));
}
model.addAttribute("nameList", list1);
return "name";
}
模糊查询很简单,使用的返回页面其实和主页的查询很相似,只是把对象换为查询的这个集合而已.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>主页</title>
<style type="text/css">
td{text-align: center;}
.td2{text-align: right;}
.table1{
border:1px solid #ddd;
}
thead{
background-color:lightblue;
}
</style>
</head>
<body>
<font size="7">欢迎:修真院的基佬们</font>
<br>
<%-- 当前用户:${pageScope.currentUser}<!-- (只能在同一个页面中使用) --> <br>
当前用户:${requestScope.currentUser}-${roleName} 有重定向数据就访问不到<br>
当前用户:${sessionScope.currentUser}-${roleName} 可以使用<br> --%>
<hr>
<br>
<c:if test="${empty requestScope.nameList}">
<font size="7" >没有任何用户信息!</font>
</c:if>
<c:if test="${!empty requestScope.nameList}">
<table border="1" cellpadding="10" cellspacing="0" class="table1">
<thead>
<tr>
<td>ID</td>
<td>学生姓名</td>
<td>QQ号码</td>
<td>修真专业</td>
<td>毕业院校</td>
<td>在线学号</td>
<td>日报链接</td>
<td>辅导师兄</td>
<td>从哪里知道修真院</td>
<td>学习愿望</td>
<td>预计到校时间</td>
<td>修改</td>
<td>删除</td>
</tr>
</thead>
<c:forEach items="${requestScope.nameList}" var="s">
<tr>
<th>${s.id }</th>
<th>${s.name}</th>
<th>${s.QQ}</th>
<th>${s.major }</th>
<th>${s.gra_school }</th>
<th>${s.online_id}</th>
<th>${s.daily_link}</th>
<th>${s.bro}</th>
<th>${s.know_from}</th>
<th>${s.desire}</th>
<th>${s.entry_time}</th>
<th>
<form method="post" action="${pageContext.request.contextPath}/student/${s.id}"> <%-- <input type="hidden" name="_method" value="PUT">--%>
<input type="submit" value="修改"/>
</form>
</th>
<th>
<form method="post" action="${pageContext.request.contextPath}/student/${s.id}">
<input type="hidden" name="_method" value="DELETE">
<input type="submit" value="删除"/>
</form>
</th>
</tr>
</c:forEach>
</table>
</c:if>
</body></html>
今天晚上还开了3个小时的周会,对前端页面的8个作用域对象有了一点了解,打算之后再深入一波.收入颇丰.
明天计划的事情:
进行小课堂和任务3.
遇到的问题:null
收获:
学会了如何做分页查询,虽然在jsp页面这块儿有一点没看懂,但是在java层面的逻辑以及mybaits是搞清楚了的.
评论