![](https://i-blog.csdnimg.cn/direct/eca956073abb4a909cce5980aead98a8.png)
springMVC与sevlet都是对应表现层web的,但是越复杂的项目使用SpringMVC越方便
基于Java实现MVC模型的轻量级web框架
目标:
![](https://i-blog.csdnimg.cn/direct/ab76019e77f14a4db57994acb29a626f.png)
![](https://i-blog.csdnimg.cn/direct/6b46921d6df64252a0329090197bc5de.png)
小案例:
1.导入依赖
java
spring-context: 提供 Spring 框架的核心功能,如依赖注入、事件发布和其他应用上下文的功能。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.20</version>
</dependency>
aspectjweaver: 提供 AspectJ 框架的织入支持,允许你在 Spring 应用中使用面向切面编程(AOP)
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.4</version>
</dependency>
<!-- springMVC依赖注入 -->
javax.servlet-api: 提供 Java Servlet API 的接口,用于构建 web 应用的服务器端逻辑。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
spring-webmvc: 支持 Spring MVC 框架,用于构建 web 应用程序的控制器和视图层,处理 HTTP 请求和响应。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>请告诉我这些依赖的作用
2.使用@controller定义Bean,并定义访问路径
java
@Controller
public class UserController {
@RequestMapping("save")//定义访问路径
@ResponseBody//设置当前返回值类型,将返回值当作一个整体返回
public String save() {
System.out.println("user save");
return "{'info':'springmvc'}";
}
}
3.创建springmvc的配置文件,加载controller 对应的bean
java
@Configuration
@ComponentScan("com.viki.controller")
public class SpringConfig {
}
4.定义一个servlet容器启动的配置类,在里面加载spring的配置
java
定义一个servlet容器启动的配置类,在里面加载spring的配置
public class ServletContainerInitConfig extends AbstractDispatcherServletInitializer {
@Override//加载springMVC容器配置
protected WebApplicationContext createServletApplicationContext() {
AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
ctx.register(SpringConfig.class);
return (WebApplicationContext) ctx;
}
@Override//设置哪些请求归属springMVC处理
protected String[] getServletMappings() {
return new String[]{"/"};
}
@OverrideJ//加载spring容器配置
protected WebApplicationContext createRootApplicationContext() {
return null;
}
}
![](https://i-blog.csdnimg.cn/direct/4cdd32916dac4562aca42ea7a5c67798.png)
![](https://i-blog.csdnimg.cn/direct/292e1c3250b14fca81de589d4c246622.png)
![](https://i-blog.csdnimg.cn/direct/22969eb2199e4d46a6aa9c548cbf9198.png)
![](https://i-blog.csdnimg.cn/direct/689bfb404db04800bd9e5f8033fa0559.png)
1.请求与响应
![](https://i-blog.csdnimg.cn/direct/977676502a5c4f5fbb29b8718a65b938.png)
![](https://i-blog.csdnimg.cn/direct/7098359dbb694c2fb3354d8e752c186b.png)
![](https://i-blog.csdnimg.cn/direct/770de6605f32493891db42f2fc41e565.png)
![](https://i-blog.csdnimg.cn/direct/6557a2dd73cb4ca9aa94ea247aeaa243.png)
![](https://i-blog.csdnimg.cn/direct/77cdd23d26304254aae82d76e6de3683.png)
![](https://i-blog.csdnimg.cn/direct/250167ebab2d465c8f836eb9580bc31e.png)
![](https://i-blog.csdnimg.cn/direct/1b2f705951f945759ba60942d4a67f10.png)
java
@Controller
@RequestMapping("/hello")
@ResponseBody// 类级别的请求映射
public class HelloHandler {
@RequestMapping(value = "/index") // 方法级别的请求映射
public String index(String name,int age) {
System.out.println("接受请求!"+"name:"+name+"age"+age);
return "HelloHandler";
}
@RequestMapping( "/indexdifnam")
@ResponseBody// 方法级别的请求映射
public String indexdifnam(@RequestParam("name") String username, int age) {
System.out.println("接受请求!"+"username:"+username+"age"+age);
return "HelloHandler";
}
@RequestMapping( "/javabeanpar")
@ResponseBody// 方法级别的请求映射
public String javabeanpar(User user) {
System.out.println("接受请求!"+"user===>"+user);
return "HelloHandler";
}
@RequestMapping( "/set")
@ResponseBody// 方法级别的请求映射
public String set(@RequestParam List<String> list) {
System.out.println("接受请求!"+"集合===>"+list.toString());
return "HelloHandler";
}
}
json数据
![](https://i-blog.csdnimg.cn/direct/7ba8ffc01e394f60b8212941890c22e6.png)
![](https://i-blog.csdnimg.cn/direct/5b983c1b773c4b41aa9e1a3e392c38c4.png)
重要注释:
![](https://i-blog.csdnimg.cn/direct/7ebb1a3c43fc428b91a27369e45ee233.png)
![](https://i-blog.csdnimg.cn/direct/535f4c79fe5248bdaeccf15f154efe99.png)
响应JSON数据只需要在对相应方法上@RequestBody方法,return后写上对应的String串,或者对象即可
![](https://i-blog.csdnimg.cn/direct/4edbda4ac390487a8c02aae594c87823.png)
![](https://i-blog.csdnimg.cn/direct/b09f55066c5645c7b441f0a9e8d2f692.png)
![](https://i-blog.csdnimg.cn/direct/a818e8daf94842989c29b8dbbe53e001.png)
![](https://i-blog.csdnimg.cn/direct/edec0d95037147c0a0b21e38abff352b.png)
![](https://i-blog.csdnimg.cn/direct/772d3c25e9504300a2321e6d3c0a2901.png)
此注解可以激活spring MVC的自动类型转换
类型转换数据依赖
java
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.13.1</version>
</dependency>