servle转发到jsp资源后,数据缺失

这个被转发的jsp资源内容有缺失:

img

报了500,服务器内部错误?

img

这是servlet的代码:


@WebServlet("/findBelongingsByPageServlet")
public class FindBelongingsByPageServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取请求参数
        String currentPage = req.getParameter("currentPage");
        String rows = req.getParameter("rows");
        //对参数值进行判断
        if(currentPage==null || "".equals(currentPage)){
            currentPage="1";
        }
        if (rows==null || "".equals(rows) ){
            rows="5";
        }
        //查询PageBean
        BelongingsService service=new BelongingsServiceImpl();
       PageBean<Belongings> pageBean= service.findBelongingByPage(currentPage,rows);
       //将pageBean装入request中
        req.setAttribute("pageBean", pageBean);
        System.out.println("currentPage:"+pageBean.getCurrentPage());
        System.out.println("totalPage:"+pageBean.getTotalPage());
        //将数据转发到list.jsp中
        req.getRequestDispatcher("/list.jsp").forward(req, resp);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }
}




  1. 这个叫跳转,不叫转发。确切一点的词汇应该叫做 内部跳转。
  2. 报出 500 错误,我们需要具体的后台日志、异常堆栈信息。
  3. JSP的页面只显示一半,说明程序在JSP页面的逻辑处理过程中报错了,那么,JSP之前的Servlet应该没有问题。

解决问题的思路:

  1. JSP 在执行之前也会先转换成为 Servlet(Java代码),然后编译成 class 文件,载入到 JVM 当中。
  2. 查看后台报错的日志,找到堆栈信息,定位对应class以及代码的行数。
  3. 如果堆栈显示的问题是JSP中的业务逻辑导致的,那么,去tomcat的work目录下,找到JSP对应的.java文件,去里面找代码,找原因。
  4. 如果堆栈显示的问题是JSP语言使用不当造成的(JSP语法,用法造成的问题),直接修改JSP文件,排除语法、用法造成的问题。

把错误发出来