SSM笔记-SpringMVC基本使用
**SpringMVC基础详解** SpringMVC是Spring框架的一个模块,专门用于构建Web应用程序。它提供了模型-视图-控制器(MVC)架构,帮助开发者有效地处理HTTP请求和响应,实现松耦合和高可测试性的应用。在本文中,我们将深入探讨SpringMVC的基本配置、核心组件以及如何进行调用。 ### 一、SpringMVC核心组件 1. **DispatcherServlet**:前端控制器,它是SpringMVC的入口点,负责接收HTTP请求,然后根据请求信息找到合适的处理器。 2. **HandlerMapping**:处理器映射器,它根据请求URL找到对应的Controller方法。 3. **Controller**:控制器,实现了业务逻辑,处理请求并返回ModelAndView对象。 4. **ViewResolver**:视图解析器,将ModelAndView中的视图名解析为实际的视图。 5. **ModelAndView**:模型和视图对象,包含了处理结果和需要展示的数据。 6. **HandlerAdapter**:处理器适配器,用于调用Controller的方法。 ### 二、配置步骤 1. **引入依赖**:在项目pom.xml中添加SpringMVC相关的依赖库。 2. **web.xml配置**:配置DispatcherServlet,并指定其初始化参数,例如`contextConfigLocation`用于指定Spring MVC的配置文件位置。 ```xml <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-mvc-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> ``` 3. **Spring MVC配置文件**:配置`<mvc:annotation-driven/>`来启用基于注解的配置,以及`<mvc:default-servlet-handler/>`来处理静态资源请求。 ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <context:component-scan base-package="com.example.controller"/> <mvc:annotation-driven/> <mvc:default-servlet-handler/> </beans> ``` 4. **Controller配置**:使用@Controller注解定义一个类作为Controller,@RequestMapping或@RequestMapping方法注解用于映射请求。 ```java @Controller public class HelloWorldController { @RequestMapping("/hello") public ModelAndView hello() { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("hello"); modelAndView.addObject("message", "Hello, Spring MVC!"); return modelAndView; } } ``` ### 三、注释的使用 在SpringMVC中,注解是关键的配置方式。以下是一些常用的注解: - `@Controller`:标记一个类作为Spring MVC的控制器。 - `@RequestMapping`:映射HTTP请求,可以放在类或方法上,表示类级别的映射或方法级别的映射。 - `@GetMapping`、`@PostMapping`、`@PutMapping`、`@DeleteMapping`:分别对应HTTP的GET、POST、PUT、DELETE操作,是@RequestMapping的简化版本。 - `@PathVariable`:从URL路径中获取参数值。 - `@RequestParam`:从请求参数中获取值。 - `@ModelAttribute`:用于绑定表单数据到模型对象。 - `@ResponseBody`:将方法返回的对象直接写入HTTP响应体,通常用于返回JSON或XML数据。 ### 四、测试 在`SpringMVC_1_test`文件中,可能包含了单元测试或者整合测试的代码,用于验证Controller的正确性。测试通常会使用JUnit、Mockito等工具,模拟HTTP请求并验证Controller的响应。 例如,使用JUnit和MockMvc进行测试: ```java import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.test.web.servlet.MockMvc; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model; @WebMvcTest(HelloWorldController.class) class HelloWorldControllerTest { @Autowired private MockMvc mockMvc; @Test void shouldReturnHelloPage() throws Exception { mockMvc.perform(get("/hello")) .andExpect(view().name("hello")) .andExpect(model().attribute("message", "Hello, Spring MVC!")); } } ``` 通过上述测试,我们可以确保Controller在接收到"/hello"请求时能正确地返回"hello"视图,并且模型中包含预期的"message"属性。 总结,SpringMVC是一个强大且灵活的Web开发框架,通过合理的配置和注解使用,能够有效地构建出结构清晰、易于维护的Web应用程序。在实际开发中,理解并熟练掌握SpringMVC的核心组件和注解,对于提升开发效率和代码质量至关重要。
- 1
- 粉丝: 44
- 资源: 76
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Spring Boot框架的博客系统.zip
- (源码)基于Spring Boot框架的博客管理系统.zip
- (源码)基于ESP8266和Blynk的IR设备控制系统.zip
- (源码)基于Java和JSP的校园论坛系统.zip
- (源码)基于ROS Kinetic框架的AGV激光雷达导航与SLAM系统.zip
- (源码)基于PythonDjango框架的资产管理系统.zip
- (源码)基于计算机系统原理与Arduino技术的学习平台.zip
- (源码)基于SSM框架的大学消息通知系统服务端.zip
- (源码)基于Java Servlet的学生信息管理系统.zip
- (源码)基于Qt和AVR的FestosMechatronics系统终端.zip