下一页,尾页等无效
<%@ 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;
}
}

点下一页,尾页等均显示第一页,pageStr是有值的,我觉得会不会是JS 没有起作用,没有更改page的值。
谢谢老师
正在回答
1、使用
resultSet.getInt("total");前一定要加上resultSet.next();,虽然同学知道就一个,但是程序不知道呦,
否则会报错:

就好像,如果你知道数组中只有一个数字,那也不能直接去打印这个数组,而是用索引或者遍历去取。
2、在本案例中没有用到jQ 的代码,所以可以不用引用。用js的就够了。
如果我的回答解决了你的问题,请采纳,祝学习愉快.
找到了问题所在。将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(),这个?
- 参与学习 人
- 提交作业 277 份
- 解答问题 4297 个
Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星