eclipse项目,尾页,下一页无效

eclipse项目,尾页,下一页无效

package com.imooc.jdbc.servlet;

import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.imooc.jdbc.bean.Message;
import com.imooc.jdbc.service.MessageService;
/**
 * 消息列表Servlet
 * @author gongxiaoxiao
 *
 */

public class MessageListServlet extends HttpServlet{
	
	private MessageService messageService;
	
	@Override
	public void init() throws ServletException {
		super.init();
		messageService = new MessageService();
	}
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		/**
		 * 分页功能
		 */
		String pageStr = request.getParameter("page");		//当前页码
		int page = 1;	//默认页码为1
		if (null != pageStr && (!"".equals(pageStr))) {
			try {
				page = Integer.getInteger(pageStr);
			} catch (Exception e) {
				// TODO: handle exception
			}
		}
		List<Message> messages = messageService.getMessages(page, 5);		//获得分页查询留言
		int count = messageService.countMessages();
		int last = (count % 5 == 0) ? (count / 5) : (count / 5 + 1); //最后一页是第几页
		request.setAttribute("messages", messages);
		request.setAttribute("last", last);
		request.setAttribute("page", page);
		request.getRequestDispatcher("/WEB-INF/views/biz/message_list.jsp").forward(request, response);//返回页面?
	}
	
	@Override
	public void destroy() {

		super.destroy();
		messageService = null;
	}
}

package com.imooc.jdbc.service;

import java.util.List;

import com.imooc.jdbc.bean.Message;
import com.imooc.jdbc.dao.MessageDAO;

public class MessageService {
	
	private MessageDAO messageDAO;
	
	public MessageService() {
		messageDAO = new MessageDAO();
	}
	
	/**
	 * 分页查询全部留言
	 * @param page 当前页码
	 * @param pageSize 每页记录数
	 * @return
	 */
	public List<Message> getMessages(int page, int pageSize){
			
		return messageDAO.getMessages(page, pageSize);
	}
	
	/**
	 * 计算留言总数
	 * @return
	 */
	public int countMessages(){
		
		return messageDAO.countMessages();
	}

}

package com.imooc.jdbc.dao;

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

import com.imooc.jdbc.bean.Message;
import com.imooc.jdbc.common.ConnectionUtil;

public class MessageDAO {
	/**
	 * 分页查询全部留言
	 * @param page 当前页码
	 * @param pageSize 每页记录数
	 * @return
	 */
	
public List<Message> getMessages(int page, int pageSize){
		
		Connection conn = ConnectionUtil.getConnection();
		PreparedStatement stat = null;
		ResultSet set = null;
		List<Message> messages = new ArrayList<>();
		String sql = "select * from message order by create_time desc limit ?, ?";//limit m,n 从第m条数据取一共n条记录
		try {
			stat = conn.prepareStatement(sql);
			stat.setInt(1, (page - 1)*pageSize);
			stat.setInt(2, pageSize);
			set = stat.executeQuery();
			while (set.next()) {
				messages.add(new Message(set.getLong("id"),
						set.getLong("user_id"), 
						set.getString("content"), 
						set.getString("title"), 
						set.getString("username"), 
						/*		rs.getDate()只是返回日期部分     java.sql.Date
								rs.getTime()只是返回时间部分     java.sql.Time
								rs.getTimestamp()才是返回时间和日期     java.sql.Timestamp*/
						set.getTimestamp("create_time")));
			}
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			ConnectionUtil.release(set, stat, conn);
		}
		
		return messages;
	}

	/**
	 * 计算留言总数
	 * @return
	 */
	public int countMessages() {
		Connection conn = ConnectionUtil.getConnection();
		PreparedStatement stat = null;
		ResultSet set = null;
		String sql = "select count(*) total from message";
		try {
			stat = conn.prepareStatement(sql);
			set = stat.executeQuery();
			while (set.next()) {
				return set.getInt("total");
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			ConnectionUtil.release(set, stat, conn);
		}		
		return 0;
		
	}

}

package com.imooc.jdbc.bean;

import java.sql.Date;
import java.sql.Timestamp;

public class Message {
	
	private long id;
	
	private long userId;
	
	private String content;
	
