一、项目概述:
该项目主要实现对学生信息的管理,通过学生信息管理系统能够进行学生信息的增加、查看,查询,删除等功能,实现学生管理工作的系统化和自动化。
该项目已经上传到github了,想看源码请移步:https://github.com/LazyTraveller/student_info_system (内含数据库脚本)
百度网盘:链接:https://pan.baidu.com/s/1UEv3C7H0WvrPXYt18D3flw
提取码:54yf
二、项目采用的技术:
该项目采用的是SSM框架技术,SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式。
(1)使用spring MVC负责请求的转发和视图管理。
(2)spring实现业务对象管理,mybatis作为数据对象的持久化引擎。
(3)mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。
将整个系统划分为表现层,controller层,service层,DAO层四层。
(1)jsp(view)发送请求。
(2)通过核心控制器DispatcherServlet调用请求解析器:HandlendMapping对请求进行解析,通过映射关系匹配到Controller层。
(3)在控制层调用业务逻辑层(service),数据持久层(DAO)返回控制层,请求完成获取一个结果,设置一个要跳转的视图,(ModelAndView装载并传输数据,设置视图)。
(4)核心控制器调用 视图解析器:ViewResolver解析视图,匹配相应的页面实现页面跳转。
三、SSM框架配置文件的整合
配置文件 |
功能描述 |
web.xml |
配置了前端控制器,在SSM框架中,前端控制器起着最主要的作用 |
pom.xml |
这里使用maven来引入项目所需要的jar包,所以也就不需要手动来管理jar包了 |
log4j.properties |
固定配置,日志配置文件 |
spring-mvc.xml |
需要实现基本功能的配置 1 配置 <mvc:annotation-driven/> 2 配置 <context:component-scan base-package="com.springmvc.controller"/> // 配置controller的注入 3 配置视图解析器 |
applicationContext.xml |
1 配置 <context:component-scan base-package="com.rhzh"/> //自动扫描,将标注Spring注解的类自动转化Bean,同时完成Bean的注入 2 加载数据资源属性文件 3 配置数据源 三种数据源的配置方式 http://blog.csdn.net/yangyz_love/article/details/8199207 4 配置sessionfactory 5 装配Dao接口 6 声明式事务管理 7 注解事务切面
|
mybatis-config.xml |
配置pageHelper分页插件 |
四、各个功能模块实现的方法:
说明 |
Entity实体 |
dao (数据库持久层) |
Service业务层层 |
Controller (控制层) |
View |
管理员登录 |
Admin 构造方法、get、set方法 |
AdminDao(findByNameAndPwd() )、AdminDao.xml(findByNameAndPwd() |
adminService.authenticate() |
LoginController中的login() |
Login.jsp |
注销登录 |
Admin 构造方法、get、set方法 |
|
|
Logout()调用session.invalidate() |
返回 Login.jsp |
增加学生信息 |
Student 构造方法、get、set方法 |
StudentDao 中的方法addStudent()
|
StudentService中 addStudent() |
StudentController 中的createStudent() |
addStudent.jsp |
删除学生信息 |
Student 构造方法、get、set方法 |
studentDao.delStudent(studentId) |
studentService.delStudent(studentId) |
StudentController 中的delete() |
listStudentPage.jsp |
编辑学生信息 |
Student 构造方法、get、set方法 |
StudentDao 中的方法updateStudent |
StudentService中 updateStudent() |
StudentController 中的 update() |
editStudent.jsp |
查看学生信息 |
Student 构造方法、get、set方法 |
StudentDao 中的 getStudent() |
studentService.getStudent() |
StudentController 中的 viewStudent() |
viewStudent.jsp |
查询学生信息 |
Student 构造方法、get、set方法 |
studentDao.findByNameLike() |
studentService.findByNameLike() |
StudentController 中的 selectStudent |
select.jsp |
分页显示 |
Student 构造方法、get、set方法 |
studentDao.findAllStudent() |
studentService.findStudentList() |
StudentController 中的 pageStudentList() |
listStudentPage.jsp |
util (工具类) |
该包下存放一些开发中常用的工具类,如连接数据库操作 |
|
|
|
|
五、系统设计
(1)该系统实现的功能图如下:
(2)项目架构:
(3)数据库设计:
学生表:
No |
列名 |
属性 |
必须 |
主键 |
说明 |
|
类型 |
大小 |
|||||
1 |
studentId |
Bigint |
20 |
Y |
Y |
学生学号 |
2 |
name |
Varchar |
255 |
Y |
|
学生姓名 |
3 |
adminId |
bigint |
20 |
Y |
|
管理员工号 |
4 |
sex |
varchar |
60 |
Y |
|
学生性别 |
5 |
address |
text |
255 |
Y |
|
学生地址 |
6 |
Cellphone |
Varchar |
255 |
Y |
|
学生电话 |
7 |
dateCreate |
timeStamp |
255 |
Y |
|
创建日期 |
8 |
Status |
Tinyint |
4 |
Y |
|
激活状态 |
管理员表:
No |
列名 |
属性 |
必须 |
主键 |
说明 |
|
类型 |
大小 |
|||||
1 |
adminId |
bigint |
20 |
Y |
Y |
管理员编号 |
2 |
adminname |
Varchar |
30 |
Y |
|
管理员账号 |
3 |
Password |
Varchar |
60 |
Y |
|
管理员密码 |
4 |
|
varchar |
80 |
Y |
|
管理员邮箱 |
六、系统实现
1、登陆
登陆时调用LoginController,该控制器完成相应的逻辑操作(判断用户名、密码是否为空),并且调用相应的AdminDao数据库访问层的相应组件,完成登陆校验,然后将结果返回给视图层 ,视图层提供给用户,以界面的形式展示。
Login.jsp
LoginController控制器:
AdminService:
adminDao:
adminDao.xml:
2、系统主界面
listStudentpage.jsp:
StudentController:
StudentServive:
studentDao:
3、添加学生信息
addStudent.jsp:
StudentController:
StudentService:
StudentDao:
4、编辑学生信息
editStudent.jsp:
StudentController:
StudentService:
StudentDao:
5、删除学生信息
listStudentPage.jsp:
StudentController:
StudentService:
StudentDao:
6、查看学生信息
viewStudent.jsp:
StudentController:
StudentService:
StudentDao:
7、查找学生信息
Select.jsp:
StudentController:
StudentService:
StudentDao:
StudentDao.xml:
8、注销登录
当用户登录后,点击退出链接可以完成退出。退出成功后会到达登录页面!
退出后移除用户的Session,并且跳到系统的登陆页面
session.removeAttribute("adminname");
session.invalidate();
response.sendRedirect("login.jsp")
至此,该项目实现了学生信息的增删改查的功能了。