SpringMVC 데이터 출력 을 처리 하 는 인 스 턴 스 코드

1.Model AndrVIEw 처리 모델 데이터 사용
컨트롤 러 처리 방법의 반환 값 이 Model AndView 라면 보기 정보 도 포함 하고 모델 데이터 정보 도 포함 합 니 다.데 이 터 는 요청 영역 에 놓 여 있 습 니 다.

    //  ModelAndView
    @RequestMapping("/output3")
    public ModelAndView output3(){
        ModelAndView modelAndView = new ModelAndView("success");    //viewName      
        modelAndView.addObject("msg","ModelAndView    ");
        return modelAndView;
    }
2.맵 처리 모델 데이터 사용
방법의 매개 변수 목록 에 Map 이나 Model 또는 Model Map 을 전송 할 수 있 습 니 다.이 매개 변수 에 저 장 된 모든 데 이 터 는 request 요청 도 메 인 에 놓 여 있 으 며 페이지 에서 이 데 이 터 를 얻 을 수 있 습 니 다.

@Controller
public class OutputController {

    //  Map
    @RequestMapping("/output")
    public String output(Map<String, Object> map){
        map.put("msg","      ");

        return "success";
    }

    //  Model,    
    @RequestMapping("/output1")
    public String output1(Model model){
        model.addAttribute("msg","model    ");

        return "success";
    }

    //  ModelMap
    @RequestMapping("/output2")
    public String output2(ModelMap modelMap){
        modelMap.addAttribute("msg","modelMap    ");

        return "success";
    }
}

실제로 맵,모델,모델 맵 이 최종 적 으로 실 현 된 것 은 모두 BindingAware 모델 맵 으로 BindingAware 모델 맵 에 저 장 된 데 이 터 는 모두 요청 영역 에 놓 인 셈 이다.

Map 은 JDK 의 interface 이 고 Model 은 Spring 의 interface 이 며 ModelMap 은 Spring 의 Class 입 니 다.
ModelMap 소스 코드 는 실제 적 으로 LinkedHashMap 류 를 계승 하기 때문에 본질 적 으로 Map 인터페이스의 실현 류 에 속한다.

public class ModelMap extends LinkedHashMap<String, Object>
BindingAware ModelMap 소스 코드 에서 Extended ModelMap 류 를 계승 하고 Extended ModelMap 류 는 ModelMap 류 에 계승 하 며 Model 인 터 페 이 스 를 실현 합 니 다.

public class BindingAwareModelMap extends ExtendedModelMap
public class ExtendedModelMap extends ModelMap implements Model 
그래서 Map,Model,ModelMap 세 가지 관 계 는 다음 과 같다.

3.@SessionAttributes 주석 처리 모델 데이터 사용
SpringMVC 는 세 션 필드 에 데 이 터 를 임시로 저장 할 수 있 는 방식 을 제공 합 니 다.즉,@Session Attributes 주 해 를 사용 합 니 다.이 주 해 는 클래스 에 만 작용 할 수 있 습 니 다.

// BindingAwareModelMap      ,   session      ,value         session      key
//type           ,session    
@SessionAttributes(value = "msg",types = {String.class}) 
@Controller
public class OutputController
4.@ModelAttribute 주석 처리 모델 데이터 사용
일부 업무 장면 은 전체 필드 업데이트 가 필요 하지 않 습 니 다.예 를 들 어 book 대상 정 보 를 수정 할 필요 가 없습니다.bookName 은 읽 기만 하고 수정 할 수 없 으 며 그 중 한 쓰기 필드 의 값 만 수정 할 수 있 습 니 다.SpringMVC 를 new 대상 으로 보 내 면 일부 필드 에 기본 값 이 있 습 니 다.new 에서 나 온 대상 을 데이터베이스 값 으로 업데이트 합 니 다.수정 할 수 없 는 필드 의 값 을 null 값 으로 덮어 쓸 수 있 습 니 다.
따라서 SpringMVC 가 요청 파 라 메 터 를 봉인 하려 는 Book 대상 은 자신 이 new 로 나 온 것 이 아니 라 데이터베이스 에서 꺼 낸 대상 이 어야 합 니 다.이 대상 을 사용 하여 요청 파 라 메 터 를 밀봉 합 니 다.이렇게 하면 지정 한 필드 값 만 수정 하고 수정 되 지 않 은 필드 값 은 원래 의 값 을 유지 합 니 다.
@ModelAttribute 주 해 는 매개 변 수 를 불 러 올 수도 있 고 방법 에 추가 할 수도 있 습 니 다.방법 에 추가 하면 이 방법 은 목표 방법 보다 앞 당 겨 실 행 됩 니 다.데이터베이스 에서 미리 정 보 를 조회 하고 저장 할 수 있다.매개 변수 에 주 해 를 더 하면 데이터베이스 에서 꺼 낸 대상 을 얻 을 수 있 습 니 다.new 대상 으로 가 는 것 이 아 닙 니 다.

@Controller
public class ModelAttributeTestController {

    private Object o1;
    private Object o2;

    @RequestMapping("/updateBook")
    public String updateBook(@ModelAttribute Book book, ModelMap modelMap){
        o2 = modelMap;
        System.out.println(o1 == o2);   //true
        
        //      ,   new    ,              
        return "success";
    }


    @ModelAttribute
    public void modelAttr(Map<String, Object> map){
        o1 = map;
        //            ,          
    }
}

두 가지 방법 중의 맵 과 북 대상 은 실제 적 으로 같은 BindingAware 모델 맵 으로 이 루어 진 데이터 의 상호 연결 이다.

총결산
여기 서 SpringMVC 처리 데이터 출력 에 관 한 글 은 여기까지 소개 되 었 습 니 다.더 많은 SpringMVC 처리 데이터 출력 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기