본문 바로가기

전체 글

(71)
Front Controller (5) 지금까지 V1부터 V4까지의 점진적인 방식으로 좀더 정형화되고 중복을 줄이며 간단하게 개발자 친화적으로 발전하는 코드를 구현해왔다. 그렇다고 무조건 V4가 좋은 코드라고 할 수 없고 어떤때는 V1방식으로 어떤때는 V3방식으로 개발을 해야하는 상황이 올 수 있다. 그렇다면 매번 각각의 Front-Controller에서 V1을 V3로 모두 바꿔야한다면 이만큼 불편한 일이 없을 것이다. 지금까지 우리가 만들어온 인터페이스들 ControllerV3, ControllerV4등등은 모두 완전히 다른 방식이므로 호환이 되지 않는다. 이럴때 사용하는 사용하는 것이 어댑터 패턴이다. 이 어댑터 패턴을 이용해서 Front-Controller가 다양한 인터페이스의 컨트롤러를 처리할 수 있게 만들어 보자. 핸들러 어댑터 : ..
Front Controller (4) 앞서만든 V3 버전은 반복적인 코드를 줄이고 매핑된 주소로 이동하는 방식도 쉽게 변경이 가능하게 만들었지만, 실제로 개발자가 추구해야하는 코드는 단순하고 실용적인 코드여야 한다. 앞서 V3의 코드들이 딱 그런 케이스라고 생각한다. 이번에 V4버전을 만들면서 좀더 편리하게 개발이 가능하게 바꿔보자. 앞서 V3와 다른점은 Controller에서 ModelView를 반환하는것이 아니라 ViewName을 반환하는 것 뿐이다. 먼저 인터페이스 Controller를 만들어보고 이전 인터페이스와 뭐가 다른지 봐보자. public interface ControllerV4 { /** * * @param paramMap * @param model * @return viewName */ String process(Mappa..
Front Controller (3) public void render(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { RequestDispatcher requestDispatcher = request.getRequestDispatcher(viewPath); requestDispatcher.forward(request,response); } 서블릿 종속성 제거 컨트롤러 입장에서 HttpServletRequest, HttpServletResponse를 받아서 처리를 하는데 위의 Request와 Response가 필요하지 않다. 우리에게 필요한것은 파라미터 정보이기 때문에 Map에서 받은 정보를 대신 넘기게 되면 컨트롤러..
Front Controller (2) 이번에 분리할 부분은 view이다. view를 처리하는 객체를 만들어보자 public class MyView { String viewPath; public MyView(String viewPath){ this.viewPath = viewPath; } public void render(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { RequestDispatcher requestDispatcher = request.getRequestDispatcher(viewPath); requestDispatcher.forward(request,response); } } 지금 위에 보이는 코드를 보..
Front Controller (1) 이전까지 사용했던 MVC 방식도 이전에 Servlet이나 JSP방식으로 개발했을때보다는 훨씬 수월하고 편리하게 개발을 할 수 있었지만 역시 한계가 존재한다. 매번 매핑된 주소로 들어가기 위해 처리하는 공통처리 부분이 꼭 필요하다는 부분이 아직 우리에게는 불편하게 느껴진다. 혹여나 공통처리 부분을 따로 뺀 뒤에 메소드로 만들어 그 메소드만 호출을 한다고 해도 매번 호출할때마다 그 메소드 역시 반복해서 호출해야하므로 별로 나아진게 없다. 그러므로 우리는 이제부터 모든 처리를 하기 앞서서 Front Controller라는 기능을 만들어 수문장을 시키게하여 반복되는 코드를 줄이려고 한다. 이 FrontController는 클라이언트에서 요청이 들어오면 각각에 맞는 컨트롤러로 배당을 시켜줄것이고 해당 컨트롤러에는..
Apache tomcat 서버 구축 (3) 이제 앞서 설치한 아파치와 톰캣을 연동할 것 입니다. 간단하게 설명을 하자면현재 하나의 ip주소와 두개의 80, 8080포트가 있는데 ip주소만 입력하게 되면 80포트인 아파치 웹 서버가 열리게 됩니다. 하지만 대부분의 사이트에서는 정적인 웹 서버만 사용하지 않고 동적인 WAS서버를 같이 사용하기 때문에 8080으로 이동을 해야합니다. 여러대의 톰캣을 사용해도 되지만 이 글에서는 하나의 아파치, 하나의 톰캣엔지, 두개의 톰캣 인스턴스를 사용하여 multiinstance방식을 사용합니다. Multi instance에 대해 간단하게 설명을 하자면 설치한 tomcat폴더 안에는 여러개의 폴더들이 존재하는데 그 안에 bin, lib폴더가 톰캣 엔진에 해당하고 나머지 폴더들이 톰캣 인스턴스가 해당이 된다. 그러므..
Apache tomcat 서버 구축 (3) 저번시간에는 apache를 설치했습니다. 이어 tomcat을 설치해봅시다. tomcat을 설치하기 전에 먼저 java를 다운받아야 합니다. 패키지 yum을 이용하므로 설치하는 폴더위치는 상관이 없다. yum install -y java-1.8.0-openjdk-devel --설치 코드 which javac --설치 확인 코드 readlink -f /bin/javac --설치 파일 위치 확인 vim /etc/profile --환경변수 수정 export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.362.b08-1.el7_9.x86_64 -- vim 명령어로 파일을 열었다면 맨 아래줄로 이동하여 위의 코드를 추가헤 주자 source /etc/profile --수정한 ..
Apache tomcat 서버 구축 (2) 이제부터 설치를 시작하게 될텐데 몇가지 설명을 먼저 드리자면 윈도우에서 프로그램을 설치하려면 zip파일이나 exe실행 파일을 사용하여 실행을 하지만 보통 linux에서는 gui가 아니라 cui를 사용합니다. (물론 gui도 사용가능합니다.) 그러므로 글에서는 wget이라는 명령어를 통해 필요한 파일들을 설치하겠습니다. 먼저 갖춰야할 명령어들을 보여드리겠습니다. yum -y install gcc make gcc-c++ pcre-devel sudo yum update yum -y install libtool yum install autoconf autoreconf -f -i yum install expat-devel 위에서부터 하나씩 실행하면 됩니다. 각각의 필요성은 각자 찾아봅시다. 가장 먼저 apache..