目录

Java-JavaSpringMVC解析1

Java—JavaSpringMVC解析(1)

Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在 Spring 框架中。它的正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为"Spring

MVC"

1.MVC

MVC是Model View Controller的缩写, 它是软件⼯程中的⼀种软件架构设计模式,它把软件系统分

为模型、视图和控制器三个基本部分

https://i-blog.csdnimg.cn/direct/835df3ae428a4856accc894295c8fc13.png

其中:

View:用于界面显示,进行人机交互,展示数据

Controller:分配资源的分用器,用于处理判断视图传来的请求应该用哪个模型解决,以及处理后的响应应该发给哪个视图

Model: 是应用程序的主体部分,⽤来处理程序中数据逻辑的部分

用生活中的例子说:

View:服务员,用于与客户顾客交互的角色

Controller:前台,处理服务员从顾客那里拿来的菜单应该给哪个厨师

Model: 厨师,真正做菜的角色

2.Spring MVC

那么Spring实现MVC后有什么改变呢?下图可能展示的更准确

https://i-blog.csdnimg.cn/direct/253e13d08e8a47a98a26bdc6b483b754.png

既然是 Web 框架, 那么当⽤⼾在浏览器中输⼊了 url 之后,我们的 Spring MVC 项⽬就可以感知到⽤户的请求, 并给予响应。

主要分以下三个⽅⾯:

建⽴连接:将用户(浏览器)和 Java 程序连接起来,也就是访问⼀个地址能够调⽤到我们的Spring 程序。

请求: 用户请求的时候会带⼀些参数,在程序中要想办法获取到参数, 所以请求这块主要是 获取参数的功能.

响应: 执行了业务逻辑之后,要把程序执行的结果返回给用户, 也就是响应

2.1建立连接

在 Spring MVC 中使⽤

@RequestMapping

来实现 URL 路由映射 ,也就是浏览器连接程序的作⽤

创建一个HelloController程序, 实现用户通过浏览器和程序的交互

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
    @RequestMapping("/Hello")
    public String hello() {
        System.out.println("Hello Spring MVC");
        return "Hello Spring MVC!!";
    }

}

启动程序后,接下来在浏览器 访问:

http://127.0.0.1:8080/Hello

, 就可以看到程序返回的数据了

https://i-blog.csdnimg.cn/direct/8ef848e1258a40cba477556deeba4ee9.png

2.1.1 @RequestMapping作用

@RequestMapping 用与注册接⼝的路由映射的

表示当路径/Hello接收到请求时,就会调用hello()方法

路由映射:当用户输入url访问服务时,将用户请求定位再某个类的某个方法的过程就是路由映射

既然

@RequestMapping

已经可以达到我们的⽬的了, 我们为什么还要加

@RestController呢?

我们把

@RestController

去掉, 再来访问⼀次

https://i-blog.csdnimg.cn/direct/7b487d2cee474d79b4192fbad8d45d83.png

程序报了404错误,显示找不到界面

Spring会对所有的类进⾏扫描, 如果类加了注解@RestController, Spring才会去看这个类⾥⾯的⽅法有没有加 @RequestMapping

这个注解

2.1.2@RequestMapping使用

@RequestMapping 既可修饰类,也可以修饰⽅法 ,当修饰类和⽅法时,访问的地址是类路径 + ⽅法路径.

@RequestMapping标识⼀个类:设置映射请求的请求路径的 初始 信息

@RequestMapping标识⼀个⽅法:设置映射请求请求路径的 具体 信息

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/r1")
@RestController
public class HelloController {
    @RequestMapping("/Hello")
    public String hello() {
        System.out.println("Hello Spring MVC");
        return "Hello Spring MVC!!";
    }
}

访问地址:

https://i-blog.csdnimg.cn/direct/ed472bb2f9fb4c0cb21ce3a50e00e150.png

注意:

@RequestMapping 的URL 路径最前⾯加不加

/

(斜杠)都可以, Spring程序启动时, 会进⾏判断, 如果前⾯没有加 /

, Spring会拼接上⼀个

/

2.1.3@RequestMapping是Get请求还是Post请求

我们通过创造from表单构建请求

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

    <form action="/r1/Hello" method="post">
        <input type="submit" value="提交">
    </form>
</body>
</html>

放在static包中

https://i-blog.csdnimg.cn/direct/fd2c492b9fdc4a3e9d5e9c7db3ea08f6.png

访问⽅式为:

http://127.0.0.1:8080/test.htm

https://i-blog.csdnimg.cn/direct/1584e44c822b4b67ac868c46244c144a.png

如果有多层目录,访问链接从static目录开始

https://i-blog.csdnimg.cn/direct/820e0dbf688742beabe3ec0b69015632.png

如上图, 访问链接为:

http://127.0.0.1:8080/html/test.html

https://i-blog.csdnimg.cn/direct/f80fbae68afd4d058f3db3115716b3dc.png

点击提交后跳转到 : http://127.0.0.1:8080/r1/Hello

可以通过@RequestMapping 指定GET/POST⽅法类型

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/r1")
@RestController
public class HelloController {
    @RequestMapping(value = "/Hello",method = RequestMethod.POST)
    public String hello() {
        System.out.println("Hello Spring MVC");
        return "Hello Spring MVC!!";
    }
}