Spring MVC

Spring Boot 面向微服务的框架,更适合称作一个方案
Spring Boot 的核心还是 Spring,只是多了一些工程化的方案:

  • Java Web 容器的嵌入集成,Spring Boot 默认集成了 Tomcat
  • Spring Boot 还自定了工程打包格式,通过这个就可以直接把一个 Java Web 工程转化为一个普通的 Java 工程,启动一个 main 方法就可以把 Spring 工程启动起来,降低了开发的难度
  • Spring Boot 默认集成了你能想到的所有的第三方库和服务,比如数据库连接、NoSQL、安全等
  • Spring Boot 提供了标准的属性配置文件

Spring MVC 是 Java Web 的一种实现框架,Java Web 的规范就是 Servlet 技术,所有的 Java Web 都实现了 Servlet API 的定义
在这里插入图片描述
这是一个网页加载的过程
在 Spring Boot 方案里,一个网页请求到了服务器后,首先进入的是 Java Web 服务器,然后进入到 Spring Boot 应用,最后匹配到某一个Spring Controller(这其实也是一个 Spring Bean),然后路由到具体某一个 Bean 的方法,执行完后返回结果,输出到客户端来。

在整个流程里,重要的就是Spring Controller,有三个核心的技术点:

  • Bean 的配置:Controller 注解应用
  • 网络资源的加载:加载网页
  • 网址路由的配置:RequestMapping 注解应用
1. Controller 注解

Spring Controller本身也是一个 Spring Bean,只是它提供了 Web 能力,只需要在实现类上提供一个Controller注解就可以了。

import org.springgramework.stereotype.Controller;

@Controller
public class HelloController {
}
2. 加载网页

在 Spring Boot 应用中,一般把网页放在src/main/resources/static目录下
在这里插入图片描述
在 Controller 中,会自动加载 static 下的 HTML 内容

import org.springframework.stereotype.Controller;

@Controller
public class HelloControl {
    public String say(){
    	//返回的是 html 文件路径
        return "hello.html";
    }
}
3. RequestMapping 注解

对于 Web 服务器来说,必须要实现的一个能力就是解析 URL,并提供资源给调用者。这个过程称为路由。Spring MVC 完美的支持了路由能力,只需要在 Web 访问的方法上添加一个@RequestMapping注解就可以完成配置了

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloControl {
    @RequestMapping("/hello")
    public String say(){
        return "html/hello.html";
    }
}
获取 Http URL 参数
https://域名/songlist?id=xxxx

定义参数,在方法上卖弄添加对应的参数参数注解

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class SongListControl {
	@RequestMapping("/songlist")
	public String index(@RequestParam("id") String id) {
		System.out.println(id);
		return "html/songList.html";
	}
}

这个注解@RequestParam的参数 “id”必须和 URL 的参数一样

// https://域名/songlist?listId=xxxx
@RequestMapping("/songlist")
public String index( @RequestParam("listId") String id){
    return "html/songList.html";
}

@RequestMapping注解用于解析 URL 请求路径,这个注解默认是支持所有的 Http Method 的,单对于 GET 请求来说,可以使用@GetMapping注解

import org.springframework.web.bind.annotation.*;

@GetMapping("/songlist")
public String index(@RequestParam("id") String id,@RequestParam("pageNum") int pageNum){
  return "html/songList.html";
}

非必须传递的参数

@GetMapping("/songlist")
public String index(@RequestParam(name="pageNum",required = false) int pageNum,@RequestParam("id") String id){
  return "html/songList.html";
}

设置非必须传递的参数后,这两种 URL 请求都是可以的
http://xxxx/songlist?id=xxx&pageNum=1
http://xxxx/songlist?id=xxx

上面的例子都是返回 HTML 内容
如果只想返回数据(类JSON格式):则需要用到@ResponseBody注解,放在请求方法上
如果在请求返回的参数时对象时 Spring MVC 会自动把对象转换为 JSON 字符串输出到网页上

@GetMapping("/api/foos")
@ResponseBody
public String getFoos(@RequestParam("id") String id) {
  return "ID: " + id;
}

点击 Spring Boot

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值