springboot期末复习

springboot期末复习

码农世界 2024-06-20 后端 90 次浏览 0个评论

一、填空题

  1. Spring Boot Maven 项目的依赖配置文件是:pom.xml,默认的视图模板文件夹 是:resources/templates。
  2. Spring Boot 项目中的@Controller 注解完成的功能是:实现 MVC 控制器, @GetMapping 注解的功能是:响应 GET 请求。
  3. SSE 的含义是服务器发送事件, WebSocket 是一种在单个 TCP 连接上进行全 双工通讯的技术。
  4. REST 的含义是:表现出状态转移。
  5. @CrossOrigin 注解的作用是:跨域配置。
  6. Spring Boot 项目的打包命令是:mvn package,两种打包发布方式分别是: jar、war。
  7. Spring Boot 项 目 中 若 采集表单 参数,应 在 响应函数 的 参数中使用 @RequestParam 注解,若采集客户端发送的 JSON 数据,应采用@RequestBody 注解.
  8. 多对一实体映射对应的注解是:@ManyToOne,一对一实体映射对应的注解 是:@OneToOne。
  9. 互联网 IP 地址的作用是用于区分联网的计算机设备,端口号的作用是用于标识计算机的应用程序, Http 服务器的默认端口号是: 80, Spring Boot 应用程序的 默认端口号是:8080。如果要配置 Spring Boot 应用程序的端口号为 9000, 则应 修改应用程序配置文件 application.properties,添加配置语句: server.port=9000。
  10. Spring Boot MVC 应用程序默认的静态页面文件夹是: resources/public 或 resources/static, Spring Boot Maven 项目的依赖配置文件是: pom.xml。
  11. 在设计RESTful API时, 一般将DELETE请求用于删除资源, GET请求用于获取资源,PATCH请求用于修改资源。

