Spring MVC rest接收json中文格式数据显示乱码

本文介绍了一种在web.xml中设置全局UTF-8编码的方法,通过添加CharacterEncodingFilter过滤器来确保所有请求都能被正确地编码。

1.解决方法其中之一

在web.xml下添加配置:

<!-- 编码配置 -->
    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

转载于:https://www.cnblogs.com/JJDJJ/p/7473775.html

<think>好的,用户想了解Spring MVC框架的使用指南、示例和教程。首先,我需要整理Spring MVC的基本概念和核心组件,确保覆盖用户可能需要的入门信息。根据之前的引用内容,Spring MVC是基于MVC设计模的,所以需要分Model、View、Controller三个部分来讲解。 接下来,用户可能需要一个快速入门的示例,这样他们可以直观地看到如何搭建一个简单的Spring MVC应用。引用中提到了DispatcherServlet、控制器和视图解析器,这些都是关键点。需要创建一个简单的控制器类,用@Controller和@RequestMapping注解,并展示如何返回视图。 然后,用户可能会关心配置部分,比如web.xml和Spring的配置文件。这里需要说明如何配置DispatcherServlet以及视图解析器,比如InternalResourceViewResolver,同时要提到组件扫描,这样控制器才能被正确识别。 另外,用户可能对注解的使用比较感兴趣。引用里提到了@RequestParam、@PathVariable、@ResponseBody等,这些是处理请求参数和响应的重要注解,需要举例说明它们的用法和区别。 数据传递部分也很重要,如何将数据从Controller传到View,比如使用Model或者ModelMap对象,这里可以结合示例代码展示添加属性并在JSP中显示。 用户可能还会遇到中文乱码的问题,特别是POST请求,所以需要提供解决乱码的配置方法,比如配置CharacterEncodingFilter。同时,GET请求的乱码处理可能需要修改服务器配置,但可以简要提及。 最后,考虑到用户可能需要进一步学习,应该生成一些相关问题,比如高级配置、RESTful支持、拦截器使用等,帮助他们深入探索。需要确保回答结构清晰,步骤明确,代码示例正确,并且符合用户的中文要求,使用正确的LaTeX格。</think>### Spring MVC 框架使用指南与示例 #### 一、Spring MVC 核心架构 Spring MVC 基于 **MVC 设计模**,核心组件包括: 1. **DispatcherServlet**:前端控制器,负责请求分发和协调流程[^3]。 2. **Controller**:处理业务逻辑,返回视图或数据。 3. **ViewResolver**:解析逻辑视图名到具体视图(如 JSP、HTML)。 4. **Model**:通过键值对传递数据到视图层。 #### 二、快速入门示例 ##### 1. 环境配置(Maven依赖) ```xml <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.20</version> </dependency> ``` ##### 2. 控制器示例 ```java @Controller public class HelloController { @RequestMapping("/hello") public String hello(Model model) { model.addAttribute("message", "Hello Spring MVC!"); return "hello-page"; // 对应视图名 } } ``` ##### 3. 视图解析配置(XML) ```xml <!-- spring-mvc.xml --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" /> </bean> ``` ##### 4. 请求流程 1. 用户访问 `/hello` → DispatcherServlet 接收请求 2. 匹配到 `HelloController.hello()` → 执行逻辑 3. 返回视图名 `hello-page` → 解析为 `/WEB-INF/views/hello-page.jsp` 4. 渲染 JSP 并返回响应 #### 三、关键注解详解 | 注解 | 作用 | |----------------|----------------------------------------------------------------------| | `@RequestMapping` | 映射 HTTP 请求到控制器方法,支持路径、方法类型限定[^2] | | `@RequestParam` | 绑定请求参数到方法参数(支持默认值) | | `@PathVariable` | 从 URL 路径中提取变量值 | | `@ResponseBody` | 将返回值直接写入响应体(用于 REST API) | **示例代码:** ```java @GetMapping("/user/{id}") @ResponseBody public String getUser(@PathVariable int id, @RequestParam(defaultValue = "zh-CN") String lang) { return "User ID: " + id + ", Language: " + lang; } ``` #### 四、数据传递与视图技术 1. **Model 传值** ```java model.addAttribute("key", value); // JSP 中通过 ${key} 获取 ``` 2. **JSON 响应(需 Jackson 依赖)** ```java @GetMapping("/api/data") @ResponseBody public Map<String, Object> getData() { return Map.of("status", 200, "data", "响应内容"); } ``` #### 五、中文乱码解决方案 ```xml <!-- web.xml --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值