本篇用于完善上一篇的三层架构并且优化三层架构。
在这里,小编作为一个初学者,首先要吐槽一下这个2.5版本了:
我在建查询所有学生类Servlet的时候不小心打错了,于是就Rename更改了一下此类名!!!于是!!!只要点进去查询所有学生就报404错误。本来以为是跳转此Servlet的名字写错了,复制粘贴了N遍,还是404,后才才发现2.5版本我更改了类名之后再web.xml中没有自动更改,作为一个初学者,太相信eclipse万万没想到是这里错了!!!
一、完善学生系统
在上一个三层架构的基础上,以同样的方法在StudentDao类中写删除学生信息,修改学生信息,查询所有学生信息。
在StudentService类中调用StudentDao类中的方法,吧StudentDao中的方法组合起来
(已经有了添加学生的方法,再添加上删除,修改,查询一个学生查询所有学生四个方法即可)
注:如果删除成功则用重定向的方法跳入QueryAllStudentServlet中,作用是重新查询所有的学生信息
注:同删除一样,成功之后重新查询学生信息。
注:将查询到的学生信息放入request域中之后因为学生信息作为参数,所以要用请求赚翻的方式跳转(重定向会失去request域)到名字为studentInfo.jsp的JSP页面中。
注:将查到的学生信息放入List集合中,再把集合信息放入request域中,同样的用请求转发的方式跳进index.jsp页面中。
再将AddStudentServlet稍作修改。
为了输出看起来方便,在Student类中重写toString方法。
再创建两个JSP File分别起名为index.jsp和studentInfo.jsp用于显示以上Servlet中的跳转之后的页面。
index.jsp
建立一张表,用于显示学生信息,并且获得学生信息
注:注意JSP中的JAVA代码要写在中
因为有Student,和List所以要在头文件中导入Student和List包
用超链接完成通过点击学号跳进此人的详细信息和点击删除将此人信息删除
然后处理一下增加的操作,给增加也写一个超链接用于跳转到增加页面,在增加成功之后在页面上显示增加成功,并且显示所有学生的信息。
2.studentInfo.jsp
此页面只是用来显示某人的详细信息,因此比较简单。先获取到Student(1.通过学号查出来的学生信息。2.注意导包)再用表单展示学生信息。进入页面之后,给学号设置为不可修改,可以通过修改按钮来修改其他信息。修改成功之后再次跳转查询新的所有学生信息。
一定要注意,在XML中设置QueryAllStudentServlet先进行访问。而不是index.jsp(默认)因为index.jsp如果想要展示学生信息就必须先通过QueryAllStudentServlet查询之后才能得到。
项目改完之后,执行一下(表中有上次添加的两个学生的信息)
点击新增:
可以看到点击之后跳转到add.jsp页面中。
输入学生信息:
点击新增之后
出现添加成功过的提示,并且王五也添加在表中,同样的在数据库中验证一下
可以发现添加成功。
点击删除按钮
可以发现王五被删除。
点击学号:
点击修改
修改成功!
二、三层优化
上面的学生系统中可以发现,代码非常的冗余(有太多的重复代码),因此要对上面重复的代码做以优化,即把重复的代码写入一个函数中,需要的时候可以直接调用,不用再次重复的写这些代码。
首先加入接口。(先接口再实现类。)
接口命名:在接口名前加大写的I用来表示接口
实现类命名:在实现类名之后加Impl来表示实现类
如图给studentDao和StudentService加上接口
将重复使用的变量提出来。为了调用方便加上static
增删改:
此增删改是用的PreparedStatement对象,如果用Statement对象显然不可以,再写一个Statement对象的方法。(因为要实现通用)
可以发现PreparedStatement与Statement两者之间有余数据库建立连接和关闭对象的冗余代码,再写两个方法分别将两者冗余代码写进去。
删除冗余代码,调用相应的方法。
写通用的查看所有学生并且调用以上可以调用的方法
(大大的备注!!!通用的查看学生信息,一定一定一定!!!不能关闭Connection、ResulSet、PrepareStatement!!!小编因为弱智的在通用的查看之后关闭了这几个对象,一直出现bug...好几个小时都泡在查找代码中...万万没想到!!!!竟然错在了这里!!!!)
修改StudentDaoImpl中的冗余代码
index.jsp中加入一些css/js/jQuery…
再次我用简单的css将表格背景变成粉色,边框变成白色
效果如图:
效果图同上面的效果图,只是所有学生显示的颜色不同而已。
领取专属 10元无门槛券
私享最新 技术干货