企业级web开发框架-期中测试(答案由chatgpt被动提供)

企业级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 的作用如下:

  1. 自动生成 API 文档:Swagger3 可以通过扫描代码中的注解自动生成 API 文档,包括 API 的请求地址、请求参数、响应数据等信息,使得开发者可以更加方便地查看和理解 API 的使用方式和规范。
  2. 接口测试和调试:Swagger3 提供了一个交互式的 UI 界面,可以让开发者直接在浏览器中测试和调试 API 接口,不需要使用其他工具或者编写测试代码,提高了开发效率。
  3. 接口规范和约束: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 如下:

  1. Spring Boot Starter Web:包含了 Spring MVC、Tomcat、Jackson 等依赖,用于开发 Web 应用程序。
  2. Spring Boot Starter Data JPA:包含了 Hibernate、Spring Data JPA 等依赖,用于访问和操作关系型数据库。
  3. Spring Boot Starter Test:包含了 JUnit、Mockito、Hamcrest 等依赖,用于编写和执行单元测试和集成测试。
  • 3、
    列举四方面SpringBoot做Web软件开发的优点?
    

Spring Boot 是一个快速开发框架,具有以下四个方面的优点:

  1. 简化配置:Spring Boot 提供了自动配置的功能,可以根据项目的依赖关系自动配置应用程序上下文,避免了繁琐的配置过程。
  2. 快速开发:Spring Boot 提供了大量的 Starter,可以快速集成和使用各种常用的技术和框架,例如 Web、JPA、Security 等,使得开发者可以更加专注于业务逻辑的实现。
  3. 易于部署:Spring Boot 应用程序可以打包成一个可执行的 JAR 文件,可以直接通过 java -jar 命令启动,无需安装和配置 Tomcat 等 Web 服务器,使得部署和运维更加简单和方便。
  4. 高度可定制:Spring Boot 提供了丰富的配置选项和扩展点,可以根据需要进行个性化的配置和扩展,同时也可以通过自定义 Starter 来实现对第三方技术和框架的集成和支持。
  • 4、
    SpringBoot的核心注解是哪个?它主要由哪几个注解组成的?
    

Spring Boot 的核心注解是 @SpringBootApplication。它主要由以下三个注解组成:

  1. @SpringBootConfiguration:该注解是 @Configuration 注解的派生注解,用于标识该类是一个 Spring Boot 的配置类。
  2. @EnableAutoConfiguration:该注解用于启用 Spring Boot 的自动配置功能,可以根据项目的依赖关系自动配置应用程序上下文。
  3. @ComponentScan:该注解用于扫描指定的包和类,将其中标注了 @Component、@Service、@Controller 等注解的类注册为 Spring 的 bean,使得它们可以被应用程序上下文所管理和使用。

这三个注解的组合,可以让 Spring Boot 应用程序自动配置和启动,同时也可以扫描和注册指定的 bean,使得开发者可以更加专注于业务逻辑的实现。

  • 5、
    请简述Spring和SpringBoot的区别与联系?
    

Spring 是一个开源的企业级应用程序开发框架,提供了一系列的组件和工具,用于简化企业级应用程序的开发和集成。Spring Boot 是 Spring 的一个子项目,是一个快速开发框架,可以帮助开发者快速地创建和部署 Spring 应用程序。

区别:

  1. 配置方式不同:Spring 需要手动配置各种组件和依赖关系,而 Spring Boot 提供了自动配置的功能,可以根据项目的依赖关系自动配置应用程序上下文。
  2. 依赖管理不同:Spring 需要手动管理各种依赖关系和版本兼容性,而 Spring Boot 提供了 Starter 的功能,可以快速集成和使用各种常用的技术和框架。
  3. 开发效率不同:Spring 需要手动配置和管理各种组件和依赖关系,开发效率相对较低,而 Spring Boot 提供了自动配置和 Starter 的功能,可以大大提高开发效率。

联系:

  1. Spring Boot 是 Spring 的一个子项目,是在 Spring 的基础上进行的扩展和增强。
  2. Spring Boot 依赖于 Spring,可以使用 Spring 的各种组件和工具,例如 Spring MVC、Spring Data、Spring Security 等。
  3. 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

@RestController
public class HelloWorldController {

    //添加适当注解

    @GetMapping("/hello")

    //添加适当注解

    public String hello(){
        return "Hello,springBoot";
    }

}

(3)页面

<form action="/hello">
    <button type="submit">springboot测试</button>
</form>

猜你喜欢

转载自blog.csdn.net/godnightshao/article/details/130970335