• Springboot(一)之SpringMVC相关


    学习内容

    此阶段学习的内容主要是如何接收客户端请求以及如何做出响应
    在这里插入图片描述

    服务器的相关概念

    • 服务器:就是一台高性能的电脑
    • Web服务器:在高性能电脑上安装了Web服务软件
    • Web服务软件

    web服务软件是不具备任何业务功能的,可以理解为是一个容器,用来实现具体业务功能的组件(组件指的Servlet,Controller是将多个有相关性的Servlet整合到了一个文件中)
    Web服务软件做了那些事儿?

    • 搭建底层的网络连接
    • 负责根据客户发出的静态资源请求找到对应的静态资源文件并响应给客户端
    • 负责根据客户端发出的动态请求找到对应的Controller里面的方法并执行

    SpringBoot框架概念

    如果不使用SpringBoot框架创建Maven工程, 工程里面如果需要添加其它框架, 除了需要在pom.xml文件中添加大量的依赖信息以外,很多的框架还需要有对应的xml配置文件, 在xml配置文件中还需要书写大量的配置信息, 这些工作都需要程序员完成, 使用SpringBoot框架创建工程时,如果需要引入其它框架只需要通过打钩的方式即可把其它框架引入到自己的工程 不需要写配置文件,SpringBoot框架帮助程序员做好了其它工作

    创建SpringBoot工程步骤

    1.创建SpringBoot工程时需要将 url地址改成https://start.springboot.io
    在这里插入图片描述

    2.修改工程名, group,Java版本
    在这里插入图片描述
    3.勾选需要引入到工程中的框架
    在这里插入图片描述

    4.创建完工程后在Build页卡中显示 绿色的对勾
    在这里插入图片描述

    5.如果没有绿色对勾 而是红色报错的话,按照一下方案解决:

    • 刷新Maven
      在这里插入图片描述

    • 如果刷新maven没有解决, 检查maven配置是否正确, 如果正确 删除.m2文件夹下的repository文件夹, 然后再次刷新maven, 如果还没有解决 删除工程重新创建.
      6.如何测试工程是否创建成功?

    • 在static文件夹下 创建index.html页面

    • 启动工程, 浏览器地址栏中访问: localhost:8080

    客户端发出动态请求的几种方式

    • 通过浏览器的地址输入路径 回车后发出请求
    • 通过超链接发出动态请求
    • 通过form表单翻出动态请求

    相对,绝对请求路径的区别

    <a href="hello">相对路径a>
    
    • 1

    相对路径:相对于页面所处位置
    localhost:8080/index.html
    如果访问 localhost:8080/abc/index.html
    localhost:8080/abc/hello 去掉一个index.html加上hello

    <a href="/hello">绝对路径1a>
    
    • 1

    绝对路径: /代表的是当前工程的根路径 http://localhost:8080/

    <a href="http://localhost:8080/hello">绝对路径2a>
    
    • 1

    绝对路径,当访问站外资源是使用上述方式

    @Controller

    此注解的作用是声明当前类为控制器,当Web服务软件接收到请求后,会找到所有的控制器类,然后通过请求的路径找到对应的方法

    @ResponseBody注解

    • 使用此注解修饰Controller的方法,方法可以通过返回值的方式给客户端响应数据
    • 通过此注解简化向客户端写出数据的步骤

    前后写法对比
    之前

    @Controller
    public class HelloController {
       @RequestMapping("/hello")
        public void hello(HttpServletResponse response) throws IOException {
            response.setContentType("text/html;charset=utf-8");
            PrintWriter pw = response.getWriter();
            pw.println("请求成功!");
            pw.close();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    之后

    @Controller
    public class HelloController {
       @RequestMapping("/hello")
       @ResponseBody //此注解的作用是通过返回值的方式给客户端响应数据
       public String hello(){
           return "成功";
       }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    SpringMVC的三种传参方式

    在这里插入图片描述

    DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Titletitle>
    head>
    <body>
    <h1>传参测试h1>
    <h2>第一种h2>
    <form action="/p1">
        <input type="text" name="info">
        <input type="submit">
    form>
    <h2>第二种h2>
    <form action="/p2">
        <input type="text" name="name" placeholder="名字">
        <input type="text" name="age" placeholder="年龄">
        <input type="submit">
    form>
    <h2>第三种h2>
    <form action="/p3">
        <input type="text" name="name" placeholder="员工姓名">
        <input type="text" name="sal" placeholder="员工工资">
        <input type="text" name="job" placeholder="员工工作">
        <input type="submit" value="添加">
    form>
    body>
    html>
    
    • 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
    • 27
    • 28
    @Controller
    public class ParamController {
        @RequestMapping("/p1")
        @ResponseBody
        public String p1(HttpServletRequest request){
            String info = request.getParameter("info");
            return "接收到的参数:"+info;
        }
    
        @RequestMapping("/p2")
        @ResponseBody
        public String p2(String name,int age){
            return name+":"+age;
        }
        @RequestMapping("/p3")
        @ResponseBody
        public String p3(Emp emp){
            return emp.toString();
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    代码中可以用return 代替 else if

    @Controller
    public class BMIController {
        @RequestMapping("/bmi")
        @ResponseBody
        public String bmi(double h,double w){
            double bmi=w/(h*h);
            if(bmi<18.4){
                return "兄弟你瘦了";
            }
            if(bmi<23.9){
                return "身体倍儿棒";
            }
            if(bmi<27.9){
                return "微微胖";
            }
            return "该运动起来了";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
  • 相关阅读:
    [H5动画制作系列 ] Text及Button 的基础原理Demo
    mac电脑修改终端zsh显示的用户名
    【Unity Shader​】 屏幕后处理5.0:讨论双重模糊的Bloom
    七夕力扣刷不停,343. 整数拆分(剑指 Offer 14- I. 剪绳子、剑指 Offer 14- II. 剪绳子 II)
    你知道谁是计算机之父吗?
    Git的使用之基础命令
    FB广告系列花费上限是否有必要设置?
    visual studio code导入自定义模块(pycharm中能够运行的文件,vs code报错:未找到指定模块)
    一文讲透DevOps理论体系的演进
    ES6新特性之Symbol的数据类型
  • 原文地址:https://blog.csdn.net/longgetaotao_06/article/details/126725281