1. Dispatcher-Servlet 이란? Servlet Container에서 HTTP프로토콜을 통해 들어오는 모든 요청을 프레젠테이션 계층의 제일앞에 둬서 중앙집중식으로 처리해주는 프론트 컨트롤러(Front Controller)를 말한다. 쉽게 말하자면, 클라이언트로부터 어떠한 요청이 오면 Tomcat(톰캣)과 같은 서블릿 컨테이너가 요청을 받는다. 이때 제일 앞에서 서버로 들어오는 모든 요청을 처리하는 프론트 컨트롤러를 Spring에서 정의하였고, 이를 Dispatcher-Servlet이라고 한다. 그래서 공통처리 작업을 Dispatcher-Servlet이 처리한 후에 적절한 세부 컨트롤러로 작업을 위임해준다. 흐름은 다음과 같다. 기존의 방식은 컨트롤러 하나당 서블릿을 만들었었는데, 프론트 컨트..
1. AOP란? Aspect Oriented Programming이다. customer가 원하는 주 기능을 구현하는 것 말고도 개발자나 운영자에게 필요한 기능이 있을 수 있다. 예를 들어 보안 처리, 트랜잭션 처리, 로그처리 같은 것이다. 이러한 기능들은 주 기능 앞뒤에서 실행하기 때문에 Cross-cutting Concern 코드라고 한다. 2. AOP 구현 방식 이 Cross-cutting 관점 코드를 주 기능의 앞뒤에 굳이 작성하여 넣는다면 필요가 없어질 시에 불편함을 만들어낼 수 있다. 그래서 Cross-cutting 관점 코드는 따로 둔 후에, Cross-cutting 관점 코드를 거친 후 Core 관점 코드를 사용하도록 하는 것이 AOP 구현 방식이다. 즉, Cross-cutting 관점 코드..
1. 어노테이션(Anntotation) 방식 ? 저번엔 xml 방식에 대해 배웠고, 오늘은 Annotation 방식에 대해 작성하려 한다. xml 방식은 최근에는 그다지 많이 사용되지 않는 방법이다. 개발 스타일이 'xml 설정 파일'에서 '어노테이션'으로 바뀌고 있다. 어노테이션은 클래스나 메소드, 필드 등의 선언문에 쓴 "@ 기호로 시작하는 텍스트"이다. 메소드나 클래스에 간단한 단어를 쓰는 것만으로 필요한 작업을 수행 할 수 있으므로 설정 파일에 사용하는 것에서 어노테이션 방식으로 전환되고 있다. 2. Bean 설정 클래스 생성 어노테이션 방식은 Bean 설정 파일을 사용하지 않고, Java의 클래스로 작성하는 방식이다. Bean을 설정할 자바 클래스를 하나 생성한다. package spring.d..
1. 빈(Bean) Spring IoC 컨테이너가 관리하는 자바 객체를 빈(Bean)이라는 용어로 부른다. 우리가 new 연산자로 어떤 객체를 생성했을 때 그 객체는 빈이 아니다. ApplicationContext.getBean()으로 얻어질 수 있는 객체는 빈이다. 즉 Spring에서의 빈은 ApplicationContext가 알고있는 객체, 즉 ApplicationContext가 만들어서 그 안에 담고있는 객체를 의미한다. 주요 속성 class(필수): 정규화된 자바 클래스 이름 id: bean의 고유 식별자 scope: 객체의 범위 (sigleton, prototype) constructor-arg: 생성 시 생성자에 전달할 인수 property: 생성 시 bean setter에 전달할 인수 ini..
MVC 패턴이란? MVC 패턴은 어떻게 소프트웨어를 개발할 것인지를 나타내는 개발 방식이다. 웹 어플리케이션과 같이 UI를 통해 사용자와 상호작용을 해야하는 것을 개발할 때 사용하는 방식이다. MVC는 기능을 크게 세가지로 나눈다. - Model (모델) : 비즈니스 영역의 로직을 처리한다. 데이터 베이스와의 관계를 담당한다. - View (뷰) : 사용자에게 보여지는 화면으로 jsp 파일로 작성한다. - Controller (컨트롤러) : 사용자의 입력 처리와 흐름 제어를 담당한다. 주로 java 코드를 말한다. MVC 패턴의 핵심적인 부분을 정리하자면, 비즈니스 로직을 처리하는 Model과 결과 화면을 보여주는 View를 분리한다는 것 어플리케이션의 흐름 제어나 사용자의 처리 요청은 Controlle..
Filter란? 만약 각 서블릿마다 한글 인코딩을 위해 request.setCharacterEncoding("UTF-8");을 작성해야한다면 매우 불편할 수 있다. 이럴 때 사용할 수 있는게 filter 이다. 공통적인 처리(filter)를 추가하여 통신의 사이 사이에서 지정한 동작을 만들어 낼 수 있다. 예를 들어 전달받은 데이터를 인코딩해야한다든지, 세션 데이터를 인증하거나 이벤트나 공지 등의 팝업을 추가 하는 경우들과 같은 상황에 필요할 수 있다. 1. 필터 클래스 작성 자바 클래스 파일을 하나 생성한 후 아래 코드를 작성합니다. Filter는 인터페이스기 때문에 꼭 메소드를 재정의해야한다. package org.sample.filter; import javax.servlet.*; import ja..
1. GET 방식 웹에서는 클라이언트가 서버로 요청을 하면 응답을 할 수 있는 옵션이 있을 수 있다. 클라이언트는 기본적으로 문서를 요청하고 서버는 요청받은 문서를 주는 식으로 일어난다. (http://localhost/hello 라는 문서를 요청) 그런데 get 방식은 클라이언트가 추가적인 것을 요청하며 문서를 요청할 수 있다. http://localhost/hello?cnt=3 이와 같이 말이다. 뒤에 추가적인 옵션을 덧붙였다. 이런 것을 QueryString 이라한다. 이렇게 서버에게 추가적인 옵션을 요청한다. 이때 서버는 그 옵션에 맞게 반응하여 돌려주어야 한다. 서블릿 클래스에 다음과 같은 내용을 추가하여 해당 값을 받아올 수 있다. int cnt = Integer.parseInt(request..
톰캣서버를 사용해 JSP와 Servlet을 배우고 있다. 웹페이지로 Servlet 출력을 하는데, 원하지 않는 출력이 나타나거나 브라우저마다 다른 출력이 나타나거나 한글이 깨지는 현상들이 일어나곤 한다. 왜그럴까? 형식들을 지정하지 않았기 때문이다. 여러 형식들을 지정해서 그에 맞게끔 브라우저가 읽어들이도록 해야한다. 1. Servlet 출력 형식 일단, 아래 코드부터 보자. @WebServlet("/HelloServlet") public class Hello extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IO..