SpringMVC에서 @ResponseBody 메모를 해결하고 중국어 디코드 문제를 반환합니다.

4025 단어 responsebody
어제 프로젝트를 할 때 @ResponseBody로 주석을 달았는데 되돌아오는 페이지에 있는 중국어가 엉망인 것을 발견했습니다. 해결 과정도 저를 답답하게 했습니다!!!여기에 좀 기록하겠습니다.현재 다음과 같은 몇 가지 솔루션이 있습니다.
@RequestMapping 의 produces 방법
첫 번째 해결 방안은 @RequestMapping 주석을 사용하는 프로덕션 방법이다.다음과 같이 쓰십시오.

@RequestMapping(value = "testPersonalValidtor.do",produces = "application/json;charset=utf-8")  
방법에 이 주해를 더하면 된다.그러나 이렇게 쓰면 제한이 있어 특정한 방법에서만 사용할 수 있다.전체적으로 사용하려면 SpringMVC의 구성 파일을 수정해야 합니다.
messageConverters 사용
두 번째 해결 방법은 HttpMessageConverter 인터페이스를 사용하는 관련 실현 클래스입니다.우리는 먼저 프로필의 프로필 정보를 본다.

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" > 
 <property name="messageConverters"> 
  <list> 
   <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" /> 
   <bean class="org.springframework.http.converter.StringHttpMessageConverter"> 
    <property name="supportedMediaTypes"> 
     <list> 
      <value>text/plain;charset=utf-8</value> 
      <value>text/html;charset=UTF-8</value> 
     </list> 
    </property> 
   </bean> 
  </list> 
 </property> 
</bean> 
그리고 Maven 의존에 Jackjson 의존을 설정해야 합니다.

<dependency> 
 <groupId>org.codehaus.jackson</groupId> 
 <artifactId>jackson-mapper-asl</artifactId> 
 <version>1.9.13</version> 
</dependency> 
<dependency> 
 <groupId>org.codehaus.jackson</groupId> 
 <artifactId>jackson-core-asl</artifactId> 
 <version>1.9.13</version> 
</dependency> 
어제 나를 우울하게 한 것은 내가 이렇게 설정한 후에도 확실히 효력이 발생하지 않는다는 것이다.나중에 위치가 틀린 것을 발견했습니다. 이 설정을 위에 놓아야 합니다.정말 어이없는 느낌!!!
주의: 위에 올려야 합니다. 그렇지 않으면 효력이 발생하지 않습니다.

SpringMVC의 프로필에 를 추가하는 방식도 있습니다.구성은 다음과 같습니다.

<!-- SpringMVC  --> 
<mvc:annotation-driven> 
 <mvc:message-converters> 
  <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"/> 
  <bean class="org.springframework.http.converter.StringHttpMessageConverter"> 
   <property name="supportedMediaTypes"> 
    <list> 
     <value>text/plain;charset=utf-8</value> 
     <value>text/html;charset=UTF-8</value> 
    </list> 
   </property> 
  </bean> 
 </mvc:message-converters> 
</mvc:annotation-driven> 

주의: 이런 설정을 사용할 때 Request Mapping Handler Mapping, Request Mapping Handler Adapter 또는 Default Annotation Handler Mapping, Annotation Method Handler Adapter의 Bean 설정을 제거해야 합니다. 그렇지 않으면 효과가 없을 수 있습니다.
또한 요청 매핑 처리 클래스의 반환 유형은 String일 수도 있고 Object일 수도 있습니다. (Object가 JavaBean이라면 SpringMVC는 Jackson 문자열로 변환됩니다.)예는 다음과 같습니다.

@RequestMapping(value = "testPersonalValidtor.do") 
@ResponseBody 
//  
public Object testPersonalValidtor(@Valid PersonScope personScope, BindingResult bindingResult){ 
 if(bindingResult.hasErrors()){ 
  StringBuffer sb = new StringBuffer(); 
  for(ObjectError objectError : bindingResult.getAllErrors()){ 
   sb.append(((FieldError)objectError).getField() +" : ").append(objectError.getDefaultMessage()); 
  } 
  return sb.toString(); 
 }else{ 
  return personScope; 
 } 
} 
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기