SpringMVC 데이터 출력 을 처리 하 는 인 스 턴 스 코드
컨트롤 러 처리 방법의 반환 값 이 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 처리 데이터 출력 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
springmvc application/octet-stream problemmistake: Source code: Solution: Summarize: application/octet-stream is the original binary stream method. If the convers...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.