【仿牛客网笔记】初识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("<h1>牛客网</h1>");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

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

查询的两种方式

演示请求数据
假如查询所有的学生,查询的路径是: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对象。
请添加图片描述
请添加图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值