我的程序运行没有报错,但是页面不跳转?

我的程序运行没有报错,但是页面不跳转?

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("userId"), 
						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();
			return set.getInt("total");
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			ConnectionUtil.release(set, stat, conn);
		}		
		return 0;
		
	}

}
<?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>
  
  <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 language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
		This is a index.html!
</body>
</html>
<%@ 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>

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

正在回答

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

10回答

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

同学可以参考一下上图中老师的代码,同学是不算把所有跳转的代码都放到if里 了?

第一次pagestr是没有值的,进不去if语句的,所以不要把跳转的页面都放在if中

应该把下图红框部分的代码放到if外边:

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

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


  • 慕数据0284452 提问者 #1
    按照老师说的改动后确实可以显示出留言板画面了,但是点击尾页或者下一页等其他按钮,画面有刷新效果,但都只停留在第一页,截图见我的回答
    2019-02-24 20:18:27
  • 慕数据0284452 提问者 #2
    老师看到我的问题麻烦再解答下,在前面我又截图了
    2019-02-27 10:34:56
提问者 慕数据0284452 2019-02-25 19:46:33

刚才看到login.jsp里面有个小错误,多了个符号,请老师将上传的eclipse版本的留言板项目再检查下~

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

  • 嗯嗯,我是将你的代码贴到了老师的源码中,使用的开发工具是IDEA;按照我上面说的方式修改以后就没有问题了;同学对照源码检查以后,还有问题没?如果有问题,咱们再继续讨论吧~~ 祝学习愉快!
    2019-02-26 14:32:51
  • 提问者 慕数据0284452 回复 一叶知秋519 #2
    老师你没回答我下面的问题呀?
    2019-02-26 21:47:00
  • 提问者 慕数据0284452 回复 一叶知秋519 #3
    因为有问题,而且要截图,所以都用回答的方式提问了!
    2019-02-26 21:47:41
提问者 慕数据0284452 2019-02-25 19:22:15

一叶老师,我这边按您的修改方式出现这样的问题

1.样式出现混乱

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

2.点击翻页会报错

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

一叶知秋519 2019-02-25 16:35:34

同学你好,我将你的代码贴到源码中,将message_list.jsp中红框内的代码去掉以后就可以完成翻页

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

建议同学去掉以后再试下~

祝学习愉快!

  • 提问者 慕数据0284452 #1
    其中的缘由,老师能详细解释下吗,谢谢拉
    2019-02-25 19:13:21
提问者 慕数据0284452 2019-02-25 15:38:33

是不是因为我的form表单这里有报错导致不触发?message_list.jsp是直接从老师的eclipse项目copy的

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

  • 提问者 慕数据0284452 #1
    还有Invalid location of tag (li)
    2019-02-25 15:41:37
提问者 慕数据0284452 2019-02-24 20:19:47
  • 建议同学检查一下控制台有没有报错信息,同学可以再增加两条留言,看是不是由于内容一致导致的翻页效果看不出来。祝学习愉快!
    2019-02-25 10:58:01
  • 提问者 慕数据0284452 回复 一叶知秋519 #2
    控制台没有任何信息,断电看了确实信息数是22条,尾页也能算出是5,并不是内容一致,因为当前页面那里一直显示第一页1
    2019-02-25 13:34:07
提问者 慕数据0284452 2019-02-23 20:22:19

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

这里也改掉了,还是显示页面空白

提问者 慕数据0284452 2019-02-23 19:03:17

刚才自己又检查了下,发现web.xml放在view目录下,现在移动到了WEB-INF目录下,再运行就这样了,,

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

提问者 慕数据0284452 2019-02-23 18:54:41

是这个图

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

提问者 慕数据0284452 2019-02-23 18:52:58

修改后的index.jsp,运行能跳到list.do但还是404,且http://img1.sycdn.imooc.com//climg/5c7126030001dcfd06090237.jpg

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

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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