RequestBody приложения REST

Я немного новичок в концепции SpringMVC REST. Нужна помощь экспертов, чтобы понять / решить следующую проблему, Я разработал приложение SpringMVC, следующее является частью кода класса контроллера, и оно отлично работает в том виде, в каком оно есть, то есть нормально работает с объектом типа JSON

@RequestMapping(method = RequestMethod.POST, value = "/user/register")
public ModelAndView addUser( @RequestBody String payload) {

    try{

        ObjectMapper mapper = new ObjectMapper();
        CreateNewUserRequest request = mapper.readValue(payload, CreateNewUserRequest.class);

        UserBusiness userBusiness = UserBusinessImpl.getInstance();
        CreateNewUserResponse response = userBusiness.createNewUser(request);


        return new ModelAndView(ControllerConstant.JASON_VIEW_RESOLVER, "RESPONSE", response);

, и это мой rest-servlet.xml выглядит как

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />

<bean id="jsonViewResolver" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
<bean id="viewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver" />


<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <list>
            <ref bean="jsonConverter" />
        </list>
    </property>
</bean>

<bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
        <property name="supportedMediaTypes" value="application/json" />
</bean> 

<bean name="UserController" class="com.tap.mvp.controller.UserController"/>

Моя проблема в том, как заставить его работать для обычного запроса POST. Мой контроллер не должен принимать объект типа JSON, вместо этого он должен работать с обычными переменными HTTP POST. Как мне получить значения из запроса? Какие изменения мне нужно для этого сделать. Мне нужно избавиться от

ObjectMapper mapper = new ObjectMapper();
        CreateNewUserRequest request = mapper.readValue(payload, CreateNewUserRequest.class);

и вместо этого добавить способ создания экземпляра класса

CreateNewUserRequest

, вызвав его конструктор. Для этого мне нужно получить значения из запроса. Как я могу это сделать? Могу ли я рассматривать полезные данные @RequestBody String как карту и получать значения? или есть конкретный способ получить значения из запроса метода HTTP POST? следующие значения будут в запросе,

firstName, lastName, email, password

7
задан bluelabel 10 January 2012 в 18:07
поделиться