二、单项选择题

  1. Spring MVC程序中若某Thymeleaf视图模板文件中需要引入user属性,在下面渲染user属性值的正确写法是:(  )

    A)

    B)

    C)

    D)
  2. 控制器类的方法若要采集查询参数,则应使用如下的哪个注解?(  
    A) @RequestParam

    B) @RequesBody

    C) @ResponseBody

    D) @PathVariable

  3. 以下Thymeleaf依赖配置中,正确的是:(  )

    A)

     org.springframework.boot

         spring-boot-thymeleaf

    B)

         org.springframework.boot

         spring-boot-starter-thymeleaf

    C)

     org.springframework.boot

         spring-boot-thymeleaf

    D)

         org.springframework.boot

         spring-boot-starter-thymeleaf

  4. 控制器的类方法中若要采集前端提交的路由参数,应采用如下的哪个注解?(  )
    A) @PathVariable                       B)@RequestParam
    C) @RequestBody                        D)@ResponseBody
  5. 若某RESTful API的服务localhost/students是删除学生信息的操作,则应使用哪个动词HTTP动词进行设计?(  )

    A) GET

    B) POST

    C) PUT

    D) DELETE

  6. 控制器类的方法若要采集前端输入的路径参数,则该方法的注解写法正确的是(  )

    A) @GetMapping("/person/{name}/{age}")

    B) @GetMapping("/person/{:name}/{:age}")

    C) @GetMapping("/person/[name]/[age]")

    D) @GetMapping("/person/(name)/(age)")

  7. 下列用于标注MyBatis接口的注解是(  )

    A) @Mapper;

    B) @Entity;

    C) @Table;

    D) @Configuratio

     


 三、程序阅读题

  1. 本例Spring MVC程序主要功能是使用Thymeleaf模板引擎显示学生成绩表。该程序需要在文件Student.java中定义一个Student模型, 在HomeController.java中定义控制器,在index.html中使用Thymeleaf模板引擎渲染学生成绩信息。请补全各自文件中的代码。
    模型文件Student.java

    public class Student {

        private String sid; //学号

        private String name; //姓名

        private float score; //成绩

        public Student(String sid, String name, float score) {

            this.sid = sid;

            this.name = name;

            this.score = score;

        }

        public String getSid() {

            return sid;

        }

        public void setSid(String sid) {

            this.sid = sid;

        }

        public String getName() {

            return name;

        }

        public void setName(String name) {

            this.name = name;

        }

        public float getScore() {

            return score;

        }

        public void setScore(float score) {

            this.score = score;

        }

    控制器文件HomeController.java

    import org.springframework.stereotype.Controller;

    import org.springframework.ui.Model;

    import org.springframework.web.bind.annotation.RequestMapping;

    import java.util.ArrayList;

    import java.util.List;

    @Controller

    public class HomeController {

        private List list;

        public HomeController() {

            this.list=new ArrayList();

            this.list.add(new Student("18001","Mr. wang", 90.0f));        this.list.add(new Student("18002","Mrs. Zhang", 80.0f));

            this.list.add(new Student("18003","Mr. Liang", 70.0f));

            this.list.add(new Student("18004","Mr. Kang", 85.0f));

    }

        @GetMapping("/")

        public String index(Model model){

            model.addAttribute("caption", "《Java 高级程序设计》成绩单");

            model.addAttribute("students", list);

            return index;

        }

    }
    视图模板文件index.html

       

        学生成绩单

       

       

            

           

               

                   

                   

                   

               

           

           

               

                   

                   

                   

               

           

       

    学号 姓名 成绩
    学号 姓名 成绩

  2. 本例程序使用Spring Data JPA访问MySQL数据库,实现图书管理系统的RESTful API。该程序需要编写图书模型文件Book.java, 图书仓储接口文件BookRepository.java, 控制器文件BookController.java。

    MySQL数据库表设计如下:

    drop database if exists books_db;

    create database books_db default charset=utf8;

    use books_db;

    create table books(id integer auto_increment primary key,

        isbn varchar(15) not null unique, //书号,非空,不能重复

        name varchar(50) not null, //书名,非空

        press varchar(50) not null //出版社, 非空

    ); // 表名为books
     

    //Book.java文件如下,请补全空格处的代码。

    package cn.anntek;

    import javax.persistence.Column;

    import javax.persistence.Entity;

    import javax.persistence.GeneratedValue;

    import javax.persistence.GenerationType;

    import javax.persistence.Id;

    import javax.persistence.Table;

    @Entity

    @Table(name="books")

    public class Book {

    @Id

    @GeneratedValue(strategy = GenerationType.IDENTITY)

        private Integer id;

        @Column (nullable = false, unique = true)

        private String isbn;//书号

        @Column(nullable = false)

        private String name;//书名

        @Column(nullable = false)

        private String press;//出版社

        public Book() {

        }

        public Integer getId() {

            return id;

        }

        public void setId(Integer id) {

            this.id = id;

        }

        public String getIsbn() {

            return isbn;

        }

        public void setIsbn(String isbn) {

            this.isbn = isbn;

        }

        public String getName() {

            return name;

        }

        public void setName(String name) {

            this.name = name;

        }

        public String getPress() {

            return press;

        }

        public void setPress(String press) {

            this.press = press;

        }

    }

    //BookRepository.java文件如下,请补全空格处的代码。

    package cn.anntek;

    import org.springframework.data.jpa.repository.JpaRepository;

    public interface BookRepository extends JpaRepository {

    }

    //BookController.java文件如下,请补全空格处的代码。

    package cn.anntek;

    import jdk.nashorn.internal.runtime.options.Option;

    import org.springframework.beans.factory.annotation.Autowired;

    import org.springframework.web.bind.annotation.DeleteMapping;

    import org.springframework.web.bind.annotation.GetMapping;

    import org.springframework.web.bind.annotation.PathVariable;

    import org.springframework.web.bind.annotation.PostMapping;

    import org.springframework.web.bind.annotation.PutMapping;

    import org.springframework.web.bind.annotation.RequestBody;

    import org.springframework.web.bind.annotation.RestController;

    import java.util.ArrayList;

    import java.util.List;

    import java.util.Optional;

    @RestController

    public class BookController {

        @Autowired

        private BookRepository bookRepository;

        // 获取书籍列表

        @GetMapping("/books")

        public List getBooks(){

            return bookRepository.findAll();

    }

    // 增加书籍

    @PostMapping("/books")

        public Book saveBook(@RequestBody Book book){

            System.out.println(book.getName());

           bookRepository.save(book);

            return book;

    }

    // 修改书籍

    @PutMapping ("/books/{id}")

    //修改

        public Book updateBook(@RequestBody Book book, @PathVariable Integer id){

            Optional op=bookRepository.findById(id);

            if(op.isPresent()){

                Book book_fd=op.get();

                book_fd.setIsbn(book.getIsbn());

                book_fd.setName(book.getName());

                book_fd.setPress(book.getPress());

                bookRepository.save(book_fd);

                return book_fd;

            }else{

                return null;

            }

        }

    @DeleteMapping ("/books/{id}")

    //删除书籍

        public void deleteBook(@PathVariable Integer id){

            bookRepository.deleteById(id);

        }

    }


 四、简答题

  1. MVC的含义是什么?请简述Spring MVC Web开发方式的基本过程和方法。

    MVC 的含义是模型、视图与控制器。MVC 程序的主要特点是控制器响应浏览器发送的请求, 将模型数据渲染到视图中并输出到浏览器。 创建 Spring MVC 程序时,依赖项需要勾选 Spring Web 和是视图渲染引擎(常用 Thymeleaf), 然后编写模型文件,控制器文件,以及视图文件。在控制器文件中定义方法,返回视图模板文 件名或重定向路由。

  2. 请简述Spring Boot 相比于传统的 SSM 框架主要优点。
    采用自动化配置,解决了 SSM(spring、spring mvc 、mybatis)框架配置复杂度高的 问题; ² 可以使用其他持久层框架,比如 JPA 以及 MongoDB 等数据库框架; ² 可以开发反应式 Web 程序(Webflux);
  3. 请简述Websocket的特性。
    WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。
  4. 请简述Spring Boot应用程序如何实现安全性?。

    为了实现 Spring Boot 的安全性,使用 spring-boot-starter-security 依赖项,并且必须添加安全配置。它只需要很少的代码。配置类将必须扩展 WebSecurityConfigurerAdapter 并覆盖其方法。

  5. 请简述基于会话信息(cookie 和session)的认证技术的原理和过程。
    5.1、用户向服务器发送用户名和密码

    5.2、服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等等。

    5.3、服务器向用户返回一个session_id,写入用户的Cookie。

    5.4、用户随后的每一次请求,都会通过Cookie,将session_id 传回服务器。

    5.5、服务器收到session_id,找到前期保存的数据,由此得知用户的身份。

  6. 请简述基于JWT(json web token)的认证技术的原理和过程。

    5.1、用户向服务器发送用户名和密码

    5.2、服务器验证通过后,回发一个 JWT 给合法用户。

    5.3、客户端每次访问服务都要一起发送 JWT 给服务器。

    5.4、用户随后的每一次请求,都会通过Cookie,将session_id 传回服务器。

    5.5、服务器完全只靠这个 JWT 对象认定用户身份。为了防止用户篡改数据,服务器在生成这个 对象的时候,会加上签名。

  7. 请简述Swagger框架的主要作用是什么?

    Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful API,是一个非常流行的 API 文档生成工具。Swagger 可以自动生成完善的 RESTful API 文档,并根据后台的代码同步更新。Swagger 也提供了完善的测试功能

  8. 请简述如何实现 Spring Boot 应用程序的安全性?
    为了实现 Spring Boot 的安全性,我们使用 spring-boot-starter-security 依赖项,并且必须添加安全配置。

转载请注明来自码农世界,本文标题:《springboot期末复习》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,90人围观)参与讨论

还没有评论,来说两句吧...

Top