学生管理系统(2.0)

一、数据库准备

数据库SQL语句:

1
2
3
4
5
6
7
8
9
10
11
CREATE DATABASE stus;
USE stus;
CREATE TABLE stu (
sid INT PRIMARY KEY AUTO_INCREMENT,
sname VARCHAR (20),
gender VARCHAR (5),
phone VARCHAR (20),
birthday DATE,
hobby VARCHAR(50),
info VARCHAR(200)
);

Navicat配合mysql直接可视化:


二、环境搭建(Dao)#

1. 先写index.jsp页面

2. 写一个StudentListServlet类去进行查询学生信息—弹出到list.jsp页面

3. 写一个Student类(封装):里面写所有数据库的属性以及set和get方法

4. 写dao层里面的StudentDao类:里面去写要完成什么方法

5. 写dao.impl里面的StudentDaoImpl类:具体去写连接数据库等操作


三、环境搭建(Dao实现)

1.需要连接开源数据池和连接数据库:
所以要引入c3p0和DBUtils的jar以及连接数据库的jar包,还有就是要有c3p0开源数据池的配置文件。

2. 建立Util包,里面放写好的JDBCUtil02(简化的JDBC连接类)

3. StudentDaoImpl类里面去完成写当时的连接数据库查询的三步


四、环境搭建(Service层)

1. 新建service接口和实现类–和dao以及daoimpl代码一样(为了service去找dao)

2. 在Serlvet代码内增加StudentService service=new StudentServiceImpl()(为了servlet找service)


五、查询所有学生#

1. 完善Servlet类

1
2
3
4
5
6
7
8
9
//1.查询出所有学生
StudentService service=new StudentServiceImpl(); //Servlet去找service 然后他会去找dao层
List<Student> list = service.findAll(); //找到查询方法

//2.先把数据存到作用域中
request.setAttribute("list", list);

//3.有结果了--跳转
request.getRequestDispatcher("list.jsp").forward(request, response);

2. 写跳转的list.jsp页面

1
2
3
4
1.在body里面建立2*8的表格:
第一行写标题(姓名、性别等)
第二行要用JSP里面学过的JSTL语言配合EL表达式循环出所有的结果
2.导入所需要用的jstl.jar和standard.jar包

六、添加学生

1. 通过主页面list.jsp的添加href要去找添加的界面,因此写一个add.jsp页面

2. 接下来完成servlet(1.获取客户端提交的信息 2.添加到数据库 3.跳转到list.jsp的主页面)

3. 需要去找dao层的studentDao写insert()方法

4. 然后去impl里面去实现insert()方法
和之前的查询一样都是两步:第一步通过JDBCUtil02导入连接;第二步通过update的方法导入信息

5.更改service层代码–添加和dao一层的代码,但是在impl里面建立dao的对象

6. 更改Add.servlet层代码–添加到数据库

注意事项

  1. 需要更改eclipse和mysql的编码格式都为UTF-8
  2. 需要注意爱好需要用数组然后转字符串输出(不然就只能显示一个)

七、删除学生

1. 设置点击超链接弹出一个询问框,如果点击确定–删除成功

1
<a href="#" onclick="doDelete(${stu.sid})">删除</a>

2. 让超链接执行js方法–触发servlet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<script type="text/javascript">

function doDelete(sid) {
var flag = confirm("是否确定删除?"); //提示语
if(flag){
//表明点了确定。 访问servlet。 在当前标签页上打开 超链接,
//window.location.href="DeleteServlet?sid="+sid;
location.href="DeleteServlet?sid="+sid;
}
}

</script>

```
**3. js点击确定--会获取到sid,然后给sid跳转到servlet**

**4. servlet收到了请求 ---> service,service ---> dao**

---

# 八、更新学生 #

** 1.和之前的操作差不多都是dao和service
去写方法,impl去写实际功能。**

** 2.在list.jsp要通过按钮href标签`EditServlet?sid=${stu.sid}`去找sid然后相当于弹出一个edit的jsp页面展示原来的信息,然后根据更改提交给原来的展示所有的StudentListServet之后在弹出list.jsp页面**


---

# 九、模糊查询 #

**要将list的表格通过form提交,然后里面的sql语句要用拼凑的方法。**

```
String sql="select * from stu where 1=1"; //啥也不选就提交就这样的sql语句
List<String> list=new ArrayList<String>(); //存放传入的sname/sgender

//拼装
if(!TextUtil.isEmpty(sname))
{
sql=sql+" and sname like ?";
list.add("%"+sname+"%"); //因为like在前面 所以要用%包起来
}
if(!TextUtil.isEmpty(sgender))
{
sql=sql+" and gender=?";
list.add(sgender);
}

十、分页(还未实现 可以再F盘的jar文件找源码)

  • 物理分页 (真分页)

来数据库查询的时候,只查一页的数据就返回了。

 优点 内存中的数据量不会太大

缺点:对数据库的访问频繁了一点。

SELECT * FROM stu LIMIT    5 OFFSET 2 (一次性五条 相对与之前的而言)
  • 逻辑分页 (假分页)

一口气把所有的数据全部查询出来,然后放置在内存中。

优点: 访问速度快。

缺点: 数据库量过大,内存溢出。

十一、代码完整上传至其他仓库(Student management system)

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 一、数据库准备
  2. 2. 二、环境搭建(Dao)#
  3. 3. 三、环境搭建(Dao实现)
  4. 4. 四、环境搭建(Service层)
  5. 5. 五、查询所有学生#
  6. 6. 六、添加学生
  7. 7. 七、删除学生
  8. 8. 十、分页(还未实现 可以再F盘的jar文件找源码)
  9. 9. 十一、代码完整上传至其他仓库(Student management system)
,