下一页,尾页等无效

下一页,尾页等无效

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt_rt" %>
<html>
   <head>
       <meta charset="UTF-8">
       <title>留言板</title>
       <link rel="stylesheet" href="${basePath}/css/index.css">
       <script src="sourse/jquery-3.3.1.js"></script>
       <script type="text/javascript">
           function submitMessageForm(flag) {
               if ('first' == flag) {
                   document.getElementById('page').value = 1;
               } else if ('pre' == flag) {
                   var current = Number(document.getElementById('page').value);
                   if (current > 1) {
                       document.getElementById('page').value = current - 1;
                   }
               } else if ('next' == flag) {
                   var current = Number(document.getElementById('page').value);
                   var last = Number(document.getElementById('last').value);
                   if (current < last) {
                       document.getElementById('page').value = current + 1;

                   }
               } else if ('last' == flag) {
                   var last = Number(document.getElementById('last').value);
                   document.getElementById('page').value = last < 1 ? 1 : last;
               }
               document.getElementById('messageForm').submit();
           }
       </script>
   </head>

   <body>
       <header>
           <div class="container">
               <% if (null != request.getSession().getAttribute("user")) {%>
                   <nav>
                       <a href="/my/message/list.do">我的留言</a>
                   </nav>
                   <nav>
                       <a href="/userInfo.do">我的信息</a>
                   </nav>
               <%} else { %>
                   <nav>
                       <a href="/login.do">登录</a>
                       <a href="/regPrompt.do">注册</a>
                   </nav>
               <% } %>
           </div>
       </header>
       <section class="banner">
           <div class="container">
               <div>
                   <h1>慕课网留言板</h1>
                   <p>慕课网是垂直的互联网IT技能免费学习网站。以独家视频教程、在线编程工具、学习计划、问答社区为核心特色。在这里,你可以找到最好的互联网技术牛人,也可以通过免费的在线公开视频课程学习国内领先的互联网IT技术。 </p>
               </div>
           </div>
       </section>
       <section class="main">
           <div class="container">
               <c:forEach items="${messages}" var="msg">
                   <div class="alt-item">
                       <div class="alt-head">
                           <div class="alt-info">
                               <span>作者:<a href="">${msg.user_name}</a></span>
                               <span>时间:<fmt:formatDate pattern="yyyy-MM-dd HH:mm:ss" value="${msg.createTime}"/></span>
                           </div>
                       </div>
                       <div class="alt-content">
                           <h3>${msg.title}</h3>
                           <p>${msg.content}</p>
                       </div>
                   </div>
               </c:forEach>
           </div>
       </section>
       <section class="page">
           <div class="container">
               <% if (null != request.getSession().getAttribute("user")) {%>
                   <div id="fatie">
                       <a href="/addMessagePrompt.do"><button>点我留言</button></a>
                   </div>
               <%} else { %>
                   <div id="fatie">
                       请<a href="/login.do"><button>登录</button></a>后留言
                   </div>
               <% } %>


               <div id="pagefy">
                   <ul>
                       <form id="messageForm" action="${basePath}/welcomeServlet" method="post">
                           <input type="hidden" id="page" name="page" value="${page}">
                           <input type="hidden" id="last" name="last" value="${last}">
                           <li><a href="javascript:void(0)" onclick="submitMessageForm('first')">首页</a></li>
                           <li><a href="javascript:void(0)" onclick="submitMessageForm('pre')">上一页</a></li>
                           <li><a href="javascript:void(0)">当前第${page}页</a></li>
                           <li><a href="javascript:void(0)" onclick="submitMessageForm('next')">下一页</a></li>
                           <li><a href="javascript:void(0)" onclick="submitMessageForm('last')">尾页</a></li>
                       </form>
                   </ul>
               </div>
           </div>
       </section>
       <footer>
           copy@慕课网
       </footer>
   </body>
</html>



package messageboraddemo.servlet;

import messageboraddemo.bean.Message;
import messageboraddemo.dao.MessageRead;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Objects;


public class welcomeServlet extends HttpServlet {

