<%@pagecontentType="text/html;charset=UTF-8"language="java"%>2、修改文件后缀名为:.jsp
3、使用IDEA搜索替换.html为.jsp
替换结果,及运行检测:
1.head中css、jquery、base标签——head.jsp
<%--静态包含base标签、css样式、jQuery文件--%> <%@includefile="/pages/common/head.jsp"%>
在实际的项目开发中,一个模块,一般只使用一个Servlet程序。
BaseServlet程序代码
BeanUtils工具类,经常用于把Map中的值注入到JavaBean中,或者是对象属性值的拷贝操作。
BeanUtils它不是Jdk的类。而是第三方的工具类。所以需要导包。
1、导入需要的jar包:
commons-beanutils-1.8.0.jar
commons-logging-1.1.1.jar
编写WebUtils工具类——WebUtil.java
importorg.apache.commons.beanutils.BeanUtils;importjava.util.Map;publicclassWebUtils{//把Map中的值注入到对应的JavaBean属性中。publicstatic
web.xml配置
MVC全称:Model模型、View视图、Controller控制器。
MVC最早出现在JavaEE三层中的Web层,它可以有效的指导Web层的代码如何有效分离,单独工作。
View视图:只负责数据和界面的显示,不接受任何与显示数据无关的代码,便于程序员和美工的分工合作——JSP/HTML。
Controller控制器:只负责接收请求,调用业务层的代码处理请求,然后派发页面,是一个“调度者”的角色——Servlet。转到某个页面。或者是重定向到某个页面。
MVC是一种思想。
MVC的理念是将软件代码拆分成为组件,单独开发,组合使用(目的还是为了降低耦合度)。
MVC的作用还是为了降低耦合。让代码合理分层。方便后期升级和维护。
packagegithub.dao;importgithub.pojo.Book;importjava.util.List;publicinterfaceBookDao{publicintaddBook(Bookbook);publicintdeleteBookById(Integerid);publicintupdateBook(Bookbook);publicBookqueryBookById(Integerid);publicList
BookDao的测试
BookService接口
packagegithub.service;importgithub.pojo.Book;importjava.util.List;publicinterfaceBookService{publicvoidaddBook(Bookbook);publicvoiddeleteBookById(Integerid);publicvoidupdateBook(Bookbook);publicBookqueryBookById(Integerid);publicList
packagegithub.service.impl;importgithub.dao.BookDao;importgithub.dao.impl.BookDaoImpl;importgithub.pojo.Book;importgithub.service.BookService;importjava.util.List;publicclassBookServiceImplimplementsBookService{privateBookDaobookDao=newBookDaoImpl();@OverridepublicvoidaddBook(Bookbook){bookDao.addBook(book);}@OverridepublicvoiddeleteBookById(Integerid){bookDao.deleteBookById(id);}@OverridepublicvoidupdateBook(Bookbook){bookDao.updateBook(book);}@OverridepublicBookqueryBookById(Integerid){returnbookDao.queryBookById(id);}@OverridepublicList
BookServlet程序中添加list方法
修改pages/manager/book_manager.jsp页面的数据遍历输出
当用户提交完请求,浏览器会记录下最后一次请求的全部信息。当用户按下功能键F5,就会发起浏览器记录的最后一次请求。
BookServlet程序中添加add方法
protectedvoidadd(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{//1、获取请求的参数==封装成为Book对象Bookbook=WebUtils.copyParamToBean(req.getParameterMap(),newBook());//2、调用BookService.addBook()保存图书bookService.addBook(book);//3、跳到图书列表页面///manager/bookServletaction=list//req.getRequestDispatcher("/manager/bookServletaction=list").forward(req,resp);resp.sendRedirect(req.getContextPath()+"/manager/bookServletaction=list");}修改book_edit.jsp页面
BookServlet程序中的delete方法
protectedvoiddelete(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{//1、获取请求的参数id,图书编程intid=WebUtils.parseInt(req.getParameter("id"),0);//2、调用bookService.deleteBookById();删除图书bookService.deleteBookById(id);//3、重定向回图书列表管理页面///book/manager/bookServletaction=listresp.sendRedirect(req.getContextPath()+"/manager/bookServletaction=list");}给WebUtils工具类添加转换int类型的工具方法
/***将字符串转换成为int类型的数据*@paramstrInt*@paramdefaultValue*@return*/publicstaticintparseInt(StringstrInt,intdefaultValue){try{returnInteger.parseInt(strInt);}catch(Exceptione){e.printStackTrace();}returndefaultValue;}修改删除的连接地址
更新【修改】的请求地址
protectedvoidgetBook(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{//1获取请求的参数图书编号intid=WebUtils.parseInt(req.getParameter("id"),0);//2调用bookService.queryBookById查询图书Bookbook=bookService.queryBookById(id);//3保存到图书到Request域中req.setAttribute("book",book);//4请求转发到。pages/manager/book_edit.jsp页面req.getRequestDispatcher("/pages/manager/book_edit.jsp").forward(req,resp);}在book_edit.jsp页面中显示修改的数据
在BookServlet程序中添加update方法
protectedvoidupdate(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{//1、获取请求的参数==封装成为Book对象Bookbook=WebUtils.copyParamToBean(req.getParameterMap(),newBook());//2、调用BookService.updateBook(book);修改图书bookService.updateBook(book);//3、重定向回图书列表管理页面//地址:/工程名/manager/bookServletaction=listresp.sendRedirect(req.getContextPath()+"/manager/bookServletaction=list");}解决book_edit.jsp页面,即要实现添加,又要实现修改操作。
分页模块的分析:
publicclassPage
IntegerqueryForPageTotalCount();List
@OverridepublicIntegerqueryForPageTotalCount(){Stringsql="selectcount(*)fromt_book";Numbercount=(Number)queryForSingle(sql);returncount.intValue();}@OverridepublicList
Page
@OverridepublicPage
/***处理分页功能*@paramreq*@paramresp*@throwsServletException*@throwsIOException*/protectedvoidpage(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOException{//1获取请求的参数pageNo和pageSizeintpageNo=WebUtils.parseInt(req.getParameter("pageNo"),1);intpageSize=WebUtils.parseInt(req.getParameter("pageSize"),Page.PAGE_SIZE);//2调用BookService.page(pageNo,pageSize):Page对象Page
publicvoidsetPageNo(IntegerpageNo){//数据边界的有效检查if(pageNo<1){pageNo=1;}if(pageNo>pageTotal){pageNo=pageTotal;}this.pageNo=pageNo;}BookService中page方法的修改:
@OverridepublicPage
1.在修改的请求地址上追加当前页码参数:
2.在book_edit.jsp页面中使用隐藏域记录下pageNo参数:
3.在服务器重定向的时候,获取当前页码追加上进行跳转:
1.在web下新建ClientBookServlet.java文件:
1.在page对象中添加url属性,并重新生成get、set方法与tostring:
2.在Servlet程序的page分页方法中设置url的分页请求地址:
1.修改client文件夹下的index.jsp文件:
2.在BookService.java文件下,新建如下方法:
3.ClientBookServlet.java文件添加如下代码:
@OverridepublicPage