企業(yè)級web開發(fā)框架-期中測試
選擇題
-
哪個注解用于處理請求 url 映射,可用于類或方法上 A、 @Controller B、 @RequestMapping C、 @RequestParam D、 @ResponseBody
B、@RequestMapping
-
下列關(guān)于SpringBoot配置文件描述錯誤的一項是( ) A、 SpringBoot默認不支持日志配置 B、 application配置文件中可使用server.port=8081修改Tomcat端口。 C、 SpringBoot中配置文件支持.properties和yml兩種格式。 D、 SpringBoot的核心理念是約定優(yōu)于配置,約定了配置文件默認可以是application.yml
A、SpringBoot默認不支持日志配置是錯誤的描述。SpringBoot默認使用Logback作為日志框架,并且可以通過配置文件進行日志的配置。
-
SpringBoot中使用學習三方框架如security可以方便配置的切換日志級別輔助調(diào)試:logging.level.org.springframework.security=debug。請問,按照如上配置,下面那種日志級別的信息不會被輸出到控制臺( ) A、 trace B、 warn C、 danger D、 info
B、warn
-
你確定嗎
我之前的回答有誤,正確答案是D、info。因為debug級別包含了info級別,所以配置了debug級別后,info級別的日志信息也會被輸出到控制臺。
-
下列關(guān)于SpringBoot描述錯誤的一項是( ) A、 SpringBoot使用默認配置可以提高軟件開發(fā)效率,尤其契合微服務和敏捷開發(fā)模式。 B、 @SpringBootApplication注解是一個復合注解,內(nèi)部包含了@ComponentScan注解,因此包掃描自動生效。 C、 SpringBoot中,默認的包掃描自動開啟,可以掃描到本項目中任意層級任意位置的@Component注解標注的Java類,從而實例化對象放入容器中。 D、 SpringBoot的核心理念是約定優(yōu)于配置,約定了配置文件默認可以是application.yml
C、SpringBoot中,默認的包掃描并不會掃描到本項目中任意層級任意位置的@Component注解標注的Java類,而是只會掃描啟動類所在的包及其子包中的組件。如果需要掃描其他包中的組件,需要使用@ComponentScan注解或者在啟動類上使用@Import注解手動導入其他配置類。
-
5、 經(jīng)典MVC中完成視圖View中自動綁定Model中的數(shù)據(jù)的第三方依賴庫如Jsp /Thymeleaf /Freemaker 等統(tǒng)稱為? A、 數(shù)據(jù)容器 B、 模板文件 C、 模板引擎 D、 項目依賴
C、模板引擎
判斷題
-
1、 SpringBoot項目只能支持前后端分離工程,不能支持JSP等模板引擎下的經(jīng)典MVC工程。( ) 正確 錯誤
錯誤。SpringBoot項目不僅支持前后端分離工程,也支持經(jīng)典MVC工程??梢允褂肨hymeleaf、Freemarker等模板引擎來完成視圖層的開發(fā)。同時,SpringBoot也提供了對JSP的支持,但需要注意的是,使用JSP需要額外配置,而且在SpringBoot 2.4.0版本之后,不再默認支持JSP。
-
springboot應用只能以 Maven 作為項目構(gòu)建方式( ) 正確 錯誤
錯誤。Spring Boot 應用可以使用 Maven 或 Gradle 作為項目構(gòu)建方式。
-
SpringBoot簡化了xml配置,快速整合框架( ) 正確 錯誤
正確。Spring Boot 確實簡化了 XML 配置,同時也提供了自動配置和快速整合框架的功能,使得開發(fā)者可以更加快速地搭建項目。
-
SpringSecurity中匿名過濾器中匿名用戶的信息不能隨意個性化設置。( ) 正確 錯誤
錯誤。Spring Security 中的匿名過濾器可以通過配置文件進行個性化設置,例如可以設置匿名用戶的用戶名、權(quán)限等信息??梢允褂?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”,權(quán)限為 “ROLE_GUEST”。
-
SpringBoot 是 Spring 框架對“約定優(yōu)先于配置(Convention Over Configuration)”理念的最佳實踐的產(chǎn)物( ) 正確 錯誤
正確。Spring Boot 是 Spring 框架對“約定優(yōu)先于配置”理念的最佳實踐的產(chǎn)物。它通過提供默認的配置和自動配置的方式,使得開發(fā)者可以更加快速地搭建項目,同時也可以根據(jù)需要進行個性化的配置。
填空題
-
1: 前后端分離項目中,controller返回JSON數(shù)據(jù)格式一般用 注解
@RestController 注解。該注解是 @Controller 和 @ResponseBody 注解的組合,用于標識該類是一個控制器,并且其中的方法返回的是 JSON 格式的數(shù)據(jù)。
-
2: 標注了 注解的 Java 類定義都是一個 JavaConfig 配置類。
@Configuration 注解。該注解用于標識一個 Java 類是一個配置類,其中定義的方法可以用于配置應用程序上下文中的 bean。在 Spring Boot 中,通常使用 JavaConfig 的方式來進行配置,因此標注了 @Configuration 注解的 Java 類定義都是一個 JavaConfig 配置類。
-
3: SpringBoot程序是通過 方法開始執(zhí)行的。
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 文檔工具,可以幫助開發(fā)者自動生成和維護 API 文檔。在前后端分離項目中,Swagger3 的作用如下:
- 自動生成 API 文檔:Swagger3 可以通過掃描代碼中的注解自動生成 API 文檔,包括 API 的請求地址、請求參數(shù)、響應數(shù)據(jù)等信息,使得開發(fā)者可以更加方便地查看和理解 API 的使用方式和規(guī)范。
- 接口測試和調(diào)試:Swagger3 提供了一個交互式的 UI 界面,可以讓開發(fā)者直接在瀏覽器中測試和調(diào)試 API 接口,不需要使用其他工具或者編寫測試代碼,提高了開發(fā)效率。
- 接口規(guī)范和約束:Swagger3 可以通過注解來定義 API 的請求和響應數(shù)據(jù)格式、參數(shù)校驗規(guī)則等約束,使得 API 接口的使用更加規(guī)范和統(tǒng)一,減少了開發(fā)者的錯誤和疏漏。同時,Swagger3 還可以通過配置文件來定義全局的 API 規(guī)范和約束,使得整個項目的 API 接口都具有一致的風格和規(guī)范。
-
如何理解SpringBoot中的Starters?并列舉常用3中starters。
Spring Boot Starters 是一組預定義的依賴關(guān)系,可以幫助開發(fā)者快速地集成和使用各種常用的技術(shù)和框架。Starters 通常包含了一組相關(guān)的依賴關(guān)系,例如 Web Starter 包含了 Spring MVC、Tomcat、Jackson 等依賴,JPA Starter 包含了 Hibernate、Spring Data JPA 等依賴。使用 Starters 可以避免開發(fā)者手動添加依賴關(guān)系的繁瑣和錯誤,同時也可以保證依賴關(guān)系的版本兼容性和穩(wěn)定性。
常用的三種 Starters 如下:
- Spring Boot Starter Web:包含了 Spring MVC、Tomcat、Jackson 等依賴,用于開發(fā) Web 應用程序。
- Spring Boot Starter Data JPA:包含了 Hibernate、Spring Data JPA 等依賴,用于訪問和操作關(guān)系型數(shù)據(jù)庫。
- Spring Boot Starter Test:包含了 JUnit、Mockito、Hamcrest 等依賴,用于編寫和執(zhí)行單元測試和集成測試。
-
3、 列舉四方面SpringBoot做Web軟件開發(fā)的優(yōu)點?
Spring Boot 是一個快速開發(fā)框架,具有以下四個方面的優(yōu)點:
- 簡化配置:Spring Boot 提供了自動配置的功能,可以根據(jù)項目的依賴關(guān)系自動配置應用程序上下文,避免了繁瑣的配置過程。
- 快速開發(fā):Spring Boot 提供了大量的 Starter,可以快速集成和使用各種常用的技術(shù)和框架,例如 Web、JPA、Security 等,使得開發(fā)者可以更加專注于業(yè)務邏輯的實現(xiàn)。
- 易于部署:Spring Boot 應用程序可以打包成一個可執(zhí)行的 JAR 文件,可以直接通過 java -jar 命令啟動,無需安裝和配置 Tomcat 等 Web 服務器,使得部署和運維更加簡單和方便。
- 高度可定制:Spring Boot 提供了豐富的配置選項和擴展點,可以根據(jù)需要進行個性化的配置和擴展,同時也可以通過自定義 Starter 來實現(xiàn)對第三方技術(shù)和框架的集成和支持。
-
4、 SpringBoot的核心注解是哪個?它主要由哪幾個注解組成的?
Spring Boot 的核心注解是 @SpringBootApplication。它主要由以下三個注解組成:
- @SpringBootConfiguration:該注解是 @Configuration 注解的派生注解,用于標識該類是一個 Spring Boot 的配置類。
- @EnableAutoConfiguration:該注解用于啟用 Spring Boot 的自動配置功能,可以根據(jù)項目的依賴關(guān)系自動配置應用程序上下文。
- @ComponentScan:該注解用于掃描指定的包和類,將其中標注了 @Component、@Service、@Controller 等注解的類注冊為 Spring 的 bean,使得它們可以被應用程序上下文所管理和使用。
這三個注解的組合,可以讓 Spring Boot 應用程序自動配置和啟動,同時也可以掃描和注冊指定的 bean,使得開發(fā)者可以更加專注于業(yè)務邏輯的實現(xiàn)。
-
5、 請簡述Spring和SpringBoot的區(qū)別與聯(lián)系?
Spring 是一個開源的企業(yè)級應用程序開發(fā)框架,提供了一系列的組件和工具,用于簡化企業(yè)級應用程序的開發(fā)和集成。Spring Boot 是 Spring 的一個子項目,是一個快速開發(fā)框架,可以幫助開發(fā)者快速地創(chuàng)建和部署 Spring 應用程序。
區(qū)別:
- 配置方式不同:Spring 需要手動配置各種組件和依賴關(guān)系,而 Spring Boot 提供了自動配置的功能,可以根據(jù)項目的依賴關(guān)系自動配置應用程序上下文。
- 依賴管理不同:Spring 需要手動管理各種依賴關(guān)系和版本兼容性,而 Spring Boot 提供了 Starter 的功能,可以快速集成和使用各種常用的技術(shù)和框架。
- 開發(fā)效率不同:Spring 需要手動配置和管理各種組件和依賴關(guān)系,開發(fā)效率相對較低,而 Spring Boot 提供了自動配置和 Starter 的功能,可以大大提高開發(fā)效率。
聯(lián)系:
- Spring Boot 是 Spring 的一個子項目,是在 Spring 的基礎上進行的擴展和增強。
- Spring Boot 依賴于 Spring,可以使用 Spring 的各種組件和工具,例如 Spring MVC、Spring Data、Spring Security 等。
- Spring Boot 可以與 Spring 集成,使用 Spring 的各種組件和工具,同時也可以通過自定義 Starter 來擴展和增強 Spring Boot 的功能。
編程題
-
只需要補全代碼,不需要其他說明 1、 以下程序為springBoot整合MyBatis實現(xiàn)查詢功能,請補全以下代碼。 (15分) (1)pom.xml文件 ependencies> ...... -- 添加springboot整合Mybatis --> ependency> roupId>org.mybatis.spring.bootroupId> rtifactId> rtifactId> ersion>1.2.2ersion> ependency> ....... ependencies> (2)在application.properties配置文件中添加數(shù)據(jù)庫的支持 #DB Configuration: #配置驅(qū)動類 spring.datasource. = com.mysql.jdbc.Driver #配置URL,鏈接本地數(shù)據(jù)庫test . .url = jdbc:mysql:// / ?useUnicode=true&characterEncoding=utf-8&useSSL=false #數(shù)據(jù)庫用戶名和密碼分別為root,123456 . . = root spring.datasource. = (3)在SpringBoot的啟動類里面增加用來掃描Mapper接口的注解,用來掃描Mapper包下面的接口。 //補全適當?shù)淖⒔? @ ("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:
#配置驅(qū)動類
spring.datasource.driver-class-name = com.mysql.jdbc.Driver
#配置URL,鏈接本地數(shù)據(jù)庫test
spring.datasource.url = jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
#數(shù)據(jù)庫用戶名和密碼分別為root,123456
spring.datasource.username = root
spring.datasource.password = 123456
//補全適當?shù)淖⒔?/p>
@SpringBootApplication(scanBasePackages = “com.qst.*”)
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
-
編寫前后端分離的項目,自定義controller統(tǒng)一異常處理。(15分) 用戶需求:當后端程序員在controller,service等地方手動拋出異常時,希望該異常信息能夠被前端接收,并進一步處理后顯示給用戶。要求自定義一個運行時異常(子類),任意controller中拋出該異常時異常被捕獲返回給前端信息和HTTP狀態(tài)碼700。 //請于此自定義異常 //請于此控制器統(tǒng)一異常處理
自定義異常:
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;
}
}
控制器統(tǒng)一異常處理:
@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, "服務器內(nèi)部錯誤");
return new ResponseEntity<>(errorResponse, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
其中,ErrorResponse
是一個自定義的響應實體類,用于封裝異常信息返回給前端。
-
3、 創(chuàng)建springBoot程序,完成頁面按鈕發(fā)送請求后,后端向前端頁面直接輸出“Hello,springBoot”,補全下面關(guān)鍵代碼即可。(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文章來源:http://www.zghlxwxcb.cn/news/detail-466358.html
@RestController
public class HelloWorldController {
//添加適當注解
@GetMapping("/hello")
//添加適當注解
public String hello(){
return "Hello,springBoot";
}
}
(3)頁面文章來源地址http://www.zghlxwxcb.cn/news/detail-466358.html
<form action="/hello">
<button type="submit">springboot測試</button>
</form>
到了這里,關(guān)于企業(yè)級web開發(fā)框架-期中測試(答案由chatgpt被動提供)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!