这个项目主要有五个模块,这五个模块分别是数据管理、数据统计、用户管理、角色管理、网站信息管理。我们团队实现了其中的4个模块,分别是数据管理、数据统计、用户管理、网站信息管理。其中主要实现了对数据的增删改查,其中增加数据中包含了对图片的上传,修改包括对已上传的图片以及数据进行修改,删除包含单个删除以及批量删除,查询实现了分页的功能以及对指定数据的详细查询。
表1 页面信息表home
序号 | 字段名 | 类型 | 描述 | |||
1 | Id | int | 序号 | |||
2 | gid | tinyint | 模块 | |||
3 | topic | varchar | 标题 | |||
4 | time | datatime | 上传时间 | |||
5 | filesrc | varchar | 图片 | |||
6 | content | varchar | 内容 |
| ||
7 | status | varchar | 显示状态 |
|
表2 模块分类页面信息genre
序号 | 字段名 | 类型 | 描述 |
1 | gid | tinyint | 序号 |
2 | gname | varchar | 模块 |
用户管理表user
序号 字段名 | 类型 | 描述 | |
1 Id | int | 标识 | |
2 name | varchar | 姓名 | |
3 password | varchar | 密码 | |
4 userRows | varchar | 用户角色 | |
5 sex | varchar | 性别 | |
6 date | date | 日期 | |
7 filesrc | varchar | 文件 |
数据管理表datamanagement
序号 字段名 | 类型 | 描述 | |
1 id | int | 记录数据 | |
2 name | varchar | 姓名 | |
3 mark | varchar | 唯一标识 | |
4 age | varchar | 年龄 | |
5 gender | varchar | 性别 | |
6 belong | varchar | 所属 | |
7 test_time | varchar | 测试用时 | |
8 warning_level | varchar | 预警等级 | |
7 testTime | varchar | 测试时间 |
数据统计表datamanagement
序号 字段名 | 类型 | 描述 | |
1 id | int | 记录数据 | |
2 name | varchar | 姓名 | |
3 mark | varchar | 唯一标识 | |
4 age | varchar | 年龄 | |
5 gender | varchar | 性别 | |
6 belong | varchar | 所属 | |
7 test_time | varchar | 测试用时 | |
8 warning_level | varchar | 预警等级 | |
7 testTime | varchar | 测试时间 |
3.2.1.1 从登陆界面进入到程序时显示了数据管理,同时进行了查询的工作
(1)重要代码
处理器:
Service层:
Dao层的实现:
(2)实现情况
3.2.1.1 点击查看按钮进行详细信息的查询
(1)重要代码
处理器:
service层 :
Dao 层:
(2) 实现情况
3.2.1.1 对数据的删除
(1)重要代码
(3)实现情况
删除前 :
删除后:
3.2.1.1 对数据的添加
(1)重要代码
(2)实现情况
3.2.2 数据统计模块的实施方案
3.2.2.1 对数据的查询
(1)重要代码
(2)实现情况
3.2.2.2 对单个数据的查看
(1)重要代码
(2)实现情况
3.2.2.3 对数据的删除
(1)重要代码
(2)实现情况
3.2.3 用户管理中的模块实施方案
3.2.3.1 查询内容和分页内容:
(1)重要代码
处理器页面数据查询方法
@RequestMapping("/userManage.do")
public String userManage(intpageno, Modelmodel) {
System.out.println(pageno);
Page<User> page =service.findCurrentPage(pageno);
model.addAttribute("page",page);
return"/html/User_management.jsp";
}
实现类页面查询
public Page<User> findCurrentPage(intpageno) {
Page<User> page =new Page<>(pageno, Constants.PAGE_SIZE);
//查询出总记录数
longtotalRows =dao.selectTotalRows();
page.setTotalRows(totalRows);
//查询出当前页包含的栏目详情
intpageStartIndex =page.getPageStartIndex();
intpageSize =page.getPageSize();
Map<String, Object> map =new HashMap<>();
map.put("pageStartIndex",pageStartIndex);
map.put("pageSize",pageSize);
List<User> datas =dao.selectCurrentPgaeUser(map);
page.setDatas(datas);
returnpage;
}
(2)实现情况
3.2.3.2 对用户的添加
(1)重要代码
@RequestMapping("/userInsert.do")
public String userInsert(Useruser, Model model) {
System.out.println(user);
service.addUser(user);
return"/html/user_management_add.jsp";
}
(2)实现情况
3.2.3.3 .删除
(1)重要代码
@RequestMapping("/userDelete.do")
public String userDelete(intid, Modelmodel) {
service.delete(id);
return"/test/userManage.do?pageno=1";
}
(2)实现情况
3.2.3.4 密码修改、用户修改
(1)重要代码
修改的处理器方法:先通过id查询,数据回显之后,在通过修改处理器方法。
@RequestMapping("/userUpdate.do")
public String userUpdate(Useruser, Model model) {
service.modifyUser(user);
System.out.println(user);
System.out.println("111");
/*return "/html/user_management_password.jsp";*/
return"/test/toUserUpdate.do";
}
@RequestMapping("/toUserUpdate2.do")
public String toUserUpdateId2(intid, Modelmodel) {
User user=service.findUserById(id);
System.out.println(id);
model.addAttribute("user",user);
return"/html/user_management_edit.jsp";
}
@RequestMapping("/userUpdate2.do")
public String userUpdate2(Useruser, Model model) {
service.modifyUser(user);
System.out.println(user);
System.out.println("222");
/*return "/html/user_management_password.jsp";*/
return"/test/toUserUpdate2.do";
}
(2)实现情况
3.2.3.5 批量删除
(1)重要代码
@RequestMapping("userRemove.do")
public String removeNews(Stringnids, User user) {
String[] ids =nids.split(",");
for (Stringstring : ids) {
intid = Integer.parseInt(string);
service.removeUserById(id);
}
return"/test/userManage.do?pageno=1";
}
(2)实现情况
3.2.3.6 对用户名的查询
(1)重要代码
@RequestMapping("/toUserUpdateShow.do")
public String toUserUpdateShow(intid, Modelmodel) {
User user=service.findUserById(id);
System.out.println(id);
model.addAttribute("user",user);
System.out.println("显示成功");
return"/html/user_management_show.jsp";
}
(2)实现情况
3.2.4 网站信息管理模块的实施方案
3.2.4.1查询模块(两个查询子类查询和父类查询)
(1)重要代码
处理器
Dao层
(2)实现情况
查询所有
首页,这是一个全部查询 home(多条新闻)-àgenre(类别),这是一个多对一的关系。
在home类中添加一个域属性private Genre genre;
3.2.4.2添加模块(两个查询子类查询和父类查询)
(1)重要代码
处理器
Dao层
(2)实现情况
添加成功
3.2.4.3删除模块
(1)重要代码
处理器
Dao层
(2)显示情况
删除前
删除后
3.2.4.4修改模块
(1)重要代码
处理器
Dao层
(2)显示情况
修改成功
四、项目说明
登录界面为login.jsp,这个页面在WebContent下的html文件中,登陆后直接点击登录就可以登录到系统,不需要输入密码。我们实现了数据管理中的数据统计,用户管理以及网站信息管理,但是网站信息管理的部分功能在进行·系统整个的时候出现了不能实现的情况,所以在源码中有两个一个是所有的整合在一起的源码,还有一个是网站信息管理单独的实现源码。数据库在打包文件中有一个表名为index的数据库,项目里面的WebContent中的db文件中还有一个数据库备份index。
对于数据管理模块主要包括3部分,分别为数据的添加,数据的查询和数据的删除。其中数据的添加和删除都差不多,查询相比较于其他两个较为复杂,需要定义page类作为查询出来的结果与jsp页面进行数据交互。
添加写的时候问题在于jsp无法调用处理器,后来发现是jsp中的JavaScript与调用处理器的实现发生了冲突,解决诶这个问题后很容易的就可以实现添加功能。查询的时候需要进行分页,也可以很容易的实现,问题还是在于与jsp页面进行数据交互的时候出现了问题,数据无法显示,与源jsp代码中的JavaScript发生了冲突。删除实现的时候因为是根据id进行删除,但是一直无法实现删除,检查代码发现从数据库中读取的数据中没有读取id,解决了这些后,基本的功能够就全部实现了。
在进行小组一起写的时候,写之前应该先统一所用的jar包,jdk的版本,数据源等配置信息,不然最后进行整合的时候会很麻烦,还有就是写的时候要经常进行交流,有时候自己遇到的问题刚好有人解决了就可以马上学习,节省不少的时间。
通过写这个程序,发现了自己的很多不足的地方,对JavaScript的理解不够,没办法读懂原来的jsp页面中的代码,导致前台与后台进行数据交互的时候出现很多问题,所以要好好补一下前端的基本内容,确保可以在以后避免这些问题。
网站信息管理中的首页模块。重要包括四个部分查询部分、修改部分、添加部分、删除。其中查询部分和删除部分大致相同,修改和添加部分有相似的运行原理。四个模块中比较重要的是添加模块和修改模块。
其中添加和修改模块有关于文件的上传。文件上传主要的步骤是:先找到你将要把文件存储的位置;然后去找添加图片的名称和位置;把文件保存到硬盘中;然后通过设置值把图片放到数据库中。
删除和查询的原理:查询包括了两个查询,子类查询父类,一对多的关系。运行的原理:查询到要删除的ID,然后删除对应的整条信息。
程序中存在的问题(以后应该完善的地方):在四个模块整合的过程中由于注解方式的不同导致程序出现问题。我写的程序单独运行能够正常的进行,但是全部整合只要出现文件上传就会出现错误。最后在整合部分把图片写成固定的,上传的是一个固定的图片才能正常运行。
通过该程序自己也认识到了自己哪方面的知识薄弱,自己在平时是学习的时候也要注意基础知识的学习。不仅要对课本知识有很好的掌握,而且要学习很多与专业相关的一些其他内容。只有这样对于个项目的编写才能有更好的认识。自己平时也要多做几个小的项目,这样以后对项目也不会看到就恐惧。除此之外,通过四个人一个小组去完成一个项目,能够促进同学之间的合作,同学之间也能够相互学习,取长补短。在整个项目的过程中,遇到许多问题,都能够相互探讨,比自己一个人去思考会更有效果。懂得一组写一个大项目需要从什么地方入手,怎么分工。
编写的时候jar包需要统一,包的命名,配置环境一致,全注解配置,以及建表需要大家一起来完成和商量。
查询当前页内容、分页内容前台定义的js框架使后台page查询的内容无法实现,于是删除其js框架,使用自己定义的分页功能。
对用户的添加前台js需要调用其对应函数,响应后台处理器的添加的方法,然后跳到添加页面jsp。
删除前台js需要调用其对应函数,响应后台处理器id的删除的方法,然后跳到第一页或者当前页面。
批量删除js使用大量头文件让前台成功是关键,后台将其定义成数组,完成普通删除。
密码修改、用户修改先对应id查询让其修改jsp页面回显数据然后再调处理器完成修改。
过程较复杂,但是关键在于修改有个隐藏id,需要说明<input type="hidden"name="id" value="${user.id }">。
对用户名的查询,跟普通查询一样,但在这里我图片添加到数据库中,将其路径定义传到前台回显,是一次尝试。
主要实现了对数据的查询以及修改的功能,在写这个模块的时候遇到了很多的问题。刚开始的时候因为是复制的oa的项目,在全部删完重新建包滨完成配置后,运行测试时发生了很多的错误,之后又从新写了一个,这些错误才得以解决,可能是因为复制过来后哪里没有改完导致了错误的发生。在实现查询的时候,分页出了点问题,经常出现查询出来后一条数据都没有的时候会发生下一个和末页可以点击的情况,但是点击后就会报错,最后在page类中的得到totalpages的方法中找到了问题的所在,删除的时候出现了页面删除但是数据库没有执行删除的情况,之后发现没有调用处理器,在前台和后台交互的时候出现了问题,之后请教了别人后问题得以解决。
在写程序的时候会出现很多的问题,出现问题的第一步是自己查找,之后网查找,找不到之后最后再向别人进行请教,有一些很简单的问题自己百度一下就可以解决的。通过这个程序认识到了自己对一些基本概念理解的不够深刻,要更加努力的去学习。