# lagou-stage1-module3 **Repository Path**: supermari0/lagou-stage1-module3 ## Basic Information - **Project Name**: lagou-stage1-module3 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-11-17 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 作业一说明 该项目是自定义 MVC 框架的实现, 并自定义`@Security`注解实现指定路径的权限校验功能 项目代码分为两个模块 - `mvc-framework` 自定义 MVC 框架的实现代码 + `annotations`包是自定义注解 + `interceptor`是提供的一个*HandlerInterceptor*接口,可实现该接口后实现请求拦截器 + `models`定义了实体类 * `Handler`是一个处理映射的实体类,记录哪个`Controller`的什么`Method`可以实现什么路径请求 + `servlet`是整个自定义*MVC*框架的核心 * `DispatcherServlet`是用于请求分发,将所有的请求都交给它处理,它将请求分发到可以处理该请求的`Handler`中调用 + `utils`工具类 - `mvc-test` 框架功能测试代码 + `controller`请求接口定义 + `interceptor`自定义请求拦截器,用于实现权限校验 + `service`处理业务逻辑的代码 + `resources`配置文件,主要配置了包扫描路径 项目集成了`tomcat-maven`插件, 可在 IDEA 右侧 Maven 窗口中运行`tomcat7:run`启动 **注: 启动前需先对整个 `security-mvc`执行`install`命令** 根据作业要求共在`mvc-test`项目中设计了 + 两个用户 - *zhangsan* - *lisi* + 有三个请求路径(若项目启动成功后直接点击就可看到结果) - [用户都能请求的路径(*zhangsan*和*lisi*)](http://localhost:8080/security/all?name=zhangsan) ![用户都能请求的路径](验证资料/task1/用户都可以访问的路径.png) - [只有*zhangsan*有权限的路径](http://localhost:8080/security/onlyZhangSan?name=zhangsan) - [只有*lisi*有权限的路径](http://localhost:8080/security/onlyLiSi?name=lisi) ![授权用户访问路径](验证资料/task1/授权用户访问路径.png) 若用户请求了没有对自己授权的接口会提示没有权限, 比如以下接口 - [*wangwu*(不存在的用户)请求接口](http://localhost:8080/security/all?name=wangwu) - [*zhangsan*请求了*lisi*的接口](http://localhost:8080/security/onlyLiSi?name=zhangsan) - [*lisi*请求了*zhangsan*的接口](http://localhost:8080/security/onlyZhangSan?name=lisi) ![未授权的请求](验证资料/task1/未授权的请求.png) --- # 作业二说明 该项目基于SSS框架实现,即整合了Spring + Spring MVC + Spring Data Jpa 项目代码为`sss-resume`模块 - `controller`包内定义了项目的对外接口实现 + `LoginController`主要是和登陆操作相关的接口 + `ResumeController`定义了简历的增删改查操作接口 - `dao`包是持久层代码, 实现了`JpaRepository`和`JpaSpecificationExecutor`接口进行基础的CRUD操作 + `JpaRepository`接口中定义了一些简单的基本操作 + `JpaSpecificationExecutor`接口则定义了一些动态查询的操作,可以使数据库操作更加灵活 - `interceptor`包中定义了自定义的登陆校验拦截器 + 除登录相关接口,其余的接口都需要进行登录验证 - `models`包下是定义的一些实体类,Jpa的`EntityManagerFactory`包扫描配置的包就是这个 + `Result`是接口统一的返回实体类,接口通过使用`@ResponseBody`注解并在配置文件中指定`MessageConvertor`将返回结果以Json的形式返回 + `Resume`是对应数据库表(*tb_resume*)的实体类 - `service`包则是简单的对`dao`层的逻辑进行封装 - `resources`是*Spring*的一些配置文件 - `webapp`是web项目的根目录 根据作业要求共实现了两个页面*登陆*和*简历首页* - 登陆页面(用户名密码:admin/admin)[http://localhost:8081/login](http://localhost:8081/login) ![登陆页面](./验证资料/task2/登陆页面.png) - 简历首页(访问首页需登录)[http://localhost:8081](http://localhost:8081) ![简历首页](./验证资料/task2/简历首页.png) + 在简历首页顶部可以新增简历, 在右侧的表单中输入新简历的信息,点击`新增简历`按钮就可以在数据库中插入一份简历 + 在简历表格中,`编辑`按钮可以将右侧的表单切换为编辑模式,修改简历信息,点击`更新简历`按钮就可以对简历信息修改 + 点击`简历`最后的删除按钮,可以将简历从数据库中删除掉 + 完成操作最后可点击顶部的`退出登陆`,就可以从本系统退出,如需再次操作简历需重新登陆