상세 컨텐츠

본문 제목

스프링(Spring)에서 Ajax 요청 / 응답

Programing/Spring

by HoZang 2019. 1. 7. 16:14

본문

스프링(Spring)에서 Ajax 요청 / 응답

1. java 객체의 json 변환을 위한 의존 라이브러리 추가

1-1

<dependency>
    <groupid>org.codehaus.jackson</groupid>
    <artifactid>jackson-mapper-asl</artifactid>
    <version>1.9.13</version>
</dependency> 

1-2

<dependency>
     <groupid>com.fasterxml.jackson.core</groupid>
     <artifactid>jackson-core</artifactid>
     <version>2.8.8</version>
</dependency>
<dependency>
     <groupid>com.fasterxml.jackson.core</groupid>
     <artifactid>jackson-annotations</artifactid>
     <version>2.8.8</version>
</dependency>         
<dependency>
     <groupid>com.fasterxml.jackson.core</groupid>
     <artifactid>jackson-databind</artifactid>
     <version>2.8.8</version>
</dependency>


2. viewresolver 설정

2-1. dispatcher-servlet.xml에서 설정할 경우

<bean id="beanNameResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver" p:order="0">
    <bean id="jsonView" class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
        <property name="contentType" value="application/json;charset=UTF-8"></property>
    </bean>
</bean>

2-2. java 파일 @Configure, @Bean 설정

@Configuration
public class DispatcherServlet {

    @Bean
    public BeanNameViewResolver beanNameResolver() {
        BeanNameViewResolver resolver = new BeanNameViewResolver();
        resolver.setOrder(0);
        return resolver;
    }
	
    @Bean
    public MappingJackson2JsonView jsonView() {
        MappingJackson2JsonView jsonView = new MappingJackson2JsonView();
        jsonView.setContentType("application/json;charset=UTF-8");
        return jsonView;
    }
}


3. controller

@RequestMapping(value = "/delete.do", method = RequestMethod.POST)
public ModelAndView delete(HttpServletRequest request) {
    ModelAndView mav = new ModelAndView();
    mav.setViewName("jsonView");
    dto.put("id", "test");
    dto.put("name", "테스터");
    return mav;
}


4. 결과 페이지

{id:'test',name:'테스터'}


p.s. ajax 요청/응답 페이지 설정관련 글들을 검색해보면 spring 4버전 이상에서 jsckson-databind 라이브러리를 추가한 후 controller의 ajax요청이 처리되는 메서드에 @ResponseBody 어노테이션 처리를하면 viewresolver나 mvc messageconverter 설정 없이 바로 처리된다는 글들이 많은데 내가 작업하는 프로젝트에서는 No converter found for return value of type: ... ... 이란 오류와 함께 정상 처리가 안됨.

이 오류 메세지로 구글 검색을하면 jsckson-databind 라이브러리를 추가하라는 글들만 있어서... 해결이 안됨



도움이 되셨다면 공감이나 좋아요 부탁드립니다~♡

광고를 클릭해주시면 더욱 감사하구요~♡v♡/

혹시 더 궁금하신 점이나 부족한 부분, 잘못된 내용이 있다면 댓글 부탁드립니다~~

관련글 더보기

댓글 영역

페이징