一、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/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上自己总结的内容
七、SpringMvc的执行流程
Restful风格以及其他接收前端参数的方式详见: