spring 메시지 변환기 사용 상세 설명
//domain
package com.crazy.goods.tools;
/**
* 0755-351512
* @author Administrator
*
*/
public class Phone {
private String qno;
private String number;
public String getQno() {
return qno;
}
public void setQno(String qno) {
this.qno = qno;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
}
//메시지 변환기 추상 적 인 클래스 AbstractHttpMessage Converter 를 실현 하려 면
package com.crazy.goods.tools;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.springframework.http.HttpInputMessage;
import org.springframework.http.HttpOutputMessage;
import org.springframework.http.converter.AbstractHttpMessageConverter;
import org.springframework.http.converter.HttpMessageNotReadableException;
import org.springframework.http.converter.HttpMessageNotWritableException;
public class MyMessageConvertor extends AbstractHttpMessageConverter<Phone> {
/**
* Phone
*/
@Override
protected Phone readInternal(Class<? extends Phone> arg0,
HttpInputMessage msg) throws IOException,
HttpMessageNotReadableException {
// post body
InputStream is=msg.getBody();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String param=br.readLine();
String phone=param.split("=")[1];
Phone phoneObj=new Phone();
phoneObj.setQno(phone.split("-")[0]);
phoneObj.setNumber(phone.split("-")[1]);
return phoneObj;
}
/**
*
*/
@Override
protected boolean supports(Class<?> arg0) {
if(arg0==Phone.class){
return true;
}
return false;
}
/**
*
*/
@Override
protected void writeInternal(Phone phone, HttpOutputMessage arg1)
throws IOException, HttpMessageNotWritableException {
String p=phone.getQno()+"-"+phone.getNumber();
arg1.getBody().write(p.getBytes("UTF-8"));
}
}
//springmvc.xml 에서 bean:메시지 변환 기 를 설정 하려 면 post 제출 방식 만 변환기 에 의 해 차단 되 어야 합 니 다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
">
<!--springmvc -->
<context:component-scan base-package="com.crazy.goods">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Repository"/>
</context:component-scan>
<!-- post -->
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="com.crazy.goods.tools.MyMessageConvertor">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>application/x-www-form-urlencoded</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
</beans>
servlet 테스트
package com.crazy.goods.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.crazy.goods.tools.Phone;
/**
* @author Administrator
* :2017 7 1 3:11:27
*/
@Controller
public class ReservePageServelt {
// /**
// * forward:
// * redirect:
// * @param req
// * @param resp
// * @return
// * @throws ServletException
// * @throws IOException
// */
// @RequestMapping(value="/add",method={RequestMethod.GET})
// public String doGet(HttpServletRequest req, HttpServletResponse resp/*,@PathVariable("testid") String testid*/) throws ServletException, IOException {
// req.getRequestDispatcher("/reversegood.jsp").forward(req, resp);
// return "/reversegood.jsp";
// resp.getWriter().print(testid);
// }
// ,
// action ,
// url , @RequestBody , , springmvcxml , supports
// , , readInternal , , , , writeInternal
@RequestMapping(value="/add")
@ResponseBody
public Phone messageConvertor( @RequestBody Phone phone,HttpServletResponse response) {
System.out.println(phone.getQno()+phone.getNumber());
return phone;
}
}
요약:메시지 변환기 의 원 리 는 요청 체 의 데 이 터 를 형 삼(대상)으로 사용자 정의 한 다음 에 방법의 반환 값 내용 을 응답 헤드 로 바 꾸 는 것 이다.단계:
url 경로 가 접근 되 었 을 때@RequestBody 주 해 를 사용 한 것 을 보 았 습 니 다.이 주해 표 지 는 메시지 변환기 에 의 해 처리 되 려 면 springmvxml 파일 에서 메시지 변환기 에 읽 힌 다음 supports 방법 에 들 어 갑 니 다.
이 클래스 가 지정 한 변환기 지원 여 부 를 판단 하고 지원 하면 readInternal 방법 을 사용 하여 절단 한 다음 에 값 을 대상 에 전달 합 니 다.
처리 가 완료 되면 writeInternal 을 응답 헤드 로 변환 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.