继续来做Javaweb的案例练习,本篇学习如何修改一本书的信息。在图书列表页,表格中点击某一本书的编辑链接,然后用户就可以修改图书信息,就是这么一个场景。
1.修改思路分析
首先,来看看修改图书的思路分析,要如何跳转,用几个servlet,都在下图
看这张图左边部分,首先用户在list.jsp中点击修改菜单,这个时候需要把图书的id传给findBookByIdServlet,然后根据id去查询数据库,拿到这本书的全部信息,然后相关字段回显到edit.jsp,用户可以随便改里面数据,点击保存,就跳转到updateBookServlet,然后调用Dao层的update相关方法去更新数据表信息,完成这个过程。
2.什么是回显?
在list.jsp点击编辑,我们看到是一个和新增图书差不多的页面,唯一区别就是标题显示这个是修改页面,这种就是表单数据没有回显给用户,用户进来什么信息都看不到,不好做信息修改操作,很差的体验,所以我们需要回显数据。
上面如果不是编辑商品几个字,用户还以为是新增图书的页面呢?
3.完成数据回显
3.1 修改list.jsp中修改链接跳转到findBookByIdServlet, 在list.jsp中大概在133-135行,修改下edit的跳转链接。
3.2 新建一个findBookByIdServlet的servlet
在com.anthony.web.servlet包下新建这个servlet类,Eclipse新建servlet会自动配置web.xml,这个前提是创建java web动态项目,选择j2ee 2.5版本。这个代码,我们暂时不写,我们先需要完成Dao层,然后Service层,然后再回来写servlet代码。
3.3 Dao接口和具体实现类添加根据id查找图书方法
具体实现类方法
3.4 service层添加相关方法
3.5 findBookByIdServlet代码如下
3.6 修改edit.jsp
在edit.jsp,用${book.id}来替换原来name值,全部替换需要修改的地方的字段值,这样达到字段回显效果。这里能直接用book这个变量,是因为我们在上面servlet中添加到了request域对象中,然后转发过来,所以edit.jsp能直接使用book。
44-46行找到商品名称代码,修改如下
然后商品价格
商品数量
商品描述
商品类别有点复杂,先不改动,重启tomcat服务器,然后看看点击编辑进来页面的回显效果。
接下来看看商品类别
这个需要js代码来支持,在这个案例素材中,已经写好了这个js代码,我们只需要调用下就可以。edit.jsp中16-31行代码
再来看看图书类别这个点击编辑,会不会自动显示之前设置的类别
我之前代码中写的是编程语言这么一个类别,这个和edit.jsp中类别不一致,所以需要到数据库表改成计算机。
点击上面编辑菜单
这个类别 计算机是自动出来,不是人工点出啦,说明字段回显做完了。
4.完成UpdateBookServlet功能
在edit.jsp中提交跳转我们需要修改,跳转到/updateBookServlet,这个servlet类我们还没有创建,但是我们先来看一个问题,那就是如果把id传给/updateBookServlet, 因为在执行SQL的update语句where条件是book的id,所以我们需要在edit.jsp页面就想办法把id传递给/updateBookServlet,下面创建一个隐藏的id控件来接受id的value. 31-34行代码
4.1 创建一个空的UpdateBookServlet.java
在com.anthony.web.servile新建一个UpdateBookServlet.java,url映射是updateBookServlet
4.2 写Dao层代码
具体实现类新增以下方法
4.3 写service层代码
BookService接口中新加这个方法
具体实现类新加这个方法
4.4 写web层中servlet代码
重启tomcat服务器之后,可以进行测试了。