SpringMVC 에서 Controller 류 데이터 응답 방법

이전 블 로 그 는 요청 매개 변 수 를 가 져 왔 습 니 다.요청 매개 변 수 를 가 져 온 후에 매개 변 수 를 가 져 온 다음 에 데이터 응답 을 해 야 합 니 다.그러면 이 블 로 그 는 Controller 류 가 데이터 응답 을 어떻게 하 는 지 알 아 보 겠 습 니 다.
1.방법 반환 값 종류
웹 단계 에서 우 리 는 데이터 응답 을 알 고 있 습 니 다.우 리 는 데이터 응답 을 간단하게 페이지 전환 과 재 작성 데이터 로 나 눌 수 있 습 니 다.
Controller 류 의 업무 반환 값 유형 은 매우 많 지만 결국은 페이지 전환 과 재 작성 데 이 터 를 완성 하 는 데 사 용 됩 니 다.우 리 는 자주 사용 하 는 몇 가지 반환 값 유형 을 알 아 보 자ModelAndView, Model,ModelMap,Map,View, String, void ,@ResponseBody,HttpHeaders2.페이지 이동
SpringMVC 에서 페이지 전환 을 완성 하 는 방법 은 두 가지 가 있 습 니 다.문자열 을 직접 되 돌려 주 고 Model AndView 대상 을 되 돌려 줍 니 다.
2.1 문자열 을 직접 되 돌려 줍 니 다.
문자열 을 직접 되 돌 릴 때 자동 으로 보기 해석 기 를 통 해 물리 보기 주소 로 해 석 됩 니 다.

@RequestMapping("/user")
public class MyController {
   //    :localhost:8080/user/testReturnString
   @RequestMapping("/testReturnString")
   public String testReturnString() {
   System.out.println("MyController   testReturnString         。。。。");
   return "success.jsp";
   }
}
보기 가 user 폴 더 아래 에 있 지 않 을 때 클 라 이언 트 는 404 오 류 를 보고 합 니 다.이 보 기 를 찾 을 수 없 기 때 문 입 니 다.이 방식 은 보기 의 상대 주소 로 MyController 류 에 대한 요청 주소 이기 때문에 절대 주소 로 설정 할 수 있 습 니 다return "\success.jsp";2.2 ModelAndView 대상 되 돌리 기
Model AndView 대상 을 분해 할 수 있 습 니 다.Model 은 모델 이 데 이 터 를 밀봉 하 는 데 사용 되 고 View 는 보 기 를 보 여 주 는 데 사용 합 니 다.모델 앤 드 뷰 대상 의 방법:
在这里插入图片描述
Model AndView 대상 을 사용 하여 페이지 전환 완료:

@RequestMapping("test01")
public ModelAndView test01(){
    //   modelAndView   
    ModelAndView modelAndView =new ModelAndView();
    //      
    modelAndView.setViewName("/user.jsp");
    //      
    modelAndView.addObject("user","zhangsan");
    return  modelAndView;
}
Model AndView 대상 을 수 동 으로 만 들 지 않 고 직접 방법 에 형 삼 을 추가 할 수도 있 습 니 다.이런 방식 의 Model AndView 대상 은 실 삼 을 만 들 수 있 습 니 다.

@RequestMapping("test02")
public ModelAndView test02(ModelAndView modelAndView){
    //      
    modelAndView.setViewName("/user");
    //      
    modelAndView.addObject("user","lisi");
    return  modelAndView;
}
이 두 가지 방식 은 똑 같 습 니 다.모델 앤 드 뷰 대상 의 캐릭터 가 바 뀌 었 을 뿐 입 니 다.이런 두 가지 방식 을 제외 하고 우 리 는ViewModel모델 앤 드 뷰 대상 을 분리 할 수 있 습 니 다.

@RequestMapping("test03")
    public String test03(Model model){
        model.addAttribute("user","wangwu");
        return "user.jsp";
    }

    @RequestMapping("test04")
    public String test04(ModelMap modelMap){
        modelMap.addAttribute("user","zhaoliu");
        return "user.jsp";
    }
2.3 보기 접두사 와 접미사
보 기 를 되 돌 릴 때 보기 이름 외 에 접두사 와 접미사 가 필요 합 니 다.접 두 사 는 보기 가 저장 하 는 경로 이 고 접 두 사 는 보기 형식 입 니 다.SpringMVC 는 내부 자원 보기 해석 기 를 설정 하여 접두사 와 접 두 사 를 추출 하여 SpringMVC 설정 파일 에서 설정 할 수 있 습 니 다.

<!--            -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/"></property>
    <property name="suffix" value=".jsp"></property>
</bean>
Controller 클래스 의 업무 방법 에 서 는 접두사 와 접 두 사 를 생략 할 수 있 습 니 다.SpringMVC 는 되 돌아 오 는 문자열 과 보기 해석 기의 앞 접 두 사 를 연결 한 후 이동 합 니 다.

