企业级web开发框架-期中测试
选择题
-
哪个注解用于处理请求 url 映射,可用于类或方法上 A、 @Controller B、 @RequestMapping C、 @RequestParam D、 @ResponseBody
B、@RequestMapping
-
下列关于SpringBoot配置文件描述错误的一项是( ) A、 SpringBoot默认不支持日志配置 B、 application配置文件中可使用server.port=8081修改Tomcat端口。 C、 SpringBoot中配置文件支持.properties和yml两种格式。 D、 SpringBoot的核心理念是约定优于配置,约定了配置文件默认可以是application.yml
A、SpringBoot默认不支持日志配置是错误的描述。SpringBoot默认使用Logback作为日志框架,并且可以通过配置文件进行日志的配置。
-
SpringBoot中使用学习三方框架如security可以方便配置的切换日志级别辅助调试:logging.level.org.springframework.security=debug。请问,按照如上配置,下面那种日志级别的信息不会被输出到控制台( ) A、 trace B、 warn C、 danger D、 info
B、warn
-
你确定吗
我之前的回答有误,正确答案是D、info。因为debug级别包含了info级别,所以配置了debug级别后,info级别的日志信息也会被输出到控制台。
-
下列关于SpringBoot描述错误的一项是( ) A、 SpringBoot使用默认配置可以提高软件开发效率,尤其契合微服务和敏捷开发模式。 B、 @SpringBootApplication注解是一个复合注解,内部包含了@ComponentScan注解,因此包扫描自动生效。 C、 SpringBoot中,默认的包扫描自动开启,可以扫描到本项目中任意层级任意位置的@Component注解标注的Java类,从而实例化对象放入容器中。 D、 SpringBoot的核心理念是约定优于配置,约定了配置文件默认可以是application.yml
C、SpringBoot中,默认的包扫描并不会扫描到本项目中任意层级任意位置的@Component注解标注的Java类,而是只会扫描启动类所在的包及其子包中的组件。如果需要扫描其他包中的组件,需要使用@ComponentScan注解或者在启动类上使用@Import注解手动导入其他配置类。
-
5、 经典MVC中完成视图View中自动绑定Model中的数据的第三方依赖库如Jsp /Thymeleaf /Freemaker 等统称为? A、 数据容器 B、 模板文件 C、 模板引擎 D、 项目依赖
C、模板引擎
判断题
-
1、 SpringBoot项目只能支持前后端分离工程,不能支持JSP等模板引擎下的经典MVC工程。( ) 正确 错误
错误。SpringBoot项目不仅支持前后端分离工程,也支持经典MVC工程。可以使用Thymeleaf、Freemarker等模板引擎来完成视图层的开发。同时,SpringBoot也提供了对JSP的支持,但需要注意的是,使用JSP需要额外配置,而且在SpringBoot 2.4.0版本之后,不再默认支持JSP。
-
springboot应用只能以 Maven 作为项目构建方式( ) 正确 错误
错误。Spring Boot 应用可以使用 Maven 或 Gradle 作为项目构建方式。
-
SpringBoot简化了xml配置,快速整合框架( ) 正确 错误
正确。Spring Boot 确实简化了 XML 配置,同时也提供了自动配置和快速整合框架的功能,使得开发者可以更加快速地搭建项目。
-
SpringSecurity中匿名过滤器中匿名用户的信息不能随意个性化设置。( ) 正确 错误
错误。Spring Security 中的匿名过滤器可以通过配置文件进行个性化设置,例如可以设置匿名用户的用户名、权限等信息。可以使用 anonymous()
方法来配置匿名用户的信息,例如:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/public/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll()
.and()
.anonymous()
.principal("guest")
.authorities("ROLE_GUEST")
.and()
.csrf().disable();
}
在上面的例子中,我们设置了匿名用户的用户名为 “guest”,权限为 “ROLE_GUEST”。
-
SpringBoot 是 Spring 框架对“约定优先于配置(Convention Over Configuration)”理念的最佳实践的产物( ) 正确 错误
正确。Spring Boot 是 Spring 框架对“约定优先于配置”理念的最佳实践的产物。它通过提供默认的配置和自动配置的方式,使得开发者可以更加快速地搭建项目,同时也可以根据需要进行个性化的配置。
填空题
-
1: 前后端分离项目中,controller返回JSON数据格式一般用 注解
@RestController 注解。该注解是 @Controller 和 @ResponseBody 注解的组合,用于标识该类是一个控制器,并且其中的方法返回的是 JSON 格式的数据。
-
2: 标注了 注解的 Java 类定义都是一个 JavaConfig 配置类。
@Configuration 注解。该注解用于标识一个 Java 类是一个配置类,其中定义的方法可以用于配置应用程序上下文中的 bean。在 Spring Boot 中,通常使用 JavaConfig 的方式来进行配置,因此标注了 @Configuration 注解的 Java 类定义都是一个 JavaConfig 配置类。
-
3: SpringBoot程序是通过 方法开始执行的。
main() 方法。Spring Boot 程序是一个 Java 应用程序,因此它的入口点是 main() 方法。在 main() 方法中,我们可以通过 SpringApplication.run() 方法来启动 Spring Boot 应用程序。例如:
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
-
4: 一个标注了 注解的方法,其返回值将作为一个 bean 定义注册到 Spring 的 IoC 容器, 将默认成为该 bean 定义的 id。
@Bean 注解。一个标注了 @Bean 注解的方法,其返回值将作为一个 bean 定义注册到 Spring 的 IoC 容器,方法名将默认成为该 bean 定义的 id。例如:
@Configuration
public class MyConfiguration {
@Bean
public MyBean myBean() {
return new MyBean();
}
}
在上面的例子中,我们定义了一个名为 myBean 的 bean,其类型为 MyBean,通过 @Bean 注解将其注册到 Spring 的 IoC 容器中。由于方法名与 bean 的 id 相同,因此不需要指定 id。
简答题
-
简述接口文档Swagger3在前后端分离项目中的作用。(说出三点即可)
Swagger3 是一个开源的 API 文档工具,可以帮助开发者自动生成和维护 API 文档。在前后端分离项目中,Swagger3 的作用如下:
- 自动生成 API 文档:Swagger3 可以通过扫描代码中的注解自动生成 API 文档,包括 API 的请求地址、请求参数、响应数据等信息,使得开发者可以更加方便地查看和理解 API 的使用方式和规范。
- 接口测试和调试:Swagger3 提供了一个交互式的 UI 界面,可以让开发者直接在浏览器中测试和调试 API 接口,不需要使用其他工具或者编写测试代码,提高了开发效率。
- 接口规范和约束:Swagger3 可以通过注解来定义 API 的请求和响应数据格式、参数校验规则等约束,使得 API 接口的使用更加规范和统一,减少了开发者的错误和疏漏。同时,Swagger3 还可以通过配置文件来定义全局的 API 规范和约束,使得整个项目的 API 接口都具有一致的风格和规范。
-
如何理解SpringBoot中的Starters?并列举常用3中starters。
Spring Boot Starters 是一组预定义的依赖关系,可以帮助开发者快速地集成和使用各种常用的技术和框架。Starters 通常包含了一组相关的依赖关系,例如 Web Starter 包含了 Spring MVC、Tomcat、Jackson 等依赖,JPA Starter 包含了 Hibernate、Spring Data JPA 等依赖。使用 Starters 可以避免开发者手动添加依赖关系的繁琐和错误,同时也可以保证依赖关系的版本兼容性和稳定性。
常用的三种 Starters 如下:
- Spring Boot Starter Web:包含了 Spring MVC、Tomcat、Jackson 等依赖,用于开发 Web 应用程序。
- Spring Boot Starter Data JPA:包含了 Hibernate、Spring Data JPA 等依赖,用于访问和操作关系型数据库。
- Spring Boot Starter Test:包含了 JUnit、Mockito、Hamcrest 等依赖,用于编写和执行单元测试和集成测试。
-
3、 列举四方面SpringBoot做Web软件开发的优点?
Spring Boot 是一个快速开发框架,具有以下四个方面的优点:
- 简化配置:Spring Boot 提供了自动配置的功能,可以根据项目的依赖关系自动配置应用程序上下文,避免了繁琐的配置过程。
- 快速开发:Spring Boot 提供了大量的 Starter,可以快速集成和使用各种常用的技术和框架,例如 Web、JPA、Security 等,使得开发者可以更加专注于业务逻辑的实现。
- 易于部署:Spring Boot 应用程序可以打包成一个可执行的 JAR 文件,可以直接通过 java -jar 命令启动,无需安装和配置 Tomcat 等 Web 服务器,使得部署和运维更加简单和方便。
- 高度可定制:Spring Boot 提供了丰富的配置选项和扩展点,可以根据需要进行个性化的配置和扩展,同时也可以通过自定义 Starter 来实现对第三方技术和框架的集成和支持。
-
4、 SpringBoot的核心注解是哪个?它主要由哪几个注解组成的?
Spring Boot 的核心注解是 @SpringBootApplication。它主要由以下三个注解组成:
- @SpringBootConfiguration:该注解是 @Configuration 注解的派生注解,用于标识该类是一个 Spring Boot 的配置类。
- @EnableAutoConfiguration:该注解用于启用 Spring Boot 的自动配置功能,可以根据项目的依赖关系自动配置应用程序上下文。
- @ComponentScan:该注解用于扫描指定的包和类,将其中标注了 @Component、@Service、@Controller 等注解的类注册为 Spring 的 bean,使得它们可以被应用程序上下文所管理和使用。
这三个注解的组合,可以让 Spring Boot 应用程序自动配置和启动,同时也可以扫描和注册指定的 bean,使得开发者可以更加专注于业务逻辑的实现。
-
5、 请简述Spring和SpringBoot的区别与联系?
Spring 是一个开源的企业级应用程序开发框架,提供了一系列的组件和工具,用于简化企业级应用程序的开发和集成。Spring Boot 是 Spring 的一个子项目,是一个快速开发框架,可以帮助开发者快速地创建和部署 Spring 应用程序。
区别:
- 配置方式不同:Spring 需要手动配置各种组件和依赖关系,而 Spring Boot 提供了自动配置的功能,可以根据项目的依赖关系自动配置应用程序上下文。
- 依赖管理不同:Spring 需要手动管理各种依赖关系和版本兼容性,而 Spring Boot 提供了 Starter 的功能,可以快速集成和使用各种常用的技术和框架。
- 开发效率不同:Spring 需要手动配置和管理各种组件和依赖关系,开发效率相对较低,而 Spring Boot 提供了自动配置和 Starter 的功能,可以大大提高开发效率。
联系:
- Spring Boot 是 Spring 的一个子项目,是在 Spring 的基础上进行的扩展和增强。
- Spring Boot 依赖于 Spring,可以使用 Spring 的各种组件和工具,例如 Spring MVC、Spring Data、Spring Security 等。
- Spring Boot 可以与 Spring 集成,使用 Spring 的各种组件和工具,同时也可以通过自定义 Starter 来扩展和增强 Spring Boot 的功能。
编程题
-
只需要补全代码,不需要其他说明 1、 以下程序为springBoot整合MyBatis实现查询功能,请补全以下代码。 (15分) (1)pom.xml文件 ependencies> ...... -- 添加springboot整合Mybatis --> ependency> roupId>org.mybatis.spring.bootroupId> rtifactId> rtifactId> ersion>1.2.2ersion> ependency> ....... ependencies> (2)在application.properties配置文件中添加数据库的支持 #DB Configuration: #配置驱动类 spring.datasource. = com.mysql.jdbc.Driver #配置URL,链接本地数据库test . .url = jdbc:mysql:// / ?useUnicode=true&characterEncoding=utf-8&useSSL=false #数据库用户名和密码分别为root,123456 . . = root spring.datasource. = (3)在SpringBoot的启动类里面增加用来扫描Mapper接口的注解,用来扫描Mapper包下面的接口。 //补全适当的注解 @ ("com.qst.*") public class App { public static void main(String[] args) { } }
......
<!-- 添加springboot整合Mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.2.2</version>
</dependency>
.......
#DB Configuration:
#配置驱动类
spring.datasource.driver-class-name = com.mysql.jdbc.Driver
#配置URL,链接本地数据库test
spring.datasource.url = jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
#数据库用户名和密码分别为root,123456
spring.datasource.username = root
spring.datasource.password = 123456
//补全适当的注解
@SpringBootApplication(scanBasePackages = “com.qst.*”)
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
-
编写前后端分离的项目,自定义controller统一异常处理。(15分) 用户需求:当后端程序员在controller,service等地方手动抛出异常时,希望该异常信息能够被前端接收,并进一步处理后显示给用户。要求自定义一个运行时异常(子类),任意controller中抛出该异常时异常被捕获返回给前端信息和HTTP状态码700。 //请于此自定义异常 //请于此控制器统一异常处理
自定义异常:
public class CustomException extends RuntimeException {
private Integer code;
private String message;
public CustomException(Integer code, String message) {
this.code = code;
this.message = message;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
@Override
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
控制器统一异常处理:
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(CustomException.class)
public ResponseEntity<ErrorResponse> handleCustomException(CustomException e) {
ErrorResponse errorResponse = new ErrorResponse(e.getCode(), e.getMessage());
return new ResponseEntity<>(errorResponse, HttpStatus.valueOf(700));
}
@ExceptionHandler(Exception.class)
public ResponseEntity<ErrorResponse> handleException(Exception e) {
ErrorResponse errorResponse = new ErrorResponse(500, "服务器内部错误");
return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
其中,ErrorResponse
是一个自定义的响应实体类,用于封装异常信息返回给前端。
-
3、 创建springBoot程序,完成页面按钮发送请求后,后端向前端页面直接输出“Hello,springBoot”,补全下面关键代码即可。(15分) (1)pom.xml文件 ependencies> ...... -- 请补全springboot的web支持的配置 --> ependency> roupId>org.springframework.bootroupId> rtifactId> rtifactId> ependency> ....... ependencies> (2)Controller //添加适当注解 public class HelloWorldController { //补全以下注解 @ ("/hello") //添加适当注解 public hello(){ return "Hello,springBoot"; } } (3)页面 orm action=" "> utton type=" ">springboot测试utton> orm>
(1)pom.xml文件
<dependencies>
......
<!-- 添加springboot的web支持的配置 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
.......
</dependencies>
(2)Controller文章来源:https://www.toymoban.com/news/detail-466358.html
@RestController
public class HelloWorldController {
//添加适当注解
@GetMapping("/hello")
//添加适当注解
public String hello(){
return "Hello,springBoot";
}
}
(3)页面文章来源地址https://www.toymoban.com/news/detail-466358.html
<form action="/hello">
<button type="submit">springboot测试</button>
</form>
到了这里,关于企业级web开发框架-期中测试(答案由chatgpt被动提供)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!