Spring MVC(Model-View-Controller,模型-视图-控制器)是一个基于Java的Web应用程序框架,它实现了MVC设计模式。作为Spring框架的一部分,Spring MVC旨在简化基于Java的Web开发,并提供灵活、可扩展的解决方案。Spring MVC的主要特点包括:
分层架构:Spring MVC将应用程序分为模型(Model)、视图(View)和控制器(Controller)三个层次,有助于实现代码的解耦和可维护性。
控制器:Spring MVC的控制器负责处理用户请求,并将其分发到合适的处理程序。控制器通常使用注解来定义处理请求的方法,并将方法映射到特定的URL。
数据绑定和验证:Spring MVC提供了数据绑定和验证的功能,可以将用户输入的数据自动绑定到Java对象,并进行验证。这简化了处理表单提交的过程,提高了开发效率。
视图解析:视图解析器是Spring MVC的一个重要组件,它负责根据控制器的返回值找到合适的视图并渲染。Spring MVC支持多种视图技术,如JSP、Thymeleaf、FreeMarker等。
插件式架构:Spring MVC支持插件式的架构,可以轻松地扩展和集成其他技术。例如,可以通过集成Spring Security来实现应用程序的安全性。
高度可定制:Spring MVC提供了丰富的扩展点,可以定制请求处理、数据绑定、视图解析等功能,以满足特定需求。
总之,Spring MVC是一个功能强大、高度可定制的Web应用程序框架。它将应用程序分为模型、视图和控制器三个层次,有助于实现代码的解耦和可维护性。通过使用Spring MVC,开发者可以更轻松地构建和维护基于Java的Web应用程序。
一、准备环境
导入对应的依赖
使用SpringMVC技术需要线导入SpringMVC坐标与Servlet坐标
二、定义一个测试类
package com.itheima.controller;
import com.itheima.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("user")
public class UserController {
@RequestMapping(value = "/save", method = RequestMethod.GET) //设置访问路径
@ResponseBody //设置当前返回值类型
public String save(){
System.out.println("user save ...");
return "{'module:springmvc'}";
}
@RequestMapping("getName")
@ResponseBody
public User getName(@RequestParam("name") String name, int age){ //接收参数直接把形参和请求的参数名一致
//@RequestParam("name")用于绑定参数,如果参数和形参一样就不需要写
System.out.println(name +"===>"+ age);
User user = new User(name,age);
return user;//响应json数据要先导入jackson-databind这个包,然后在spring配置文件中配置@EnableWebMvc //开启自动转换前端传递的json数据
//最后直接返回对象集合即可
}
}
@ResponseBody 就是把方法返回的内容整体响应到外面
三、定义一个SpringMVC配置类
//springmvc的配置文件,加载controller对应的bean
@Configuration //表明当前类是一个配置类
@ComponentScan("com.itheima") //扫描包名
public class SpringConfig {
}
四、定义一个servlet容器启动的配置类,在里面加载spring配置
package com.itheima.config;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;
//定义一个servlet容器启动的配置类,在里面加载spring配置
public class ServletControllersinitConfig extends AbstractDispatcherServletInitializer {
//加载springMVC容器
protected WebApplicationContext createServletApplicationContext() {
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
context.register(SpringConfig.class);
return context;
}
//设置那些请求归属springMVC处理
protected String[] getServletMappings() {
return new String[]{"/"}; //所有请求都交给springmvc处理
}
//加载spring容器配置
protected WebApplicationContext createRootApplicationContext() {
return null;
}
}
五、测试
打开postman填写请求地址发送请求,成功得到返回值
测试GET请求
测试POST请求,需要再spring配置文件中配置@EnableWebMvc 开启自动转换,将前端传递的json数据转为对象
六、注意事项
出现以下报错不用管
这个错误是java版本不对引起的,我本地用的jdk8,module-info.class这个包不支持jdk8
还有一个问题就是popstman请求以后拿不到结果,控制台会打印一条警告,但是浏览器访问可以正常拿到结果
这个问题是因为本地开了 代理导致的
要想解决这个问题很简单
1.打开设置
2.找到proxy选项,取消勾选代理
3.再次测试,成功拿到结果