系列文章目录
文章目录
- 系列文章目录
- 前言
- 一、添加Book&删除Book
-
- 添加
- 下面开始写dao、service、servlet层
- 易错点,跳转
- 添加功能 的小结与思考 —— 小白实际上手遇到的问题(上面都有答案)
- 删除
- 删除前的确认 —— 客户确定删除再删除
- 总结
前言
接上一篇
一、添加Book&删除Book
添加
想一想,这个添加是直接请求servelet吗?
答案是,不可以直接请求servlet,为啥呢,是不是很费解,因为直接请求servlet没有数据啊,数据从哪来呢
回顾一下我们以前打的请求servlet的代码
如:图书管理
如:
发现我们这里不一样的地方了吗
先分析业务流程
分析完之后,后面就很简单了,我们可以直接写代码了
其实前面如果认真看了,并且会了,这里是大同小异的
分析完之后就开始撸代码了
因为bean(跟数据库保存一致)前面已经写好了,
下面开始写dao、service、servlet层
因为前面文章写过几遍了,虽然代码不同,但是模式是一模一样的,我们这里就不非常详细说了
dao层分为接口和实现类
接口(写抽象方法):
实现类(必须,实现这个抽象方法)
注意上面,因为 返回类型是 void 所以 方法体的最后不用返回 不用return
写完dao后测试一下
如果数据库中是非空的(事实上我们这里设计的也是如此)
非空的怎么办
给它一个默认值(非空)
复制这个
放到构造器中 这样就设置好默认值了
以后你在构造器中传不传值都无所谓了,
传null也是这个路径,传什么都是这个路径,写死了
接口没有问题了,那就开始写service了
也是两个
一个是接口:
跟dao层一样
一个是实现类:
接着是servlet
前端jsp先写一下
注意这里一定要加上 method=“post” 否则 如果默认是get 会覆盖掉我们提交的 上一个参数,导致无法识别我们的 addBook (方法)
servlet
跳转:还是应该跳转到book_manager页面
但是是直接跳转吗?
只能说最终是这个页面,
但是你不能直接跳过去
如果你直接跳过去就太天真了,根本没有更新的数据
易错点,跳转
解决办法:跳转之前重新查询一次
那怎么重新查询呢?
所以我们干脆再调一下之前写的查询方法就行了
但是在开发当中除了这种写法,我们还有另外一种写法
充电线里面加参数
实际上跟前面的直接调用是一回事
这三种方法都必须要会
然后测试就没有问题了
添加功能 的小结与思考 —— 小白实际上手遇到的问题(上面都有答案)
1、写完dao 之后还要不要写单元测试?如果要写,怎么写?很容易没有思路俗称短路
很简单,不要想得那么复杂,答案如下,明镜亦非台,本来无一物,何处惹尘埃
注意id列插null值就好
2、图书的路径,要怎么处理?添加图书的时候,并没有路径给你选择
3、类型转换,怎么转?
转换如下:
4、跳转之后没有刷新怎么解决?
尝试解决解决办法之一,不要使用转发,改为使用重定向,重定向会改变地址栏路径
结果失败,是刷新了,但是没有重新加载数据
如果设置成动态编译呢?试过也不行,那么解决办法到底是什么呢?
删除
删除是增删改查里面最简单的
为什么说是最简单的,想一想它需要跳转页面吗
不需要
如果我们做一个功能,特别是增删查改如果没有思路,说明基本功还不扎实,需要继续写代码来加强能力
怎么把ID带过去,这个可能是一个难点
怎么带?可以通过地址栏、隐藏域还可以通过什么方式呢?
不可以放隐藏域,因为隐藏域必须要有表单,表单提交才可以有效的使用隐藏域
后面的操作跟添加是一样的
三层逐步写完
dao层
(1)dao的接口
所以我们可以看出,数据库的兼容性比java(C#)更强,不用过于担心这些问题
所以我们可以在java代码里面也把id设置成字符串,有什么好处?
好处是我们底层就不用再做转换了
能兼容就不用转换了
(2)dao的实现类
service层
service的接口
service的实现类:
然后就到了servlet
至此完成添加和删除
下面开始测试,发现删除似乎少了什么,删除得太随意了,很容易勿删,对客户来说是非常不友好的
所以我们要加 删除前的确认
删除前的确认 —— 客户确定删除再删除
使用jquery
测试
持续优化,提示用户的时候,提示用于现在删除的是哪个,是否确定删除某某数据
最后测试
如果忘记了,可以看一下前面的文章,或者直接找jquery文档,看一下怎么写
第二种更简单的方式:
总结
1、
多敲几遍就会了
增删查改
会其中一个就基本会了,会其中增加和删除,后面的都可以举一反三自己完成了
2、
这里很好的把后端和前端关联了起来,比如前面学的jquery,不要以为没有用,用处有时候是很大的
3、注意中英文状态下问号也是不一样的