联系簿

三个bean一个编码过滤8个jsp文件
index.jsp
list.jsp 显示页面,动态打印每行
creat.jsp 添加联系的页面,通过bean传属性值
save.jsp 从creat。jsp传相应bean到save.jsp进行操作
update.jsp 负责更新,点击修改后到edit.jsp页面,该页面跟creat.jsp相似
edit.jsp该页面跟creat.jsp相似
remove.jsp, 执行删除逻辑
Contact.java 里面封装了联系簿的属性,各属性与数据库表contactBook相对应

DMMysql里面封装了static Connection getConn()创建连接
static void close(ResultSet rs,Statement state,Connection conn)
里面还有一段静态代码块,实现加载驱动(这段代码无论调用DMMysql多少次,它只执行一次)在ContactDao.java里的方法中,只要涉及数据库操作都要调用以上两个方法

ContactDao.java 里面封装了
List<Contact> getAll()方法,用于取出所有联系簿表的所有元组,主要用于在list.jsp里显示
Contact get(int id)方法,根据主键id值取出一个元组,主要用于edit.jsp,因为修改的href在显示页面list.jsp中,点击修改时,同时把id传过去,这样可以获得相应的元组,然后再修改,然后把参数通过bean传到update.jsp,通过update(Contact contact)可以更新数据库
void save(Contact contact)方法,用于添加联系,向数据库插入一个元组
void update(Contact contact)
void remove(int id)方法,修改的href在显示页面list.jsp中,跟删除同理,不过操作起来很简单,

感想:修改是里面最难得,涉及技巧和细节很多
1. 数据库表contactBook的主键是id,所以id作为参数很关键,修改或者删除都要用到id,做一在显示页面list.jsp中动态生成
<td><a href="<%=request.getContextPath()%>/edit.jsp?id=${contact.id }">修改</a>
|<a href="<%=request.getContextPath()%>/remove.jsp?id=${contact.id }">删除</a></td>
在逐行打印过程中每一个id都是不同的,所以点击相应行的修改或者删除,传过去的id都不同,这是一个很实用的技巧

2.插入一个联系元组的时候,指定id为什么??一开始使用list.size最后过渡,如果联系表有4个则新增加的一个的id为4+1,但是问题出现了,如果原来有id为1,2,3,4的四个联系元组,删除了id=3的,然后再添加一个,此时插入的元组对应id为4,这样就出现冲突了。最后解决方法是在list.jsp中判断application里的listSize,是否null,是则将当时的list.size()放入,此后的list.jsp中application里的listSize都不为null,然后在添加前将对应beans属性值设为application的listSize+1,然后更新application的listSize为listSize+1。这样就再也没有id相同的冲突,可是表里的id号就不是从1到………………不是很美观!

3.就这个联系簿项目来说,Contact保存了联系簿各属性,在使用该bean一般不要将scope设为application,这样会出现添加的都是同一个contact或者别的状况

4.技巧:在edit里面有个<input type="hidden" name="id" value="${contact.id}" />,因为edit.jsp负责修改页面,然后将表单参数传到save,如果没有这个name=“id”的属性,这样到了save通过beans设置property=“*”就不能获得相应的id,使用hidden可以使得界面更好看
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值