Spring MVC 데이터 바 인 딩 개술 및 원리 상세 설명

데이터 바 인 딩 개요
프로그램 을 실행 할 때 Spring MVC 는 클 라 이언 트 요청 매개 변수 에 따라 요청 메시지 의 정 보 를 일정한 방식 으로 컨트롤 러 클래스 의 방법 매개 변수 에 변환 하고 연결 합 니 다.
요청 메시지 데 이 터 를 배경 방법 파라미터 와 연결 하 는 과정 은 Spring MVC 의 데이터 바 인 딩 입 니 다.
데이터 바 인 딩 과정 에서 Spring MVC 프레임 워 크 는 데이터 바 인 딩 구성 요소(DataBinder)를 통 해 요청 한 매개 변수 문자열 의 내용 을 유형 변환 한 다음 에 변 환 된 값 을 컨트롤 러 클래스 의 방법 에 부 여 됩 니 다.그러면 배경 방법 은 클 라 이언 트 가 요청 한 매개 변 수 를 정확하게 바 인 딩 하고 가 져 올 수 있 습 니 다.구체 적 인 정보 처리 과정의 절 차 는 다음 과 같다.
(1)Spring MVC 는 ServletRequest 대상 을 DataBinder 에 전달한다.
(2)처리 방법의 입 참 대상 을 DataBinder 에 전달한다.
(3)DataBinder 는 ConversionService 구성 요 소 를 호출 하여 데이터 형식 변환,데이터 포맷 등 작업 을 하고 ServletRequest 대상 의 메 시 지 를 매개 변수 대상 에 채 웁 니 다.
(4)Validator 구성 요 소 를 호출 하여 메시지 데 이 터 를 요청 한 매개 변수 대상 에 대해 데이터 합 법성 검 사 를 실시 합 니 다.
(5)검사 가 완료 되면 데이터 바 인 딩 결과 BindingResult 대상 이 생 성 되 며,Spring MVC 는 BindingResult 대상 의 내용 을 처리 방법의 해당 매개 변수 에 부여 합 니 다.
클 라 이언 트 요청 매개 변수 유형 과 개수 에 따라 Spring Mvc 의 데이터 바 인 딩 은 주로 간단 한 데이터 바 인 딩 과 복잡 한 데이터 바 인 딩 으로 나 뉜 다.
1.단순 데이터 바 인 딩
바 인 딩 기본 데이터 형식
UserController.java:

package com.ssm.controller;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class UserController {
	@RequestMapping(value="/selectUser")
	public String selectUser(HttpServletRequest request) {
		String id=request.getParameter("id");
		System.out.println("id="+id);
		return "success";
	}
}
주해 방식 을 사용 하여 컨트롤 러 클래스 를 정의 하고 방법의 접근 경 로 를 정의 합 니 다.방법 매개 변수 에 HttpServletRequest 형식 을 사용 하고 이 대상 의 getParameter()방법 으로 지정 한 매개 변 수 를 가 져 왔 습 니 다.결 과 를 쉽게 보기 위해 가 져 온 인 자 를 출력 하고 마지막 으로'success'라 는 보 기 를 되 돌려 줍 니 다.Spring MVC 는 보기 해상도 기 를 통 해'WEB-INF/jsp'경로 에서'success.jsp'파일 을 찾 습 니 다.
바 인 딩 단순 데이터 형식
간단 한 데이터 형식의 바 인 딩 은 int,String,Double 등 자바 의 몇 가지 기본 데이터 형식의 바 인 딩 을 말 합 니 다.
@RequestMapping(value="/selectUser")
public String selectUser(Integer id) {
System.out.println("id="+id);
return "success";
}
이 방법 은 기본 데이터 형식 사례 의 selectUser()방법 에 비해 HttpServletrEquest 매개 변수 형식 만 Integer 형식 으로 대체 합 니 다.
@RequestParam 주 해 는 요청 한 매개 변 수 를 정의 하 는 데 사 용 됩 니 다.사용 할 때 4 개의 속성 을 지정 할 수 있 습 니 다.표 12.1 참조.

