Spring MVC是Spring框架的一部分,它实现了Web应用程序的Model-View-Controller(MVC)设计模式。Spring MVC通过一套注解和类提供了一个富有表现力的方式来构建Web应用程序。以下是对Spring MVC的简单介绍和基本使用方式。
Spring MVC的组件:
- 控制器(Controller):处理HTTP请求的组件,通常由
@Controller
注解的类表示。 - 视图(View):用于渲染响应的组件,可以是JSP、Thymeleaf、FreeMarker等。
- 模型(Model):包含视图显示所需数据的容器。
Spring MVC工作流程:
- 客户端发送请求:用户通过浏览器发送一个HTTP请求到服务器。
- 前端控制器(DispatcherServlet)接收请求:Spring的
DispatcherServlet
是MVC框架的前端控制器,它负责接收所有的请求并将它们分发给相应的控制器。 - 控制器处理请求:
DispatcherServlet
查询一个或多个HandlerMapping
,找到处理请求的控制器。 - 模型和视图:控制器将业务数据放入模型,并返回一个视图名。
- 视图解析器:
DispatcherServlet
使用ViewResolver
来将逻辑视图名解析为实际的视图。 - 渲染视图:视图使用模型数据来渲染HTML响应。
- 响应返回到客户端:响应通过
DispatcherServlet
返回到用户的浏览器。
使用Spring MVC构建简单的Web应用程序:
1. 添加依赖
如果使用Maven,需要在pom.xml
中添加Spring MVC的依赖:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.x</version>
</dependency>
<!-- 其他依赖,比如Thymeleaf、Jackson(用于JSON处理)等 -->
</dependencies>
2. 配置DispatcherServlet
在web.xml
中配置DispatcherServlet
或使用Java配置方式注册:
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] { RootConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] { WebConfig.class };
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
其中,WebConfig
是一个带有@Configuration
注解的类,用于设置Spring MVC的配置。
3. 创建控制器
创建一个控制器类,并使用@Controller
注解:
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class MyController {
@GetMapping("/greeting")
public String greeting(Model model) {
model.addAttribute("message", "Hello, World!");
return "greeting";
}
}
4. 配置视图解析器
在WebConfig
中配置视图解析器:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
}
5. 创建视图
在/WEB-INF/views/
目录下创建一个名为greeting.jsp
的JSP文件:
<!DOCTYPE html>
<html>
<head>
<title>Greeting</title>
</head>
<body>
<h1>${message}</h1>
</body>
</html>
6. 构建和运行应用程序
构建项目,并将其部署到一个Servlet容器(如Tomcat)中。访问应用程序的/greeting
路径,你应该看到Hello, World!
这个消息渲染在页面上。
总结
Spring MVC提供了一种灵活的方式来构建Web应用程序,它通过声明式的控制器和视图解析机制简化了Web开发。Spring MVC可以与其他Spring项目(如Spring Security、Spring Data等)无缝集成,为创建企业级Web应用程序提供了坚实的基础。