Spring MVC 3.0实战精讲:新特性与核心概念

5星 · 超过95%的资源 需积分: 9 8 下载量 60 浏览量 更新于2024-07-28 收藏 2.62MB PPT 举报
"Spring MVC 3.0实战指南.ppt" Spring MVC 是一款基于 Java 的轻量级 Web 开发框架,是 Spring 框架的一部分,用于构建 Web 应用程序。Spring MVC 3.0 版本在之前的基础上进行了许多增强和改进,使其更加高效和易于使用。 1. **Spring MVC 框架简介** Spring MVC 提供了一个模型-视图-控制器(MVC)架构,用于分离应用程序的业务逻辑、数据和用户界面。它通过 DispatcherServlet 进行调度,将 HTTP 请求分发到相应的处理器。 2. **HTTP 请求地址映射** 使用 `@RequestMapping` 注解来定义控制器类和方法级别的 URL 映射。例如,`@RequestMapping("/user")` 将整个 UserController 类与 "/user" 前缀的 URL 关联,而 `@RequestMapping(value="/register")` 定义了处理注册请求的方法。 3. **HTTP 请求数据的绑定** Spring MVC 自动将 HTTP 请求参数绑定到控制器方法的参数上,使得数据绑定变得简单。同时,它支持多种数据类型,包括基本类型、复杂对象等。 4. **数据转换、格式化、校验** Spring MVC 内置了数据转换器和格式化器,可以自动将请求参数转换为期望的数据类型,并进行格式化。另外,它与数据校验框架如 Hibernate Validator 集成,允许在控制器方法中进行数据验证。 5. **数据模型控制** 控制器方法返回的 `ModelAndView` 对象包含了模型数据和视图名称,模型数据可以被传递到视图层,视图名称则用来确定渲染的页面。 6. **视图及解析器** 视图解析器(View Resolver)负责根据给定的逻辑视图名(如 "user/register")找到实际的视图资源,如 JSP、XML 或 PDF 文件。Spring MVC 支持多种视图技术,如 JSTL、FreeMarker 和 Velocity。 7. **Spring MVC 3.0 新特性** - **RESTful URL 支持**:通过使用路径变量和 HTTP 方法,Spring MVC 3.0 支持创建符合 RESTful 风格的 URL。 - **更多注解驱动**:添加了更多的注解,如 `@PathVariable`,使得注解驱动的编程更加灵活。 - **HttpMessageConverter**:处理 HTTP 输入输出的转换,支持 JSON、XML 等多种格式。 - **集成验证框架**:与数据转换、格式化和验证框架无缝集成,简化验证过程。 - **静态资源处理**:对静态资源提供特殊处理,提高性能。 - **独立于 Servlet API**:控制器方法签名更灵活,可以完全不依赖 Servlet API。 8. **框架的实现者** 在 Spring MVC 中,`DispatcherServlet` 是核心组件,负责调度请求;`HandlerMapping` 负责将请求映射到处理器,如 `DefaultAnnotationHandlerMapping` 处理注解方式的映射;`HandlerAdapter` 负责调用处理器方法,如 `AnnotationMethodHandlerAdapter` 处理注解方法;`ViewResolver` 解析逻辑视图名到实际视图;`Model` 存储模型数据,`View` 渲染视图。 Spring MVC 3.0 提供了丰富的特性和强大的功能,是构建现代 Java Web 应用的强大工具,通过注解驱动和组件化的特性,降低了开发者的工作负担,提高了开发效率。

postman接口调用idea,idea控制台报错org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'text/plain;charset=UTF-8' not supported at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:225) at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:158) at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:131) at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121) at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:170) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:893) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:807) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1061) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:961) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)

2023-06-08 上传

Field error in object 'admin' on field 'id': rejected value [null]; codes [typeMismatch.admin.id,typeMismatch.id,typeMismatch.java.lang.Integer,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [admin.id,id]; arguments []; default message [id]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'java.lang.Integer' for property 'id'; nested exception is java.lang.NumberFormatException: For input string: "null"] at org.springframework.web.method.annotation.ModelAttributeMethodProcessor.resolveArgument(ModelAttributeMethodProcessor.java:157) ~[spring-web-5.0.2.RELEASE.jar:5.0.2.RELEASE] at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:124) ~[spring-web-5.0.2.RELEASE.jar:5.0.2.RELEASE] at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:161) [spring-web-5.0.2.RELEASE.jar:5.0.2.RELEASE] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:131) [spring-web-5.0.2.RELEASE.jar:5.0.2.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) [spring-webmvc-5.0.2.RELEASE.jar:5.0.2.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:871) [spring-webmvc-5.0.2.RELEASE.jar:5.0.2.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:777) [spring-webmvc-5.0.2.RELEASE.jar:5.0.2.RELEASE] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) [spring-webmvc-5.0.2.RELEASE.jar:5.0.2.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991) [spring-webmvc-5.0.2.RELEASE.jar:5.0.2.RELEASE] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) [spring-webmvc-5.0.2.RELEASE.jar:5.0.2.RELEASE] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978) [spring-webmvc-5.0.2.RELEASE.jar:5.0.2.RELEASE] at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:881) [spring-webmvc-5.0.2.RELEASE.jar:5.0.2.RELEASE] at javax.servlet.http.HttpServlet.service(HttpServlet.java:652) [servlet-api.jar:4.0.FR] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:855) [spring-webmvc-5.0.2.RELEASE.jar:5.0.2.RELEASE]

2023-05-31 上传