一、项目简介
简单教学论坛系统,实现了帖子的分类显示、帖子发布、评论、点赞、系统管理
采用技术、功能需求分析、架构解析等具体内容在团队博客中展示。
Gitee仓库地址:https://gitee.com/veryls_liu/we-learn
团队博客地址:团队合作:教学论坛系统-CSDN博客
二、关于分工
由于jsp页面与Controller层通过url有深度联系,故将其分给一人完成,剩下的模型层正好由dao层与service层构成,故分别交给两人完成。在整个开发过程中,并没有感到分工的过于分裂以及相互联系的不便,所以我认为这种分工方式是成功的。
小组成员信息 | |||||
班级 学号 | 计科23-3 | 姓名 (*组长*) | 刘 | 自评分 | 85 |
教师评分 | |||||
负责模块 | 1.实现数据持久化和访问 (620行) 2.Spring框架集成与MVC架构配置优化 (100) 3.Web层配置 (50) | ||||
班级 学号 | 计科23-3 | 姓名 (组员) | 陈 | 自评分 | 85 |
教师评分 | |||||
负责模块 | 1. Web操控中枢设计 (460) 2.JSP页面开发 (1000+) 3.项目部署 | ||||
班级 学号 | 计科23-3 | 姓名 (组员) | 张 | 自评分 | 80 |
教师评分 | |||||
负责模块 | 1.设计模型对象 (390) 2.核心业务逻辑实现 (250) |
三、个人任务简述:
序号 | 完成功能与任务 | 描述 |
1 | 数据库搭建 | 使用MySQL数据库实现了对用户、帖子等的储存,确保了数据的稳定存储与高效查询。 |
2 | 数据库读写编码部分 | 使用了DAO模式。使用了Mybatis框架和dbcp数据库连接池连接数据库,提高了数据库链接的性能。 |
3 | Spring框架的配置 | 编写Spring核心配置文件,分别对dao层和service层配置,确保实体类对象的构建由Spring管理。 |
4 | Spring MVC配置 | 有效地分离了视图展示和业务逻辑,提升了请求处理的灵活性和错误处理能力。 |
四、本人负责功能详解
1.*数据库读写编码部分(DAO层)
技术:
使用Mybatis框架,通过编写mapper包内的配置文件,实现DAO层的接口。
难点:
1. 处理对象之间的关联关系
2.动态SQL编写复杂
解决方法:
- 1. 规范
ResultMap
的名称,正确使用collection
标签,实现了“一对多”关联关系的映射。在下图中,命名为BoardAndPostMap
用于加载Board
实体及其关联的所有Post
实体信息,在collection
标签内部,定义了Post
实体的各个属性与数据库字段的映射,包括postId, postBoardId, postUserName
等,这些定义了如何从数据库中加载与Board
相关的所有Post
记录。 - 合理组织代码结构,使用
<if>
、<choose>
、<when>
、<otherwise>
等标签清晰地表达逻辑,下图展示添加新板块方法,由于管理员添加板块的简介(desc)可能为空,故使用<if>
判断SQL语句段是否生成。
2* Spring框架的配置
难点:
1.配置复杂性
2.依赖注入理解与应用
3.整合Mybatis框架
解决:
- 使用xml配置和注解配置,编写
applicationContext.xml
文件,分别对Dao层和service层进行配置。在service层中,为接口实现类额外创建Impl包,将服务接口与实现分离有助于Spring更容易地创建代理对象。在Controller层中,通过使用@Autowired注解,Spring可以根据类型自动注入依赖的服务接口实例,无需硬编码具体的实现类。 - 深入学习依赖注入的核心概念,明确构造器注入、setter注入等不同注入方式的适用场景。
- 在这个项目中,Mybatis核心配置文件(mybatis-config)中获取数据源的配置全部转移至applicationContext。Spring框架无缝集成了MyBatis作为数据访问层,利用JDBC进行数据库操作,同时与Tomcat服务器协同工作
3. *Spring MVC
难点:
SpringMVC框架包含众多组件(如DispatcherServlet、HandlerMapping、HandlerAdapter等),理解它们的角色和相互之间的关系比较复杂。
解决:
深入学习SpringMVC的工作流程,通过实践逐步掌握每个组件的功能和配置方式。参考官方文档和实战教程,动手搭建项目以加深理解。
五、课程设计感想
1.项目的开发重在管理,要构建清晰的结构,各层次协调
2.我体验到了理论知识与实践操作结合的重要性。面对诸多技术挑战,如Mybatis的动态SQL编写、Spring框架的复杂配置、以及SpringMVC组件的深入理解,每一步都考验着我的耐心与解决问题的能力。特别是在处理对象关联关系和动态SQL方面,我意识到理论上的简单描述往往在实际操作中会遇到意想不到的复杂情况。通过不断查阅资料、反复调试代码,我学会了如何有效利用ResultMap和动态标签来优化数据访问逻辑,以及如何通过合理配置Spring来提升应用的架构灵活性。
Spring框架的配置起初让我感到困惑,特别是依赖注入的深入理解和Mybatis的集成,但通过不断学习和实践,我逐渐掌握了配置文件的精髓,明白了构造器注入与setter注入的适用场景。这个过程虽然充满挑战,但也让我对Spring有了更全面、深入的理解。
在Spring MVC部分,我认识到组件之间的协同工作对于构建高效Web应用的重要性。通过亲手搭建项目,我不仅熟悉了DispatcherServlet、HandlerMapping等核心组件的作用,还学会了如何优化请求处理流程,增强了对MVC架构的认识。
3.体会到了团队合作的力量,通过与队友的交流和协作,我们共同克服了许多难题。这次经历不仅锻炼了我的编程技能,更重要的是,培养了我独立解决问题和持续学习的能力。
六、展望
- 功能不足与改进方法:
1.注册和登录功能缺乏对用户输入数据的校验,会学习JavaScript,对用户的输入进行规范和提示。
2.搜索功能不够强大,未来可以引入全文搜索引擎如Elasticsearch,提升帖子和评论的检索速度与精确度。
3.对于点赞和评论功能,可以增加防刷机制,确保用户互动的真实性和公平性。
- 课设后的进一步学习与实践: 我计划进一步深化SSM的学习,了解一些底层机制。另外,为了保证代码质量,我将着手学习单元测试和集成测试,利用JUnit和Mockito等工具,为项目增加自动化测试覆盖率,确保每一次更新都能稳定运行。