	private String title;
	
	private String username;
	
	private Timestamp createTime;
	
	public Message(long id, long userId, String content, String title, String username, Timestamp createTime) {
		this.id = id;
		this.userId = userId;
		this.content = content;
		this.title = title;
		this.username = username;
		this.createTime = createTime;
	}

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public long getUserId() {
		return userId;
	}

	public void setUserId(long userId) {
		this.userId = userId;
	}

	public String getContent() {
		return content;
	}

	public void setContent(String content) {
		this.content = content;
	}

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public Timestamp getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Timestamp createTime) {
		this.createTime = createTime;
	}
	
	

}

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>JDBCMessageBoard</display-name>
  
  <servlet>
  		<servlet-name>MessageListServlet</servlet-name>
  		<servlet-class>com.imooc.jdbc.servlet.MessageListServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  		<servlet-name>MessageListServlet</servlet-name>
  		<url-pattern>/message/list.do</url-pattern>
  </servlet-mapping>
  
  <servlet>
  		<servlet-name>LoginPromptServlet</servlet-name>
  		<servlet-class>com.imooc.jdbc.servlet.LoginPromptServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  		<servlet-name>LoginPromptServlet</servlet-name>
  		<url-pattern>/login.do</url-pattern>
  </servlet-mapping>
  
  <servlet>
  		<servlet-name>LoginServlet</servlet-name>
  		<servlet-class>com.imooc.jdbc.servlet.LoginServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  		<servlet-name>LoginServlet</servlet-name>
  		<url-pattern>/main.do</url-pattern>
  </servlet-mapping>
  
  <servlet>
  		<servlet-name>VerificationCodeImageServlet</servlet-name>
  		<servlet-class>com.imooc.jdbc.servlet.VerificationCodeImageServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  		<servlet-name>VerificationCodeImageServlet</servlet-name>
  		<url-pattern>/verificationCode.do</url-pattern>
  </servlet-mapping>
  
  <welcome-file-list>
    <welcome-file>/index.jsp</welcome-file>
  </welcome-file-list>
  <error-page>
  		<error-code>404</error-code>
  		<location>/WEB-INF/views/error/404.jsp</location>
  </error-page>
  
    <error-page>
  		<error-code>500</error-code>
  		<location>/WEB-INF/views/error/500.jsp</location>
  </error-page>
  
</web-app>

<%@ 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/jsp/jstl/fmt" %>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
    pageContext.setAttribute("basePath", basePath);
%>
<html>
    <head>
        <meta charset="UTF-8">
        <title>留言板</title>
        <link rel="stylesheet" href="${pageScope.basePath}/css/index.css">
        <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="${pageScope.basePath}/my/message/list.do">我的留言</a>
                    </nav>
                    <nav>
                        <a href="${pageScope.basePath}/userInfo.do">我的信息</a>
                    </nav>
                <%} else { %>
                    <nav>
                        <a href="${pageScope.basePath}/login.do">登录</a>
                        <a href="${pageScope.basePath}/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.username}</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="${pageScope.basePath}/addMessagePrompt.do"><button>点我留言</button></a>
                    </div>
                <%} else { %>
                    <div id="fatie">
                        请<a href="${pageScope.basePath}/login.do"><button>登录</button></a>后留言
                    </div>
                <% } %>


                <div id="pagefy">
                    <ul>
                        <form id="messageForm" action="${pageScope.basePath}/message/list.do" 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>


正在回答

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

3回答

你好同学,建议你在getMessage方法中打印page和pageSize这两个参数,看该方法中这两个参数的值是否为空,祝学习愉快~

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

  • 慕数据0284452 提问者 #1
    参数值不为空但是会报一个很奇怪的错,请看我回答的截图
    2019-02-28 20:14:26
提问者 慕数据0284452 2019-02-28 20:15:39
chrismorgen 2019-02-27 14:04:20

你好同学,请问你是导入老师的源码就是无效的么?祝学习愉快~

  • 提问者 慕数据0284452 #1
    我自己编的,不是老师的
    2019-02-27 15:37:28
  • 提问者 慕数据0284452 #2
    对的CSS和jsp都是导入老师的
    2019-02-27 15:39:32
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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