Spring Framework과정 Day2 - HiroSung/Study GitHub Wiki

Day2

Ch02. 컨트롤러와 요청매핑

컨트롤러와 요청 매핑

  • @Controller과 @RequestMapping을 Annotation 적용
  • 에 의해 자동으로 컨트롤 빈으로 관리됨 (/WEB-INF/spring/appServlet/servlet-context.xml 정의)

HTTP 전송 방식별 요청 매핑

  • @RequestMapping의 method속성으로 GET 또는 POST지정
    • @RequestMapping(value="/getMethod", method=RequestMethod.GET)
    • @RequestMapping(value="/postMethod", method=RequestMethod.POST)

Ch03. 요청 파라미터

  • 요청 파라미터값 얻기

    • 요청 파라미터와 요청 매핑 매소드의 매개변수 명이 동일함이 원칙 public String method1( String param1, int param2, double param3, boolean param4, @DateTimeFormat(pattern="yyyy-MM-dd") Date param5) {
    • 요청 파라미터와 매개변수가 다를 경우 : @RequestParam("파라미터명") String 변수명 { ... } public String method2(@RequestParam("param1") String arg1, @RequestParam("param2") String arg2, @RequestParam("param3") String arg3, @RequestParam("param4") String arg4) {
  • 필수 요청 파라미터

    • public String method3(@RequestParam(required=true) String 변수명) { ... }
  • 디폴트 값

    • null인 경우는 변환시 오류가 발생하므로 초기값 설정을 두어서 처리 하도록 함
  • 객체(Command Object)로 받기

    • 데이터를 하나의 객체로 정의하여 받음
    • DTO 파일에 get / set 를 정의해야 함.

Ch04. 헤더/쿠키

  • HTTP 요청 구조
    • 크롬 > 마우스오른쪽 - 검사 > Network Header 부분에 General : 시작형 / Request Headers : 요청 헤더형으로 헤더명:헤더값을 볼 수 있음 / Form Data 본문내용

@- 요청 HTTP 헤더값 얻기 (다시 실습!) @- 쿠키 얻기

  • 쿠키값은 = 기준으로 쿠키이름=쿠키값 이 설정됨

Ch05. 뷰로 데이터 전달

  • 설명
    • Dispatcherservletdl 이 controller가 받아서 처리하고 DB의 값을 받아서 View의 이름을 Dispatcher에 전달하고, Dispatcher는 JSP에게 전달하여 View를 만듬.
    • Controller RequestScope에 저장함 (키:값 . request.setAttribute("키", 객체)
    • JSP에서는 RequestScope의 내용을 가져와서 값을 사용함. (request.getAttribute("키") , ${키})
  • 뷰로 데이터 전달방법
    • 모델 매개변수 이용하여 전달하는 것을 가장 많이 사용함.
  • 커맨드 객체는 요청파라미터를 저장하게 됨.
  • 공통데이터 부분 활용. 정의하고 , 컨트롤러에 요청이 들어올때 마다 수행됨. @ModelAttribute("키") public Ch05Board 값() { }

Ch06. 매개변수/리턴 타입

  • public [요청매핑 리턴타입] 메소드명(파라미터타임) { ... }

  • 파라미터 타입으로 올 수 있는 것들은 정해져 있음.

    • HttpServletRequest : 파일을 다운로드 할때
    • HttpServletResponse : 쿠키값 등
    • HttpSession
    • @RequestParam : 요청파라미터이름과 변수가 다르게 정의하고자 할때
    • @RequestHeader
    • Errors, BindingResult : 유효성검사
  • 요청 매핑 리턴타임

    • void : JSP로 전달할 것이 없는 경우 주로 사용. Controller가 바로 Return할때. (예: 파일다운로드, JSON 처리 등)
  • HttpSession 매개변수

    • 세션 저장범위를 이용하고자 할 경우

Ch07. 폼관련 커스텀 태그

  • Sec01. form:form : Spring form 태그 라이브러리
    • 태그 라이브러리 추가
    • HTML의 Form과 유사. Method는 POST가 기본임(html은 GET), Action을 지정하지 않음. 요청하는 방식만 바꾸어서 다시 해당 페이지를 요청함 그래서 Action이 필요없음.
  • Sec03. form:select form:options
    • <form:select path="mtype" items="${typeList}" style="width:100%"/> : value와 label이 동일함
    • <form:select path="mjob" style="width:100%"> ---선택하세요--- <form:options items="${jobList}"/> </form:select> : '선택하세요' 라는 옵션값을 추가할때 사용
    • <form:select path="mcity" items="${cityList}" itemLabel="label" itemValue="value" style="width:100%"/> : value와 label 이 상이할때 사용. label/value는 City라는 커맨드 객체의 속성값임

Ch08. 값 검증/에러 메시지

  • Controller에서 주로 처리함.
  • 유효성 검사 객체
  • <xmp>$.ajax({url:"join",method:"POST",data:$("#ch08Member").serialize(),success:function(data) {...});</xmp>
    • serialize() : 태그의 모든 정보를 TEXT형태로 일렬로 만들어 줌.
    • public boolean supports()
    • public void validate(커맨드객체, Err를 저장할 컨테이너객체) { ValidationUtils.rejectIfEmptyOrWhitespace( Err객체, 커맨드객체.필드이름, 꼭필요, 에러메시지(사용자에게노출메시지)) // 값이 비었거나 없다면 reject해라. 값이 있을 경우. 커맨드객체를 멤버타입으로 맞춤.
      • 이메일 형식 또는 유효한 메일인지 여부 errors.rjectValue(커맨드객체.필드이름, "오류코드", 노출메시지) }
  • 에러 코드는 국제화를 위해서 설정함.
    • ValidationUtils.rejectIfEmptyOrWhitespace(errors, "memail", "required", "필수");
    • 메시지.properties에 코드로 정의되면, 뒤에오는 메시지는 제외됨.
    • servlet-context.xml 파일에 properties 설정함.

Ch09. 파일 업로드/다운로드

  • multipart/form-data 구조
    • 요청 header 에 content-type : [구분자의 정보]
    • 구분자가 본문에 들어가서 구분자가 하나의 파트가 됨.
    • 문자파트, 바이너리파트, 문자파트 .. 그래서, multi-part임.
    • ...
  • 예제는 ajax로 문자파트와 바이너리파트를 보내는 것임.
  • file upload 사용 하려면
    • pom.xml 에 commons-fileupload 설정이 필요함.
    • servlet-context.xml 파일에 bean 추가
⚠️ **GitHub.com Fallback** ⚠️