Spring06

一、SpirngMvc的基本概念

Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级Web 开发框架,本质上相当于Servlet

MVC(Model View Controller) ,一种用于设计创建Web应用程序的开发模式

Model(模型):数据模型,用于数据处理,包括(service和dao)

View(视图):页面视图,用于展示数据

Controller (控制器):处理用户发送的请求,调用model完成数据处理,并对view视图进行响应

Controller接收浏览器发送的请求后,调用 Model(service和dao) ,处理完数据后,将响应结果返回给View(视图)

二、SpringBoot访问静态资源的特点

当我们在类上只加上**@Controller** 注解,而在方法上没有加上@ResponseBody 注解时,此时会进行页面跳转

后端代码:

java 复制代码
package com.itheima.cotroller;



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




@Controller
public class CustomerController {
    @RequestMapping("/hello2")
    public String hello2() {
        System.out.println("hello springmvc2");
        return "success.html";

    }

}

页面发送请求并得到返回结果:

后端代码中:

return "success.html";

SpringBoot程序就会默认以下路径 去寻找:success.html这个页面

src/main/resources/static/ 下找有没有 success.html

src/main/resources/public/ 下找有没有 success.html

src/main/resources/resources/ 下找有没有 success.html

src/main/resources/META-INF/resources/ 下找有没有 success.html

三、通过jar包运行程序

SpringBoot程序默认打jar包 ,当然也可以打war包,官方推荐打jar包。SpringBoot程序jar包中内置了web服务器可以直接运行jar包并访问程序

命令:java -jar jar 包的名称

3.1、将程序打成jar包

3.2、cmd进入jar包所在文件夹的命令行

3.3、输入命令: java -jar jar springmvc_01.jar

可以看到此时spring项目就启动了,我们一样可以通过postman或者页面访问到这个spring程序。

需要注意的是SpringBoot项目中Maven依赖里面如果没有加上下面插件的依赖,项目就会报错

java 复制代码
<plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>

出现报错

四、Springmvc响应字符串或者JSON

4.1、配置文件中改变虚拟路径、端口号

java 复制代码
server.servlet.context-path=/springmvc_02
server.port=8080

加上虚拟路径之前的访问路径:

http://localhost:8080/hello2

此时访问路径就会变成:

http://localhost:8080/springmvc_02/hello2

4.2、 Springmvc不进行页面跳转

4.2.1、返回字符串给前端页面

如果Controller中方法不想进行页面跳转 ,在类或者方法上使用**@ResponseBody**注解,表示该方法不进行页面跳转,将返回值通过响应体响应给客户端

后端代码:

java 复制代码
package com.itheima.cotroller;




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




@Controller
@ResponseBody
public class CustomerController {
    @RequestMapping("/hello1")
    public String hello1() {
        System.out.println("hello springmvc1");
        return "你好, springmvc";
    }
    
}

页面发送请求并得到返回结果:返回给页面的是字符串

4.2.2、返回JAVA对象给前端页面

后端代码:

java 复制代码
package com.itheima.cotroller;



import com.itheima.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


import java.util.Date;

@Controller
@ResponseBody
public class CustomerController {


    @RequestMapping("/hello3")
    public User hello3() {
        System.out.println("hello springmvc3");
        return new User("卢本伟",20,new Date());

    }

    
}

页面发送请求并得到返回结果:返回给页面的是JSON数据

说明:

Springmvc底层集成了jackson工具,能够自动将java对象转换成json响应给客户端

4.2.3、@RestController注解

直接使用**@RestController** 注解,同样能完成返回数据,而不进行页面跳转。@RestController 是一个组合注解,同时含有 @Controller@ResponseBody功能

五、postman的使用

5.1、使用postman发送get请求

点击右上角的params可以输入传入的参数:

例如上面输入:

key value

name 张益达

age 22

就会在请求行中 自动拼接传入的参数, 因为GET请求的请求参数是从请求行传输的,也可以直接在请求行中输入**?name=张益达&age=22**

5.2、使用postman发送post请求

Body中的请求体选raw,最右边选JSON

六、过滤器和拦截器之间的区别

1、归属不同: Filter 属于Servlet 技术,Interceptor属于SpringMVC技术

2、拦截内容不同: Filter拦截请求响应 的,Interceptor拦截访问Controller中的方法。

3、执行顺序不同:先执行过滤器,后执行拦截器

过滤器拦截页面的请求和响应,拦截器拦截Java内部访问Controller中的方法。

过滤器详见csdn上自己总结的内容

JavaWeb(十二)-CSDN博客

七、SpringMvc的执行流程

Restful风格以及其他接收前端参数的方式详见:

常见接收前端参数的方式_怎么接收前端传过来的参数-CSDN博客

相关推荐
小蒜学长3 分钟前
django全国小米su7的行情查询系统(代码+数据库+LW)
java·数据库·spring boot·后端
杨杨杨大侠13 分钟前
第2章:设计核心接口和事件模型
java·github·eventbus
杨杨杨大侠19 分钟前
第1章:事件驱动框架基础概念
java·github·eventbus
半夏陌离19 分钟前
SQL 进阶指南:视图的创建与使用(视图语法 / 作用 / 权限控制)
java·数据库·mybatis
程序员皮皮林1 小时前
Java jar 如何防止被反编译?代码写的太烂,害怕被人发现
java·开发语言·jar
麦兜*1 小时前
MongoDB 性能调优:十大实战经验总结 详细介绍
数据库·spring boot·mongodb·spring cloud·缓存·硬件架构
橙序员小站1 小时前
搞定系统面试题:如何实现分布式Session管理
java·后端·面试
叫我阿柒啊2 小时前
从Java全栈到Vue3实战:一次真实面试中的技术探索
java·数据库·spring boot·微服务·typescript·vue3·restful
武子康2 小时前
Java-118 深入浅出 MySQL ShardingSphere 分片剖析:SQL 支持范围、限制与优化实践
java·大数据·数据库·分布式·sql·mysql·性能优化
努力努力再努力wz2 小时前
【c++进阶系列】:万字详解AVL树(附源码实现)
java·运维·开发语言·c++·redis