SpringMvc3中@RequestParam获取GET请求参数乱码

本文提供了解决Tomcat6配置中URIEncoding编码问题的方法,通过在server.xml文件中添加URIEncoding=UTF-8属性,解决了HTTP请求编码不一致导致的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RT,解决办法修改tomcat6/conf/server.xml中的  Connector ,新增“URIEncoding="UTF-8"”即可

如下:

               <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" 
               redirectPort="8443" URIEncoding="UTF-8"/>
 
在 Spring MVC 中,发送 GET 请求通常是在前端(如 HTML 表单、JavaScript 或通过浏览器地址栏)发起,并由后端控制器进行接收和处理。以下是几种常见的方式用于发送 GET 请求: ### 使用 HTML 表单发送 GET 请求 HTML 表单可以通过设置 `method="get"` 来发送 GET 请求。这种方式会将表单数据作为 URL 参数附加在请求中。 ```html <form action="/search" method="get"> <input type="text" name="query" placeholder="输入搜索内容"> <button type="submit">搜索</button> </form> ``` 当用户提交此表单时,浏览器将向 `/search` 发送一个 GET 请求,URL 可能类似于 `/search?query=xxx`。 ### 使用 JavaScript/AJAX 发送 GET 请求 可以使用 JavaScript 的 `fetch` API 或 jQuery 的 `$.get()` 方法来发送异步 GET 请求。 #### 使用 `fetch` 发送 GET 请求 ```javascript fetch(&#39;/api/data?param1=value1&#39;) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(&#39;Error:&#39;, error)); ``` #### 使用 jQuery 发送 GET 请求 ```javascript $.get(&#39;/api/data&#39;, { param1: &#39;value1&#39; }, function(data) { console.log(data); }); ``` ### 在 Spring MVC 后端接收 GET 请求 Spring MVC 通过 `@RequestMapping` 或 `@GetMapping` 注解来接收并处理 GET 请求。 #### 示例:接收带有参数GET 请求 ```java @RestController public class ExampleController { @GetMapping("/fetch") public String handleGetRequest(@RequestParam("from") String fromDate) { return "Received date: " + fromDate; } } ``` 在这个示例中,GET 请求 `/fetch?from=2023-10-01` 将被映射到 `handleGetRequest` 方法,并提取 `from` 参数的值。 #### 处理日期类型的 GET 请求参数 如果需要将 GET 请求中的字符串参数转换为 `Date` 类型,可以通过自定义 `Converter` 或使用 `@DateTimeFormat` 注解实现格式化转换 [^2]。 ```java @GetMapping("/fetchDate") public String handleGetDateRequest(@RequestParam("from") @DateTimeFormat(pattern = "yyyy-MM-dd") Date fromDate) { return "Received date: " + fromDate; } ``` ### 解决 GET 请求乱码问题 在某些情况下,GET 请求参数可能会出现乱码。可以通过配置 Spring 的字符编码过滤器或在 Tomcat 配置中指定 URI 编码解决此类问题 [^3]。 #### 在 `web.xml` 中配置字符编码过滤器 ```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> <init-param> <param-name>forceEncoding</param-name> <param-value>true</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、付费专栏及课程。

余额充值