   @Override
   protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       if(Objects.equals(req.getServletPath(),"/welcomeServlet")){
           int page =1;
           String pageStr = req.getParameter("page");
           System.out.println(pageStr);
           if(null!=pageStr && (!"".equals(pageStr))){
               try{
                   page = Integer.valueOf(pageStr);
               }catch (Exception e){
                   e.printStackTrace();
               }
           }
           int count = MessageRead.getMessageCount();
           int last = count%5 ==0 ? (count%5):(count/5+1);
           req.setAttribute("last",last);
           req.setAttribute("page",page);
           req.setAttribute("messages", MessageRead.getMessage(page,5));
           req.getRequestDispatcher("/WEB-INF/views/biz/message_list.jsp").forward(req,resp);
       }else{
            System.out.println("cuowu");
           }
   }


}



package messageboraddemo.dao;

import messageboraddemo.bean.Message;
import messageboraddemo.common.CommonUntil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;


public class MessageRead {

   public static List<Message> getMessage(int page ,int pageSize){
       Connection connection = null;
       PreparedStatement preparedStatement =null;
       ResultSet resultSet = null;
       List<Message> messageList = new ArrayList<>();
       try {
           connection = CommonUntil.getConnection();
           String sql = "SELECT * FROM message limit ?,?";
           preparedStatement = connection.prepareStatement(sql);
           preparedStatement.setInt(1,(page-1)*pageSize);
           preparedStatement.setInt(2,pageSize);
           resultSet = preparedStatement.executeQuery();
           while(resultSet.next()){
               Message message = new Message(resultSet.getInt("id"),resultSet.getInt("user_id"),
                       resultSet.getString("user_name"),resultSet.getString("title"),
                       resultSet.getString("content"),resultSet.getTimestamp("createtime"));
               messageList.add(message);
           }
       }catch (Exception e){
           e.printStackTrace();
       }finally {
           CommonUntil.relase(connection,preparedStatement,resultSet);
       }
       return messageList;

   }
   public static int getMessageCount(){
       Connection connection = null;
       PreparedStatement preparedStatement =null;
       ResultSet resultSet = null;
       int total =0;
       try {
           connection = CommonUntil.getConnection();
           String sql = "SELECT count(*) total FROM message ";
           preparedStatement = connection.prepareStatement(sql);
           resultSet = preparedStatement.executeQuery();
           total = resultSet.getInt("total");
           System.out.println("total="+total);
       }catch (Exception e){
           e.printStackTrace();
       }finally {
           CommonUntil.relase(connection,preparedStatement,resultSet);
       }
       return total;

   }
}


http://img1.sycdn.imooc.com//climg/5c700e120001420e04680474.jpg


点下一页,尾页等均显示第一页,pageStr是有值的,我觉得会不会是JS 没有起作用,没有更改page的值。

谢谢老师


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

1、使用

resultSet.getInt("total");前一定要加上resultSet.next();,虽然同学知道就一个,但是程序不知道呦,

否则会报错:

http://img1.sycdn.imooc.com//climg/5c720bd7000139e806480170.jpg

就好像,如果你知道数组中只有一个数字,那也不能直接去打印这个数组,而是用索引或者遍历去取。

2、在本案例中没有用到jQ 的代码,所以可以不用引用。用js的就够了。

如果我的回答解决了你的问题,请采纳,祝学习愉快.

提问者 慕斯4002519 2019-02-23 11:59:57

找到了问题所在。将MessageRead 中 获取信息数量,

原来为:

connection = CommonUntil.getConnection();
String sql = "SELECT count(*) total FROM message ";
preparedStatement = connection.prepareStatement(sql);
resultSet = preparedStatement.executeQuery();
total = resultSet.getInt("total");

改为:

connection = CommonUntil.getConnection();
String sql = "SELECT count(*) total FROM message ";
preparedStatement = connection.prepareStatement(sql);
resultSet = preparedStatement.executeQuery();
while(resultSet.next()){
   total = resultSet.getInt("total");
}

问题就解决了

可是为什么我只需要一个total的值,还需要使用resultSet.net(),这个?

  • 提问者 慕斯4002519 #1
    还有一个问题,之前使用js的时候需要引入 <script src="sourse/jquery-3.3.1.js"></script>这个代码 但是现在删除了也能生效是为什么?
    2019-02-23 12:03:29
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Java数据库开发与实战应用2018版
  • 参与学习           人
  • 提交作业       277    份
  • 解答问题       4297    个

Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师