Springboot之SpringMVC相关(一)

文章目录

      • 学习内容
      • 服务器的相关概念
      • SpringBoot框架概念
      • 创建SpringBoot工程步骤
      • 客户端发出动态请求的几种方式
      • 相对,绝对请求路径的区别
      • @Controller
      • @ResponseBody注解
      • SpringMVC的三种传参方式
      • 代码中可以用return 代替 else if

学习内容

此阶段学习的内容主要是如何接收客户端请求以及如何做出响应
Springboot之SpringMVC相关(一)_第1张图片

服务器的相关概念

  • 服务器:就是一台高性能的电脑
  • 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
Springboot之SpringMVC相关(一)_第2张图片

2.修改工程名, group,Java版本
Springboot之SpringMVC相关(一)_第3张图片
3.勾选需要引入到工程中的框架
Springboot之SpringMVC相关(一)_第4张图片

4.创建完工程后在Build页卡中显示 绿色的对勾
Springboot之SpringMVC相关(一)_第5张图片

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

  • 刷新Maven
    Springboot之SpringMVC相关(一)_第6张图片

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

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

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

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

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

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

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

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

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

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

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

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

@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();
    }
}

之后

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

SpringMVC的三种传参方式

Springboot之SpringMVC相关(一)_第7张图片

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>
@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();
    }

}

代码中可以用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 "该运动起来了";
    }
}

你可能感兴趣的:(框架,java)