@RequestMapping("test01")
public ModelAndView test01(){
    //   modelAndView   
    ModelAndView modelAndView =new ModelAndView();
    //      
    modelAndView.setViewName("user");
    //      
    modelAndView.addObject("user","zhangsan");
    return  modelAndView;
}
2.3 리 셋 과 리 트 윗
4.567917.리 트 윗 요청:리 트 윗 요청 은 다른 주소 로 다시 전송 하 는 것 을 말 합 니 다.리 트 윗 과정 에서 같은 요청 을 사용 하고 리 트 윗 의 주소 표시 줄 내용 은 변 하지 않 습 니 다.무게
4.567917 방향:원 요청 주소 에서 새로운 주소 로 다시 찾 는 것 을 말 합 니 다.기 존의 요청 이 효력 을 잃 고 클 라 이언 트 가 본 것 은 새로운 요청 이 돌아 오 는 해당 결 과 를 말 합 니 다SpringMVC 에 서 는 기본적으로 리 트 윗 을 통 해 점프 를 완성 합 니 다.물론 리 셋 방향 으로 설정 할 수 있 습 니 다.

//   user.jsp
@RequestMapping("test05")
public String test05(VO vo){
    return  "forward:user.jsp";
}

//   user.jsp
@RequestMapping("test05")
public String test05(VO vo){
    return  "redirect:user.jsp";
}
메모:방법 이 값 을 되 돌려 주기 전에 forward:또는 redirect:를 추가 하면 SpringMVC 설정 파일 의 사용자 정의 보기 해석 기 가 잘못 되 었 습 니 다.return"forward:/main"은 맵 이름 이 main 인 contrller 로 전송 되 는 것 을 표시 하고 return"forward:/main.jsp"는 main.jsp 페이지 로 전송 되 는 것 을 표시 합 니 다.
방법 상@RequestMapping 만 있 을 때 방법 반환 값 이 무엇이든 뛰 어야 합 니 다.
3.리 턴 데이터
데 이 터 를 다시 쓰 는 방법 도 두 가지 가 있 습 니 다.문자열 과 대상 을 직접 되 돌려 주거 나 집합 합 니 다.
3.1 직접 문자열 되 돌리 기
웹 기반 단계 에서 클 라 이언 트 가 서버 에 접근 합 니 다.응답 체 로 문자열 을 직접 되 돌려 쓰 려 면 response.getWriter().print("hello World")만 사용 하면 됩 니 다.따라서 저 희 는 SpringMVC 프레임 워 크 를 통 해 주 입 된 response 대상 입 니 다.이 때 는 보기 전환 이 필요 하지 않 습 니 다.업무 방법 반환 값 은 void 입 니 다.

@RequestMapping("test05")
public void test05(HttpServletResponse response) throws IOException {
     response.getWriter().println("zhangsan");
}
이러한 방식 을 제외 하고@ResponseBody주 해 를 통 해 SpringMVC 프레임 워 크 를 알 립 니 다.방법 으로 돌아 오 는 문자열 은 점프 가 아니 라 http 응답 체 에서 직접 돌아 갑 니 다.

@RequestMapping("test06")
@ResponseBody //   SpringMVC          ,        
public String test06() throws IOException {
    return "lisi";
}
실제 개발 에 서 는"lisi"라 는 형식의 문자열 을 직접 되 돌려 주지 않 습 니 다.일반적으로 json 형식 과 같은 일정한 형식의 문자열 을 되 돌려 줍 니 다.json 형식의 문자열 을 되 돌려 줄 때,우 리 는 Jackson 의 jar 패 키 지 를 추가 해서 xml 파일 에 추가 해 야 합 니 다.

<!--json    jackson-->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.11.1</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.11.1</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.11.1</version>
</dependency>

@RequestMapping("test07")
@ResponseBody //   SpringMVC          ,        
public String test07() throws IOException {
    User user = new User();
    user.setAge(18);
    user.setUsername("zhangsan");
    ObjectMapper objectMapper = new ObjectMapper();
    String json = objectMapper.writeValueAsString(user);
    return  json;
}
3.2 복귀 대상 또는 집합
SpringMVC 를 통 해 대상 이나 집합 에 대해 json 문자열 의 변환 과 재 작성 을 도 와 줍 니 다.프로세서 어댑터 에 메시지 변환 파 라 메 터 를 설정 하고 jackson 을 사용 하여 대상 이나 집합 변환 을 지정 하기 때문에 spring-mvc.xml 에서 다음 과 같은 설정 을 해 야 합 니 다.

   <!--          -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                </bean>
            </list>
        </property>
    </bean>
메시지 변환 기 를 설정 한 후에 우 리 는 업무 방법 에서 수 동 으로 전환 할 필요 가 없습니다.

@RequestMapping("test08")
@ResponseBody //   SpringMVC          ,        
public User test08() throws IOException {
    User user = new User();
    user.setAge(18);
    user.setUsername("zhangsan");
    return  user;
}
상기 방법 에서 우 리 는 프로세서 맵 기 를 설정 하여 json 형식의 문자열 변환 을 완 성 했 습 니 다.그러나 이러한 설정 방식 은 비교적 번 거 롭 고 설정 코드 가 비교적 많 기 때문에 우 리 는 화면 음악 c 의 주해 구동 을 사용 하여 상기 설정 을 대체 할 수 있 습 니 다.을 사용 하여 RequestMappingHandlerMapping(처리 맵)과 RequestMappingHandlerAdapter(처리 어댑터)를 자동 으로 불 러 옵 니 다.Spring-xml 설정 파일 에서을 사용 하여 주해 프로세서 와 어댑터 의 설정 을 대체 할 수 있 습 니 다.

<!--mvc     -->
<mvc:annotation-driven/>
여기 서 SpringMVC 의 데이터 응답 에 관 한 글 은 여기까지 소개 되 었 습 니 다.더 많은 SpringMVC 데이터 응답 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기