在使用springMVC框架构建web应用,客户端常会请求字符串、整型、json等格式的数据,通常使用@ResponseBody注解使controller回应相应的数据而不是去渲染某个页面。如果请求的是非英文格式的字符串,往往在客户端显示的是乱码。原因是spring的StringHttpMessageConverter默认的字符类型是iso8895-1 ‘西欧语言’,不支持中文等字符,具体的框架内部流程不作介绍。
这里总结几种解决方案:
1.不使用@ResponseBody注解,使用HttpServeletResponse设置contentType属性
@RequestMapping(value =
"/rest/create/document"
)
public
void
create(Document do
cument, HttpServletRespone respone){
repoonse.setContentType("text/plain;charset='utf-8'");
response.write(“中文string”);
}
2.返回Response Entity object,设置contentType,例:
@RequestMapping(value = "/rest/create/document") public ResponseEntity<String> create(Document document, HttpServletRespone respone) HttpHeaders responseHeaders = new HttpHeaders(); responseHeaders.add("Content-Type", "text/html; charset=utf-8"); Document newDocument = DocumentService.create(Document); String json = jsonSerializer.serialize(newDocument); return new ResponseEntity<String>(json, responseHeaders, HttpStatus.OK); }
3.使用produces属性:
@RequestMapping(value = "/rest/create/document",produces= "text/plain;charset=UTF-8") @ResponseBody public String create(Document document, HttpServletRespone respone) throws UnsupportedEncodingException { Document newDocument = DocumentService.create(Document); return jsonSerializer.serialize(newDocument); }
相关推荐
"详解获取Spring MVC中所有RequestMapping以及对应方法和参数" Spring MVC是一个基于模型-视图-控制器(MVC)模式的Web应用程序框架, RequestMapping是一个重要的注解,它可以将HTTP请求映射到控制器的方法上。在...
【Spring MVC 请求映射(RequestMapping)注解详解】 在Spring MVC框架中,`@RequestMapping`注解是核心组件之一,它负责将HTTP请求与控制器类的处理方法进行映射,从而实现请求分发。该注解可以应用于类级别和方法...
弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,...
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class HelloController { @RequestMapping("/hello") @...
3. **控制器处理**: 创建一个Spring MVC Controller类,使用`@RequestMapping`注解处理HTTP请求,并返回一个模型视图名。例如: ```java @Controller public class HelloController { @RequestMapping("/hello")...
如上面源码所示,Spring 自带了一系列默认的`PropertyEditor`实现,支持诸如`CharSet`、`Class`、`Locale`等类型。如果需要自定义转换,可以通过实现`org.springframework.core.convert.converter.Converter`接口或...
7. **处理乱码问题**:为了防止乱码,需要在Controller中设置字符编码,例如,`@RequestMapping(value = "/save", method = RequestMethod.POST, consumes = "application/x-www-form-urlencoded; charset=UTF-8")`...
1. **Spring框架使用注解处理JSON数据**:这通常涉及到`@RestController`或`@Controller`配合`@RequestMapping`等注解的使用。 2. **中文乱码问题**:当客户端发送包含中文字符的数据时,服务器端收到的数据中中文...
控制器通常是一个带有@RequestMapping注解的方法,该方法会接收请求并返回响应。 ```java import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation....
charset=UTF-8"/> ``` 在这个配置中,`resourceLoaderPath`指定了Velocity模板文件的存放位置,`suffix`是模板文件的扩展名,`contentType`设置响应的MIME类型和字符编码。 创建Velocity模板文件(例如:`/WEB-...
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class HelloController { private String message; ...
charset=UTF-8"/> ``` **4. FreeMarker模板语言** FreeMarker模板语言(FTL)是一种简单的声明式语言,用于描述如何动态地生成文本。例如,你可以使用`<#if>`、`<#foreach>`等指令进行条件判断和循环,`${}`用来...
charset=UTF-8" language="java" %> <title>Hello, Spring MVC ${message} ``` 4. **配置Spring MVC上下文**:在Spring的配置文件(如`servlet-context.xml`)中,我们需要配置视图解析器和其他可能的bean...
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; @...
import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HelloController { @RequestMapping("/") public String hello(Model model) { model.addAttribute("message", ...
@RequestMapping("/users") public class UserController { @Autowired private UserService userService; @GetMapping public ResponseEntity<List<User>> getUsers() { List<User> users = userService.get...
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; public class ...
这里的 `@Controller` 注解标记该类为 Spring MVC 的控制器,`@RequestMapping` 注解定义了一个请求映射,当访问 `/hello` 路径时,会调用 `hello()` 方法。 ### 五、创建视图 在 `src/main/webapp/WEB-INF/views`...
@RequestMapping(value = "/example", method = RequestMethod.GET) public ModelAndView examplePage() { ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("message", "Hello, World!")...