目录
科研资讯推送系统 1
技术选型 1
部署 2
爬虫 2
功能 2
查看论文 2
设置领域 3
查看学术活动 6
关注实体查看 8
关注实体设置 10
管理员功能 10
使用 11
开发 11
- 引言 11
- 需求分析 13
时间特性要求 25
application/x-www-form-urlencoded 26
multipart/form-data 26
application/json 27 - 系统分析 29
Static 32
Js 32 - UML 设计 37
外存设备及外存空间的组织 58
访问数据的方式方法 58
查 71
多对多映射实现 71
增 72
删 72
改 73 - 系统测试 76
- 课设中遇到的问题及解决 91
- 课程设计总结 94
- 参考文献 95
部署 96 - 系统分析
3.1.新系统的子系统划分
本项目使用 Spring 进行开发,故先介绍 Spring 的子系统划分。在 Spring 的子系统划分的基础上,介绍新系统功能的子系统划分。
3.1.1.Spring 的子系统划分
Spring 的核心是一个容器,通常称为 Spring 应用程序上下文,用于创建和管理应用程序组件。这些组件(bean)在 Spring 应用程序上下文中连接在一起以构成一个完整的应用程序,就像将砖、灰浆、木材、钉子、管道和电线绑在一起以组成房屋。
将 bean 连接在一起的行为是基于一种称为依赖注入(DI)的模式。依赖项注入的应用程序不是由组件自身创建和维护它们依赖的其他 bean 的生命周期,而是依赖于单独的实体(容器)来创建和维护所有组件,并将这些组件注入需要它们的 bean。通常通过构造函数参数或属性访问器方法完成此操作。
例如,假设在应用程序的许多组件中,要处理两个组件:
inventoryservice(用于获取库存级别)和 productservice(用于提供基本产品信息)。productservice 取决于 inventoryservice,以便能够提供有关产品的完整信息。

我认为,依赖注入是一个非常天才和伟大的发明创造,大大减少了开发过程中繁琐的主动注入过程,减少了耦合和依赖。
3.1.2.SpringFramework
也就是我们经常说的 Spring 框架,包括了 IoC 依赖注入,Context 上下文、bean 管理、SpringMVC 等众多功能模块,其它 Spring 项目比如 SpringBoot 也会依赖 Spring 框架。
3.1.3.SpringBoot
SpringBoot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。SpringBoot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 maven 整合了所有的 jar 包,SpringBoot 整合了所有的框架(不知道这样比喻是否合适)。
3.1.4.SpringData
是一个数据访问及操作的工具集,封装了多种数据源的操作能力,包括:JDBC、Redis、MongoDB 等。使用 SpringData,能简化对数据库的访问,加强项目的维护能力。
3.1.5.SpringSecurity
SpringSecurity 主要用于快速构建安全的应用程序和服务,在 SpringBoot 和 SpringSecurityOAuth2 的基础上,可以快速实现常见安全模型,如单点登录,令牌中继和令牌交换。比较常见的是 oauth2 授权机制和 jwt 认证方式。oauth2 是一种授权机制,规定了完备的授权、认证流程。JWT 全称是 JSONWebToken,是一种把认证信息包含在 token 中的认证实现,oauth2 授权机制中就可以应用 jwt 来作为认证的具体实现方法。
@Controller@RequestMapping("/paper/paper")public class PaperController extends BaseController {
@Autowired
private PaperService paperService;
@Autowired
private UserService userService;
@RequestMapping(value = "/list")
@ResponseBody
public Object list(@RequestParam(required = false)
String title) {
Page<Paper> page = new PageFactory<Paper>().defaultPage();
Long userId = ShiroKit.getUser().getId();
List<Paper> rsl = paperService.findByUserId(userId);
page.setRecords(rsl);
page.setTotal(Integer.valueOf(rsl.size() + ""));
return packForBT(page);
}}






































