考试啦啦啦

一、掌握前后端项目依赖与配置
1. 分别写出后端项目 WebBackend WebBackend2 pom 依赖(只要求写 artifactId 名称,并分别顺
序编号)。
答:
2. 分别截图项目 WebBackend WebBackend2 配置文 件代码。
答:
WebBackend 配置文件如下:
WebBackend2 配置文件如下: 3. 比较项目 WebBackend WebBackend2 启动文件 代码的异同点。
答:
WebBackend WebBackend2 的启动文件代码对比如下:
相同点:
1 )都使用了 @SpringBootApplication 注解,表明它们是 Springboot 主启动类。
2 )都 重写了接口的 addCorsMappings() 方法, 允许跨域请求
3 )都 重写了接口的 addInterceptors () 方法, 配置拦截器。
不同点:
1 )启动类 WebBackendApplication 实现了 WebMvcConfigurer 接口。
2 )启动类 WebBackend2Application 未实现接口 但对返回值类型为 WebMvcConfigurer 的方
setWebMvcConfiguration() 使用 @Bean 注解。
4. 分别截图前端项目 webfront 生产依赖和项目构建主文件 main.js 的代码。
答:
webfront 生产依赖代码如下: 项目构建主文件 main.js 代码如下:
5. 为什么三个项目可以同时运行?前端项目如何切换使用不同的后端项目?
答:
1 )因为每个项目的运行端口不同,可以同时运行,并不冲突。
2 )在 main.js 中,可以切换不同后端项目,通过切换 axios 的基地址,如下所示:
二、 分析后端项目 WebBackend,掌握后端项目的开发技术
1. Token 信息由哪三个部分组成?项目在哪个控制器的哪个方法里生成 JWT Token 信息?
答:
1.1 Token 信息由以下三部分组成:
1 )头部: Header (定义类型和加密算法)
2 )数据: Payload (存放有效信息)
3 )签名: Signature (验证令牌的完整性)
1.2
项目在 AdminController 控制器的 adminLogin 方法里生成 JWT Token 信息: 2. 截图使用 Postwoman 测试生成 Token 信息?截图在 官网 https://jwt.io 解码和校验 Token 的结果。
答:
1 使用 Postwoman 测试生成 Token 信息如下:
2 https://jwt.io 官网中 首次输入 Token 信息 ,效果如下: 再次输入我们的 秘钥(加密盐) code-duck-*%#@*!& ,效果如下:
3. 截图学院控制器 CollegeController 方法 updateCollege() 的代码,为什么方法参数未使用实体类类
型?
答:
updateCollege 方法中,参数使用了 Map<String, String> 对象而不是实体类 College ,这是因
为该方法需要处理三个键值对( "newName" "oldName" "xuhao" ),而实体类 College 只有两个字段
"name" "xuhao" )。通过 Map<String, String> 对象,我们可以灵活的传递和处理不同的键值对。
4. 分别截图类 MajorDto 和专业控制器 MajorController 方法 updateMajor() 的代码,并指出 DTO 对象
与实体类对象的区别与联系。
答: DTO 对象与实体类对象的区别与联系:
DTO 对象 用于 数据传输和格式转换 ,可以 定义一组特定的字段 ,用于满足特定业务场景或前端页面
的数据需求, 减少数据传输量 不会持久化
实体类对象 用于 与数据表进行映射, 主要关注 数据的持久化和业务逻辑
三、 分析后端项目 WebBackend 与 WebBackend2 的异同点
1. 假定使用 Spring Boot+Sping Data JPA 的后端项目 WebBackend 已经完成,如何改写成 Spring
Boot+MyBatis Plus ?给出主要步骤。
答:
首先,修改 pom.xml 文件,换成 MyBatisPlus 依赖: mybatis-plus-boot-starter 然后修改项目配
置文件 ,添加 MyBatisPlus 配置:
mybatis-plus:
mapper-locations: classpath*:mapper/**/*.xml
#指定 XML 映射文件路径,可去。
type-aliases-package: com.example.webbackend.dao.entity
#指定实体类包名
configuration:
map-underscore-to-camel-case: false
#关闭驼峰转换
然后,修改 dao 层,将 jpa 目录 修改为 mapper 目录 :其中每个接口都继承 BaseMapper< T >
接口。这样,我们就可以使用默认的接口方法。
如果需要编写自定义方法实现,则需要去 resources/mapper 目录下创建对应的 xml 映射接口
文件。最后,我们去服务层实现类中进行修改,将 dao 层对象的注入从 Repository 接口改为 mapper
接口。再将一些方法调用的名字需要修改为 Mapper 的方法即可。
服务层接口和控制层不用修改
2. 项目 WebBackend DAO 层接口继承什么接口?该泛型接口包含哪两个参数类型? 增删改操作
方法 的注解与 Select 查询方法 的注解有何差别?
答:
项目 WebBackend DAO 层接口继承了 JpaRepository<T, ID> ,该泛型接口包含了两个参数
类型,分别是实体类 T 以及实体类的主键类型 ID Select 查询 的注解只有 @Query ,而 增删改操作方法
注解除了 @Query 之外,还必须添加 @Modifying @Transcational 注解。
3. 项目 WebBackend2 DAO 层继承什么接口?该泛型接口的参数类型是什么?哪个映射接口使用
了自定义方法?对应的 XML 映射文件一般要放在什么位置?
答:
项目 WebBackend2 DAO 层继承 BaseMapper< T > 接口,该泛型接口的参数类型是实体类类
型。 AdminMapper 映射接口使用了自定义的方法,对应的 xml 映射文件 AdminMapper.xml 一般放
resources/mapper 目录。 4. 两个后端项目是如何设置允许跨域请求的?分别截图相关代码。
答:
项目 WebBackend
项目 WebBackend2 四、 分析前端项目 webfront,掌握前端项目的开发技术
1. 截图 App.vue 组件的方法 adminLogin() 代码,并加框标记建立 sessionStorage 存储的代码。执行
登录操作后,按 F12 打开浏览器调试窗口的 Application 选项,截图会话存储的信息。
答:
2. 截图 ManageCollege.vue 组件的方法 updateCollege() 代码,并加框标记使用请求头携带 Token
代码。
答: 3. 能否在不登录的情况下,使用 Postwoman 测试出来的 Token 信息作为浏览器会话存储信息,实现
对管理功能的使用?并简要说明其理由。
答:
可以。 请求管理功能的控制器方法会被拦截并进行身份认证,当携带有效的 Token 信息以后,
就可以被放行。因此,手工将 Token 信息写入到浏览器会话存储信息中,就可以实现在不登录的情况下对
管理功能的使用。
我们来实践一下。 首先用 Postwoman 测试用户登录,此时我们就拿到了一个 Token 信息:
下面,我们 将得到的 Token 信息写入到浏览器会话信息中,就可以实现对管理功能的使用:
【小结】
1. 试比较 前后端分离项目 与不分离项目的异同点。
答:
相同点。
(1)程序采用分层架构。无论是前后端分离项目还是非分离项目,它们都遵循通用的分层架构,如
DAO 层、Service 层和 Controller 层,以实现代码的组织和职责分离。
(2)用户认证。前后端分离项目和非分离项目都需要实现用户认证功能,确保用户身份的安全性和
权限控制。
(3)业务处理与数据展示。无论是前后端分离项目还是非分离项目,它们都需要进行业务逻辑处理
和数据展示,以满足用户的需求。 不同点。
1)开发和部署方式不同。在前后端分离项目里, 前端和后端独立开发和部署 ,前端以 JSON 格式
与后端 API 进行交互,后端项目不是 MVC 架构(不包含视图)。非前后端分离项目一般采用 MVC 架构,
控制器将结果数据以 请求转发 的方式交给视图展示。
(2)方法及参数注解不同。在前后端分离项目里,后端控制器方法使用 @ResponseBody 注解,方
法参数使用 @RequestBody 注解。在非前后端分离项目中,通常情况下,方法不使用 @ResponseBody
注解,方法参数不使用 @RequestBody 注解。
(3)用户认证方式不同。 前后端非分离项目可以使用简单的基于 Cookie 的 Session 认证,而前后
端分离项目使用会话存储的 JWT Token 等验证方式。
(4)跨域访问问题。前后端分离项目必须配置允许跨域访问,非分离项目则不存在跨域访问问题。
2. 后端项目的服务层里,能否不写接口?为什么建议要写接口?
答:
可以不写接口,但建议写接口。 因为使用接口可以实现松耦合,即便后续需要更改或
替换实现,只需确保新的实现符合接口定义即可,而不会影响调用方的代码。 将接口定义与具体
实现分离开,利于扩展,轻松更改实现类,提高代码的可维护性。
3. 后端你个人偏向于使用 Spring Boot+Spring Data JPA?还是 Spring Boot+MyBatis Plus?为
什么?
答:
我更偏向使用 Spring Boot+MyBatis Plus,提供了大多数基础 CRUD 功能的方法,复杂功能
使用 XML 映射文件即可实现,对数据库层面的优化和定制更为灵活。
4. 如何运行打包后的后端项目
答:
打包后的后端项目一般是 jar 文件,只需在命令行中输入 java 命令即可:
java -jar project-name.jar
5. 在前后端分离项目里,Nginx 服务器有什么作用?
答:
在前后端分离的项目里,Nginx 服务器充当 静态服务器 提供访问静态页服务 ,将 Vue 项目的
构建输出目录作为根目录进行访问。当客户端请求该 Nginx 服务器时,Nginx 将直接提供静态文件,并未
代理到其他目标服务器(即未使用反向代理功能)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小珠佩奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值