분류 전체보기 45

[Spring] @GetMapping과 @PostMapping

@GetMapping과 @PostMapping Spring 4.3 이후에 추가된 Get/Post 요청 전용 매핑 어노테이션으로 기존 @RequestMapping 대신 @GetMapping과 @PostMapping을 사용할 수 있다. @Controller public class RegisterController { //@RequestMapping(value="/register/add", method=RequestMethod.GET) @GetMapping("/register/add") public String registerForm() { return "registerForm"; } //@RequestMapping(value="/register/add", method=RequestMethod.POST) @P..

[Spring] @ModelAttribute와 WebDataBinder

@ModelAttribute 적용 대상을 Model의 속성으로 자동 추가해주는 어노테이션 (Model에 자동 저장) 반환 타입 또는 컨트롤러 메서드의 매개변수에 적용 가능하다. 예제 1 - 매개변수 기존에는 브라우저의 요청 값을 매개변수로 받아서 Model 객체를 통해서 매개변수를 저장했었다. @RequestMapping("/testMVC") public String main(User user, Model model) { // 매개변수로 받은 user 객체를 Model에 저장 model.addAttribute("user", user); // 작업 결과를 보여줄 뷰의 이름을 반환 return "userInfo"; } Model에 저장하고자 하는 매개변수 앞에 @ModelAttribute를 붙이면 model..

[Spring] @RequestParam에 대해 알아보자

@RequestParam 요청의 파라미터를 연결할 매개변수에 붙이는 어노테이션 예제 1 @RequestMapping("/requestParam") //public String main(@RequestParam(name = "year", required = false) String year) { public String main(String year) { // 위와 동일 System.out.println("년도 : " + year); return "yoil"; } 속성 name : 쿼리스트링 이름 required : 필수여부 (false면 필수 x) http://localhost/requestParam --> year = null http://localhost/requestParam?year --> yea..

[Spring] Servlet/JSP Filter에 대해 알아보자

Servlet Filter Client에서 Server로 요청이 들어오기 전에 서블릿을 거쳐서 먼저 필터링 하는 것을 서블릿 필터라고 한다. 서블릿마다 공통된 로직을 처리하기위해서 Filter를 사용한다. 공통적인 기능들을 서블릿이 호출되기 전에 수행(전처리)되게 하고 싶거나 서블릿이 호출 되고 난 뒤에 수행(후처리) 하고 싶으면 공통적인 기능들을 서블릿 필터로 구현하면 된다. Filter Chain 필터가 한개 이상 있을 때를 Filter Chain이라고 한다. Filter1의 전처리 -> Filter2의 전처리 -> Filter3의 전처리 -> 서블릿 호출 -> Filter3의 후처리 -> Filter2의 후처리 -> Filter1의 후처리 순으로 처리된다. 어떻게 쓰이나? 예제 - 수행시간 측정 /..

[Spring] Servlet/JSP URL패턴과 DispatcherServlet

URL 패턴 @WebServlet으로 서블릿을 URL에 매핑할 때 사용한다. Spring에서도 동일한 URL 패턴을 사용한다. 종류 URL pattern 매칭 URL 1. exact(정확한) mapping /login/hello.do http://localhost/login/hello.do 2. path(경로) mapping /login/* http://localhost/login/ http://localhost/login/hello http://localhost/login/hello.do http://localhost/login/test/ 3. extension(확장자) mapping *.do http://localhost/hi.do http://localhost/login/hello.do 4. def..

[Spring] Servlet/JSP Scope에 대해 알아보자

HTTP 프로토콜의 특징 상태 정보를 저장하지 않는다. (stateless) Scope의 필요성 상태 정보를 저정하기 위한 저장소를 범위에 따라서 나눠놓은 것이 scope이다. Scope의 종류 웹 애플리케이션에는 4개의 저장소가 존재한다. HttpServletRequest를 통해 받은 변수 혹은 지역 변수를 유효 범위 내에서 사용하기 위해서는 Scope를 알아야 한다. 저장소는 Map형태 (key, value)로 되어있으며 이 곳에 data를 저장해서 사용하면 된다. pageContext 접근 범위 : 하나의 요청 받은 페이지 (다른 페이지에서는 접근 불가) 지역변수를 저장한다. - 기본객체도 포함(response, request 등) 접근가능하다는 것은 읽기과 쓰기가 가능하다는 것 forward가 ..

[Spring] Servlet에 대해 간단히 알아보자

Spring Framework는 Servlet이 발전된 형태이기 때문에 Servlet과 닮은 부분이 많다. 또한 브라우저에서 요청을 받을 때도 Servlet인 DispatcherServlet을 사용하기 때문에 간단하게 알아보고자 한다. Servlet과 Controller 비교 - TestServlet 작성 (Servlet) @WebServlet("/testServlet") public class TestServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException { String name = r..

[Spring] 관심사의 분리와 MVC 패턴에 대해 알아보자

관심사의 분리 하나의 메서드에서 여러 기능을 하는 로직이 많아지면 유지보수 측면에서 어려움을 겪을 수 있다. 아래 코드는 main 메서드에 입력, 작업, 출력 이라는 기능(관심사)이 3개가 있는 것을 볼 수 있다. 이 코드는 단순하지만, 복잡한 기능이 하나의 메서드에 여러개 있다면 그것을 찾는 일은 어려울 것이다. 그래서 우리는 관심사를 분리해야 한다. 앞으로 배울 MVC 패턴도 관심사의 분리라는 개념에서 시작된다. @Controller public class UserInfo { @RequestMapping("/userInfo") public void main(HttpServletRequest request, HttpServletResponse response) throws Exception { // 1..

[Spring] Tomcat의 내부 구조, 설정 파일에 대해 알아보자

웹 서버 구조 톰캣의 내부 구조와 처리과정 1. 클라이언트가 브라우저에서 URL을 요청 (8080포트) - ex) http://www.naver.com/event/list 2. 톰캣의 Thread Pool에서 해당 요청을 받아서 Connector를 통해 HTTP버전에 맞는 요청을 연결해준다. 3. Engine에서 URL에 해당하는 Host로 접근 - ex) www.naver.com 4. 호스트의 각 Context(Spring Project) 로 접근 - ex) /event 5. Context 내부에는 각각의 서블릿이 들어있으며 url에 맞는 서블릿에 접근한다. - ex) /list 6. 해당 서블릿이 실행되고 그 결과를 브라우저에 전송한다. 브라우저 요청 -> 톰캣서버 -> Host -> Context ..

[Spring] 클라이언트와 서버에 대해 알아보자

클라이언트와 서버 역할에 따라 클라이언트와 서버를 구분할 수 있다. 클라이언트(client): 서비스를 요청하는 애플리케이션(or 컴퓨터, 브라우저) 서버(server): 서비스를 제공하는 애플리케이션(or 컴퓨터) 서버의 종류 어떤 서비스를 제공하느냐에 따라 종류가 나눠질 수 있다. ex) Email server, file server, Web server WebServer? 브라우저를 통해서 받을 수 있는 모든 서비스를 칭한다. css, html, 이미지 등 정적인 데이터를 처리해준다. 예를 들어 브라우저에서 byungmin.tistory.com/59 라는 주소를 요청하면 웹서버는 그 요청에 해당하는 화면을 html파일로 뿌려준다. html과 동시에 css, 이미지 파일 등을 같이 뿌려준다. 정적인 ..