springboot期末复习

一、填空题

  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) <span th:text="#{user}"></span>

    B) <span th:text="*{name}"></span>

    C) <span th:text="${name}"></span>

    D) <span th:text="@{name}"></span>
  2. 控制器类的方法若要采集查询参数,则应使用如下的哪个注解?(  
    A) @RequestParam

    B) @RequesBody

    C) @ResponseBody

    D) @PathVariable

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

    A)
    <dependency>

     <groupId>org.springframework.boot</groupId>

         <artifactid>spring-boot-thymeleaf</artifactId>

    </dependency>

    B)

    <dependency>

         <groupId>org.springframework.boot</groupId>

         <artifactid>spring-boot-starter-thymeleaf</artifactId>

    </dependency>

    C) <dependencies>

     <groupId>org.springframework.boot</groupId>

         <artifactid>spring-boot-thymeleaf</artifactId>

    </dependencies>

    D)

    <dependencies>

         <groupId>org.springframework.boot</groupId>

         <artifactid>spring-boot-starter-thymeleaf</artifactId>

    </dependencies>

  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<Student> list;

        public HomeController() {

            this.list=new ArrayList<Student>();

            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

    <!DOCTYPE html>

    <html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">

    <head>

        <meta charset="UTF-8">

        <title>学生成绩单</title>

        <style>

            caption{

                font-size:20px;

            }

        </style>

    </head>

    <body>

    <div style="width:75%; margin:10px auto 10px auto">

        <table border="1" width="100%">

            <caption th:text="${caption}"></caption>

            <thead>

                <tr>

                    <th width="10%">学号</th>

                    <th>姓名</th>

                    <th>成绩</th>

                </tr>

            </thead>

            <tbody>

                <tr th:each="student:${students}">

                    <td th:text="${student.sid}">学号</td>

                    <td th:text="${student.name}">姓名</td>

                    <td th:text="${student.score}">成绩</td>

                </tr>

            </tbody>

        </table>

    </div>

    </body>

    </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<Book, Integer> {

    }

    //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<Book> 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<Book> 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(springspring 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 依赖项,并且必须添加安全配置。
  • 9
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值