3. Back-end/3-2. Spring MVC - 남궁성
Spring MVC - [@GetMapping, @PostMapping]
@GetMapping, @PostMapping 원래는 @RequestMapping(value="주소", method=RequestMethod.POST) 와 같이 맵핑시켰지만, 스프링 4.3부터는 @PostMapping("주소") 와 같이 간단하게 POST방식 맵핑이 가능하다. //@RequestMapping(value="/register/save", method=RequestMethod.POST) @PostMapping("/register/save") // 스프링 4.3부터 가능 public String save() { } //@RequestMapping("/register/add", method=RequestMethod.GET) @GetMapping("/register/add") public Strin..
Spring MVC - [ @RequestParam / @ModelAttribute ]
1. @RequestParam @RequestParam은 요청 파라미터를 연결할 매개변수에 붙이는 애너테이션으로 아래와 같이 생략 가능하다. 만약 주소 요청에 파라미터 이름이 없으면 null로 값을 받고, 파라미터 이름만 있고 값이 없으면 빈 문자열("")로 받아온다. 아래와 같이 메서드 매개변수 앞에 애너테이션을 붙이면 required=true, 즉 필수로 받아와야하는 값이 된다. 이 경우 주소 요청에 해당하는 파라미터 이름이 없으면 400에러 Bad Request가 뜨고, 파라미터 이름만 있고 값이 없으면 마찬가지로 빈 문자열("")로 받아온다. 아래 코드를 보면 required=false, 즉 필수 입력이 아니다. 따라서 주소 요청에 year값을 필수로 붙여 줄 필요가 없고, 이렇게 주소를 호출할 ..
Spring MVC - [ JSTL / Filter ]
1. JSTL (JSP Standard Tag Library) jsp 에서 if문 등을 쓰려면 아래 사진과 같이 코드가 복잡해진다. 와 같은 자바 태그를 없애기 위해 나온 게 JSTL이다. 파일 상단에 아래와 같이 코드를 입력해줘야 JSTL을 사용할 수 있다. 2. Filter 필터는 공통적인 요청 전처리와 응답 후처리에 사용한다. ex) 로깅, 인코딩 등 여러 서블릿에 중복되어있는 전처리와 후처리는 필터로 넣고, 서블릿에서는 처리하는 부분만 실행한다. 만약 필터가 여러개일 경우에는 우선 Filter1이 호출되고, 아래 사진에서 1-1.전처리 -> 1-2.필터 호출 -> 2-1.전처리 -> 2-2.서블릿 호출 -> 서블릿 처리 -> 2-3.후처리 -> 1-3.후처리 의 순서와 같다. 아래는 필터 예시 클..
Spring MVC - [ URL패턴 / EL표현식 ]
1. URL 패턴 @WebServlet으로 서블릿을 URL에 매핑할 때 URL패턴을 사용한다. (스프링은 @RequestMapping) 이전에 서블릿은 lazy-init, 즉 늦은 초기화라고 했다. URL을 매핑할 때 loadOnStartup 옵션을 주면 서블릿을 호출하기 전에 미리 초기화를 해놓는다. 여기에 주는 값 (ex. loadOnStartup=1) 이 우선순위이다. // 한 개일 때 @WebServlet("/hello") // 여러개일 때 @WebServlet(urlPatterns={"/hello","/hello/*"},loadOnStartup=1) 아래 종류는 우선순위 순으로 나열되어 있다. 종류 URL Pattern 매칭 URL 1.exact mapping - 정확히 일치 /login/hel..
Spring MVC - [ 유효 범위(Scope)와 속성(attribute) ]
유효 범위(Scope)와 속성(attribute) HTTP는 특징 상태 정보를 저장하지 않는 특징(=stateless stateful(상태정보를 저장함) )이 있다. 따라서 저장소가 필요한데, 1.접근 범위 / 2.생존 기간 에 따라서 4개의 저장소가 있다. pageContext - lv를 저장하며, 범위는 페이지 안이다. EL은 lv에 직접 접근할 수 없기 때문에 pageContext에 저장 후 사용해야한다. 요청 때 마다 초기화된다. request - 요청할 때 마다 하나씩 생성된다. 보통 하나의 JSP로 전달되고 끝나는데, 포워딩으로 다른 JSP로 전달할 수도 있다. session - 클라이언트마다 1개씩 있는 개별 저장소. 사용자마다 한 개씩 가지므로 사용자 수만큼 세션 객체가 생성된다. 따라서 ..
Spring MVC - [ 서블릿과 JSP ]
1. 서블릿과 컨트롤러의 비교 우선 애노테이션을 보면 서블릿은 @WebServlet (=@Controller + @RequestMapping), 컨트롤러는 @Controller를 사용한다. 서블릿은 HttpServlet 클래스를 상속 받아야 하며, 클래스에 매핑해서 클래스의 수가 많아지는 단점이 있다. 컨트롤러는 서블릿이 조금 더 발전된 형태라고 볼 수 있다. 2. 서블릿의 생명주기 서블릿은 기본적으로 세 개의 메서드가 있다. 아래의 메서드들은 서블릿 컨테이너에 의해 자동 호출된다. init() : 서블릿이 생성될 때 서블릿 초기화를 위해서 쓰임 service() : 실제 작업을 처리 destroy() : 메모리 상에서 제거될 때 수행됨 서블릿은 싱글톤이다. 따라서 1개의 인스턴스만 만들어진다. 요청이 ..