1.问题:遇到了一个之前的经典场景,404,我通过配置了xml文件后,发现没有效果,后来改成了注解的方式来运行就解决了,总之以后类似的问题我尽量用注解的方式解决,因为一碰到404出现的问题可能会有很多,看日志信息排除xml配置问题比较浪费时间
2.功能实现:有了MVC设计模式的框架,分页功能的设计明显清晰了很多,和上次CRUD的操作大同小异,需要注意的地方,在功能的实现上,要结合考虑首尾页,上下页的一些细节,这里还嵌入了Bootstrap在表格上,这也让我对web开发的印象有了雏形,,HeroDAO中有大部分多余的方法,可以删除,如果追求完美的话,也可以用这些方法,加入crud的功能进行交互
Hero和HeroDAO作为模型层,用于封装和管理与数据库相关的操作
HeroListServlet作为控制层,用于接受来自JSP的请求和映射操作至数据层
Jsp则作为视图,用于显示和接收用户输入
我觉得比较重要的地方是控制器这里:
pre = pre < 0 ? 0 : pre; next = next > last ? last : next; request.setAttribute("next", next); request.setAttribute("pre", pre); request.setAttribute("last", last); List<Hero> heros = new HeroDAO().list(start, count); request.setAttribute("heros", heros); request.getRequestDispatcher("listHero.jsp").forward(request, response); |
- pre、next和last分别是分页中的上一页、下一页和最后一页的页码。
- 在这段代码中,将分页计算得到的上一页、下一页和最后一页的页码存储到request对象中,以便在JSP页面中进行使用。
- 接着,通过调用HeroDAO的list()方法获取数据库中指定范围内的Hero对象的集合,即在数据库中获取当前页的数据。获取到的Hero对象集合存储到request对象中。
- 最后,使用请求转发(request.getRequestDispatcher("listHero.jsp").forward(request, response))将request和response对象传递到listHero.jsp页面进行显示。这样,listHero.jsp页面就可以通过访问request对象来获取分页数据和当前
- pre = pre < 0 ? 0 : pre; 这行代码中,用三目运算符判断pre(上一页的页码)是否小于0,若小于0,则将其赋值为0,否则保持原值。
- next = next > last ? last : next; 判断next(下一页的页码)是否大于last(最后一页的页码),若大于,则将其赋值为last,否则保持原值。