귀속 POJO 종류
간단 한 데이터 형식 바 인 딩 을 사용 할 때 구체 적 인 수요 에 따라 방법 중의 인삼 형식 과 개 수 를 쉽게 정의 할 수 있 습 니 다.그러나 실제 응용 에서 클 라 이언 트 요청 은 여러 가지 유형의 매개 변수 데 이 터 를 전달 할 수 있 습 니 다.간단 한 데이터 형식 으로 묶 으 려 면 여러 가지 유형의 인 자 를 수 동 으로 작성 해 야 합 니 다.이런 조작 은 분명히 비교적 번거롭다.이때 POJO 형식 으로 데이터 바 인 딩 을 할 수 있 습 니 다.
POJO 형식의 데이터 바 인 딩 은 모든 관련 요청 파 라 메 터 를 하나의 POJO 에 밀봉 한 다음 에 방법 에서 이 POJO 를 직접 형태 인삼 으로 사용 하여 데이터 바 인 딩 을 완성 하 는 것 입 니 다.

@RequestMapping("/toRegister")
	public String toRegister() {
		return "register";
	}
	@RequestMapping("/registerUser")
	public String registerUser(User user) {
		String username=user.getUserName();
		String password=user.getPassword();
		System.out.println("username="+username);
		System.out.println("password="+password);		
		return "success";
	}
귀속 포장 POJO
간단 한 POJO 형식 을 사용 하면 대부분의 데이터 바 인 딩 을 완성 할 수 있 지만 클 라 이언 트 요청 에서 전달 하 는 매개 변 수 는 복잡 할 때 가 있 습 니 다.예 를 들 어 선생님 이 학생 을 조회 할 때 페이지 에서 전달 하 는 매개 변 수 는 학급 이름과 학생 번호 등 정 보 를 포함 할 수 있 는데 이것 은 학급 과 학생 두 대상 의 정 보 를 포함한다.학급 과 학생 의 모든 조회 조건 을 간단 한 POJO 에 밀봉 하면 혼 란 스 러 울 것 이 분명 하 다.이 럴 때 포장 POJO 유형의 데이터 로 연결 하 는 것 을 고려 할 수 있다.
포장 POJO 란 하나의 POJO 에 또 다른 간단 한 POJO 를 포함 하 는 것 이다.예 를 들 어 학생 대상 에 학급 대상 을 포함한다.이렇게 사용 할 때 학생 들 을 통 해 학급 정 보 를 조회 할 수 있다.
StudentController. java:

package com.ssm.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.ssm.po.Banji;
import com.ssm.po.Student;
@Controller
public class StudentController {
	//         
	@RequestMapping("/tofindStudentWithBanji")
	public String tofindStudentWithBanji(){
		return "student";
	}
	//         
	@RequestMapping("/findStudentWithBanji")
public String findStudentWithBanji(Student student){
		Integer stu_id=student.getStu_id();		
		Banji banji=student.getBanji();
		String banji_name=banji.getBanji_name();
		System.out.println("stu_id="+stu_id);
		System.out.println("banji_name="+banji_name);
		return "success";
	}
}
복잡 한 데이터 바 인 딩
복잡 한 데이터 바 인 딩 문제,예 를 들 어 배열 의 바 인 딩,집합 의 바 인 딩 등 이다.
바 인 딩 배열
CourseController.java:

package com.ssm.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class CourseController {
		@RequestMapping("/toCourse")
		public String toCourse(){
			return "course";
		}
		@RequestMapping("/deleteCourse")
		public String deleteCourse(Integer[] ids){
			if(ids!=null){
				//               
				for(Integer id:ids){
					System.out.println("   id "+id+"   ");
				}
			}else{
				System.out.println("ids=null");
			}
			return "success";
		}
}
귀속 집합
프로젝트 에서 전단 에서 요청 한 데 이 터 는 Integer,String 등 다양한 유형의 데 이 터 를 대량으로 포함 할 수 있 습 니 다.이 경우 배열 바 인 딩 을 사용 하 는 것 은 불가능 합 니 다.이러한 상황 에 대해 집합 데이터 바 인 딩 을 사용 할 수 있다.즉,포장 류 에서 대상 류 를 포함 하 는 집합 을 정의 한 다음 에 수신 방법 에서 매개 변수 유형 을 이 포장 류 의 집합 으로 정의 할 수 있다.
UserController.java:

//           
	@RequestMapping("/toUserEdit")
	public String toUserEdit() {
		return "user_edit";
	}
	//           
	@RequestMapping("/editUsers")
	public String editUsers(UserVo userList){
		//             
		List<User> users=userList.getUsers();
		for(User user:users){
			if(user.getId()!=null){
				System.out.println("   id "+user.getId()+"     "+
user.getUsername());
			}
		}
		return "success";
	}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기