发表于: 2017-12-22 21:48:44

1 680


今天完成的事情:

表格的分页查询,姓名模糊查询,以及页面跳转.还有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>&nbsp;&nbsp;
           <span>总记录数:${requestScope.pagemsg.totalCount }&nbsp;&nbsp;每页显示:${requestScope.pagemsg.pageSize}</span>&nbsp;&nbsp;
           <span>
      <c:if test="${requestScope.pagemsg.currPage != 1}">
<a href="${pageContext.request.contextPath }/student/index?currentPage=1">[首页]</a>&nbsp;&nbsp;
          <a href="${pageContext.request.contextPath }/student/index?currentPage=${requestScope.pagemsg.currPage-1}">[上一页]</a>&nbsp;&nbsp;
      </c:if>

<c:if test="${requestScope.pagemsg.currPage != requestScope.pagemsg.totalPage}">
<a href="${pageContext.request.contextPath }/student/index?currentPage=${requestScope.pagemsg.currPage+1}">[下一页]</a>&nbsp;&nbsp;
          <a href="${pageContext.request.contextPath }/student/index?currentPage=${requestScope.pagemsg.totalPage}">[尾页]</a>&nbsp;&nbsp;
      </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是搞清楚了的.


返回列表 返回列表
评论

    分享到