• 【仿牛客网笔记】初识Spring Boot,开发社区首页-Spring MVC入门


    HTTP:全称 HyperText Transfer protocol 超文本传输协议,用于传输HTML等内容的应用协议,位于应用层,规定了浏览器和服务器之间如何通信,以及通信时的数据格式。
    https://www.ietf.org
    https://developer.mozilla.org/zh-CN
    请添加图片描述
    请添加图片描述
    请添加图片描述
    请添加图片描述
    请添加图片描述
    在这里插入图片描述
    在这里插入图片描述
    分层的目的是为了解耦。
    服务端代码分三层:表现层,业务层,数据访问层。
    浏览器访问服务器首先访问表现层,期待表现层返回写数据,表现层调用业务层处理逻辑,业务层处理业务的过程会调用数据库进行数据访问,最后表现层得到业务层返回的数据,返回给浏览器,整个请求结束。
    MVC:是一种刚刚设计模式,将复杂的代码分为三个层次。
    M:Model模型层(数据)
    V:View视图层
    C:Controlle控制层

    MVC主要解决的是表现层的数据,当浏览器发送请求的时候发首先访问的是Controlle控制器,接受请求中的数据,然后调用业务层,将得到的数据封装到Model中,将它传送给视图层,视图层利用封装的数据形成一个HTML返回给浏览器。

    Spring MVC有一个核心组件前端控制器DispatcherServlet。
    添加链接描述

    请添加图片描述
    在这里插入图片描述
    模板引擎生成动态HTML。模板引擎需要Model和模板文件。
    1、标准表达式:页面那些数据需要被动态的数据替换
    2.判断与循环:渲染数据或显示数据的时候需要检查一下这个数据是不是空值。Model给的数据可能是一个集合或者是一个数据需要循环的处理。
    3.模板布局:很多页面相似,如何将一样的区域复用。

    模板引擎

    二、案例显示

    模板引擎的配置
    请添加图片描述
    模板引擎是默认启用缓存的,是SpringBoot的自动配置。
    如果不将缓存关掉,那么将会有缓存,有缓存后修改页面时看到的内容还是缓存中的内容,因为存在延迟,但是系统上线后这个模板引擎的缓存应该开启,可以降低服务器的压力。

    请添加图片描述

    请添加图片描述
    请添加图片描述
    请添加图片描述
    请添加图片描述

    请添加图片描述
    演示在Spring MVC如何获得请求对象的数据,响应对象的数据。
    请添加图片描述

     @RequestMapping("/http")
        @ResponseBody
        public void http(HttpServletRequest request, HttpServletResponse response) {
            //获取请求数据
            System.out.println(request.getMethod());
            System.out.println(request.getServletPath());
            Enumeration<String> enumeration =request.getHeaderNames();
            while(enumeration.hasMoreElements()){
                String name=enumeration.nextElement();
                String value=request.getHeader(name);
                System.out.println(name+":"+value);
            }
            System.out.println(request.getParameter("code"));
    
            //返回响应数据
            response.setContentType("text/html;charset=utf-8");
            try (
                    PrintWriter writer=response.getWriter();
                    ){
               //  PrintWriter writer=response.getWriter();
                //打印
                writer.write("

    牛客网

    "
    ); } catch (IOException e) { e.printStackTrace(); } }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    在这里插入图片描述
    请添加图片描述

    查询的两种方式

    演示请求数据
    假如查询所有的学生,查询的路径是:student?current=1&limit=20
    ?后,是显示分页。当前是第几页,然后一页显示多少数据。
    @RequestMapping通过参数path声明请求的路径,method声明请求的方法。
    请添加图片描述
    当没有查询路径的:student?current=1&limit=20的时候,如何处理请求参数?
    通过注解@RequestParameter,注解中参数可以为name,当required=false时候是不传这个值进来。defaultValue是默认值,默认值为1。

    在这里插入图片描述
    当查询一个学生,根据Id时候的路径可以这样设置student/123
    通过在@RequestMapping中的path中写入/student/{id}实现,请求方式为GET
    响应@ResponseBody返回字符串
    请添加图片描述
    通过注解@pathVariable路径变量括号中写入名字id。

    虽然请求方式有很多中,但是get和post就可以了。

    Post请求:当浏览器向服务器提交数据的时候如何获取参数。
    首先浏览器先打开一个带有表单的网页。

    在templates中存放的是动态的模板,在static中存放静态的网页,图片,css文件,js文件。
    请添加图片描述
    http://localhost:8080/community/html/teacher

    GET请求传参是在明面上的,路径是带参数的,但是路径有长度,所以提交数据的时候不用GET请求。
    请添加图片描述
    如何向浏览器动态的响应一个HTML
    返回的类型ModelAndView ,所有主键都是有前端控制器调度,前端控制器会掉Controller的某一个方法,方法需要返回Model数据,也需要返回视图相关的数据,交给模板引擎,所以数据中有Model数据和view数据两份。
    请添加图片描述
    动态加入数据后,还需要设置一个模板,模板的路径和名字。
    请添加图片描述
    请添加图片描述
    第一个文本显示姓名,第二个文本显示年龄。

    th:是thymeleaf 变量名name、age,是从model中取出来的。这是Thymeleaf的语法。
    请添加图片描述
    Model对象添加通过addAttribute()方法。ModelAndView更直观,将Model和View直接都装入到一个对象中。我们将Model对象直接的装入到Model model的参数中。

    请添加图片描述
    当前网页不刷新,但是悄悄刷新了一次,这就叫做异步请求。所以本次结果不是一个HTML。
    响应JSON数据(异步请求)
    Java对象返回浏览器,浏览器解析这个对象用的是js,js也是面向对象语言,故将java对象通过使用JSON实现两者的兼容转成JS对象,java对象转换成JSON字符创给浏览器传给JS对象。
    请添加图片描述
    请添加图片描述

  • 相关阅读:
    C++知识点总结(18):排序算法汇总
    华为防火墙:GRE over IPSec
    DQL查询数据库
    解决vim与外界的复制粘贴(不用安装插件)
    基于结构应力方法的焊接结构疲劳评估及实例分析(下篇)
    java计算机毕业设计ssm养老管理系统-敬老院系统
    JavaScript面向对象(1)—对象的创建和操作
    【Python机器学习】零基础掌握SparsePCA矩阵分解
    CentOS7 离线安装 Zabbix5.0
    windows server 2019 服务器配置的方法步骤
  • 原文地址:https://blog.csdn.net/xue_hua_c/article/details/127166706