스프링1

오가람·2023년 4월 21일

web.xml (배포 서술자)

	* WAS(Web Application Server) : 동적 웹(요청에 따라 응답페이지 생성)에서 사용하는 서버
	
	- WAS가 실행(배포 시작)될 때 가장 처음으로 읽어들이는 문서
	- 서버 실행 시 초기 설정 내용 또는 설정 내용이 작성된 파일을 읽고 수행하도록 함.
   
   

DispatcherServlet : 요청/응답을 나눠주는 서블릿

	[Front Controller]
	모든 요청을 앞에서 받아들여 알맞은 Controller로 연결을 해주고
	Controller의 반환 결과에 따라서 알맞은 View를 선택해 클라이언트에게 응답하는 역할
    
    

// POJO 기반 프레임워크 : 외부 라이브러리 상속 X

// class : 객체를 만들기위한 설계도
// -> 객체로 생성 되어야지 기능 수행 가능하다.
// --> IOC(제어의 역전, 객체 생명주기를 스프링이 관리)를 이용하여 객체 생성
// 이 때, 스프링이 생성한 객체를 bean 이라고 한다.

// bean 등록 == 스프링이 객체로 만들어서 가지고 있어라

//@Component // 해당 클래스를 bean으로 등록하라고 프로그램에게 알려주는 주석 (Annotation)

@Controller // 생성된 bean이 Controller임을 명시 + bean 등록

@RequestMapping("/member") // localhost:8080/comm/member 이하의 요청을 처리하는 컨트롤러

  • localhost:8080/comm/member
  • localhost:8080/comm/member/login
  • localhost:8080/comm/member/signUp

public class MemberController {

	private Logger logger = LoggerFactory.getLogger(MemberController.class);

	// Controller : 요청/응답을 제어하는 역할을 하는 클래스
	
	/* @RequestMapping : 클라이언트 요청(url)에 맞는 클래스 or 메서드를 연결 시켜주는 어노테이션
	 * 
	 * [ 위치에 따른 해석 ]
	 * - 클래스 레벨 : 공통 주소
	 * - 메서드 레벨 : 공통 주소 외 나머지 주소
	 * 
	 * 단, 클래스 레벨에 @RequestMapping이 존재하지 않는다면
	 * - 메서드 레벨 : 단독 요청 처리 주소
	 * 
	 * [ 작성법에 따른 해석 ]
	 * 
	 * 1) @RequestMapping("url")
	 * --> 요청 방식(GET/POST) 관계 없이 url이 일치하는 요청 처리
	 * 
	 * 2) @RequestMapping(value = "url", method = RequestMethod.GET | POST)
	 * --> 요청 방식에 따라 요청 처리함
	 * 
	 * ** 메서드 레벨에서 GET/POST 방식을 구분하여 매핑할 경우 **
	 * @GetMapping("url")  /  @PostMapping("url") 사용하는 것이 일반적
	 * (메서드 레벨에서만 작성 가능!)
	 * 
	 * 
	 * */
     
     // 로그인
	// 요청 시 파라미터를 얻어오는 방법 1
	// -> HttpServletRequest 이용
	
	
	@RequestMapping("/login")
	public String login() {
    	logger.info("로그인 요청됨");
		
		String inputEmail = req.getParameter("inputEmail");
		String inputPw = req.getParameter("inputPw");
		
		return "redirect:/"; // sendRedirect 안써도 된다. 이게 리다이렉트 구문임.
	}
    
    // 요청 시 파라미터를 얻어오는 방법 2
	// -> @RequestParam 어노테이션 사용
	
	// @RequestParam("name속성값") 자료형 변수명
	// - 클라이언트 요청 시 같이 전달된 파라미터를 변수에 저장
	// --> 어떤 파라미터를 변수에 저장할지는 "name속성값"을 이용해 지정
	
	// 매개변수 지정 시 데이터 타입 파싱을 자유롭게 진행할 수 있음 ex) String -> int 로 변환
	
	// [속성]
    // value : input 태그의 name 속성값
	
	// required : 입력된 name 속성값이 필수적으로 파라미터에 포함되어야 하는지 지정
	//			required=true / false (기본값 true)
	
	// defaultValue : required 가 false인 상태에서 파라미터가 존재하지 않을 경우의 값을 지정
	
	
	@RequestMapping("/login")
	public String login( @RequestParam("inputEmail") String inputEmail,
						 @RequestParam("inputPw") String inputPw) {
		
		logger.debug("email: " + inputEmail);
		logger.debug("pw: " + inputPw);
		
		
		// email 숫자만 입력받는다고 가정
//		logger.debug(inputEmail + 100);
		return "redirect:/";
	}
	
    // 요청 시 파라미터를 얻어오는 방법 3
	// -> @ModelAttribute 어노테이션 사용
	
	// @ModelAttribute VO타입 변수명
// -> 파라미터 중 name 속성값이 VO의 필드와 일치하면
	// 해당 VO 객체의 필드에 값을 세팅
	
	// *** @ModelAttribute를 이용해서 객체에 값을 직접 담는 경우에 대한 주의 사항 ***
	// -- 반드시 필요한 내용
	// - VO 기본 생성자
	// - VO 필드에 대한 Setter
	
	@PostMapping("/login")
	public String login( @ModelAttribute Member memberEmail ) {

		logger.info("로그인 기능 수행됨");
		
		return "redirect:/";
	}
    
    // 회원 가입 화면 전환
	@GetMapping("/signUp") // Get 방식 : /comm/member/signUp 요청
	public String signUp() {
		
		return "member/signUp";
	}
	
    
}

servlert-context.xml

<!-- 컨트롤러에서 jsp로 렌더링하는 것을 처리하는 부분이다. 
		== 컨트롤러의 응답을 jsp로 보낼 때 어떻게 처리할것인가? 를 작성하는 부분
		==> View Resolver : Controller에서 반환된 문자열 앞/뒤에 
		접두사(prefix), 접미사(suffix)를 추가하여 만들어진 경로의 jsp로 요청을 위임(forward)
		
		/WEB-INF/views/member/signUp.jsp
		forward !
		
		단, 반환된 문자열의 시작이 redirect: 구문이면 재요청(redirect) 진행
		redirect:/    최상위로 재요청. 
	-->
profile
개발자준비생

0개의 댓글