반응형

1. MVC

- Model, View, Controller의 약어로 클라이언트와 상호작용하는 S/W를 디자인함에 있어 세가지 요소로 쪼개어 하는 것을 말합니다.

 

MVC 패턴 Model2  
Model 서비스 클래스 or javabean   비즈니스 로직을 처리하는 모든 것들이 모델에 속합니다. 컨트롤러로부터 특정 로직에 대한 처리 요청(ex: 게시판 글쓰기, 회원가입, 로그인 등)이 들어오면 이를 수행하고 수행 결과를 컨트롤러에 반환한다. 필요한 정보는 request 객체나 session 객체에 저장하기도 한다.
Controller 서블릿   MVC 패턴(모델 2) 모든 흐름 제어를 맡는다. 브라우저로부터 요청이 들어오면, 어떤 요청인지를 분석하여 이 요청을 처리하기 위한 모델을 사용하여 처리한다. 사용한 모델로부터 처리 결과르 받으면 추가로 처리하거나 가공해야할 정보가 있다면 처리 후 request 객체나 session객체에 저장하고, 뷰(jsp페이지)를 선택하여 foward나 redirect 하여 클라이언트에 출력한다
View JSP 페이지   클라이언트에 출력되는 화면을 말합니다. 모델 1과 달리 로직 처리를 위한 코드가 내포되어 있지 않습니다. 요청 결과의 출력 뿐만 아니라 컨트롤러에 요청을 보내는 용도로 사용됩니다. request 객체나 session 객체에 저장된 정보를 토대로 화면을 출력합니다.

 

2. Model1

- JSP로 구현한 기존 웹 어플리케이션은 모델1 구조로 웹 브라우저의 요청을 JSP페이지가 받아서 처리하는 구조입니다.

JSP페이지에 비즈니스 로직을 처리하기 위한 코드와 웹 브라우저에 결과를 보여주기 위한 출력 관리 코드가 뒤섞여 있는 구조로 JSP페이지 안에서 모든 정보를 표현(view)하고 저장(model)하고 처리(control)되므로 재사용이 힘들고 읽기도 힘들어 가독성이 떨어집니다.

 

  즉, 요약하자면 모든 클라이언트의 요청과 응답을 jsp가 담당하는 구조로 장점은 단순한 페이지 작성으로 쉽게 구현이 가능합니다. 중소형 프로젝트에 적합하다고 할 수 있습니다. 단점으로는 웹 어플리케이션이 복잡해지면 유지보수가 힘들어 집니다.

 

3. Model2

- Model1 구조와 달리 웹 브라우저의 요청을 하나의 서블릿이 받습니다. 서블릿은 웹 브라우저의 요청을 알맞게 처리한 후 결과를 JSP페이지로 포워딩합니다.

  즉, 클라이언트의 요청 처리와 응답처리, 비지니스 로직 처리하는 부분을 모듈화시킨 구조로 장점은 처리작업의 분리로 인해 유지보수와 확장이 용이하지만 구조 설계를 위한 시간이 많이 소요되므로 개발 기간이 증가합니다.

 

 

 

이미지 출처 - http://changhozz.tistory.com/126


반응형

'2020 > IT Q_A' 카테고리의 다른 글

Ajax란?  (0) 2020.02.13
xml에서 주석처리 단축키  (0) 2020.01.30
2020 정보처리기사 정보  (0) 2020.01.22
BootStrap 추천 사이트  (0) 2020.01.21
ERROR 1406 (3D000): No database selected  (0) 2020.01.17
블로그 이미지

꽃꽂이하는개발자

,
반응형

  이번에는 브라우저의 요청 URL에 대해 미리 매핑해 놓은 컨트롤러를 호출하여 컨트롤러에서 지정한 JSP를 브라우저로 전송하는 과정을 실습해 보겠습니다.

  브라우저에서 요청한 URL(http://localhost:8090/pro21/test/index.do)에 대해 매핑된 컨트롤러를 선택하고 요청명에 대한 JSP파일을 브라우저로 전송하는 과정입니다.

 

웹 브라우저 -> DispatcherServlet -> SimpleUrlController -> /test/index.jsp -> 웹브라우저

 

1. 브라우저에서 http://localhost:8090/pro21/test/index.do로 요청합니다.

2. DispatcherServlet은 요청에 대해 미리 action-servlet.xml에 매핑된 SimpleUrlController 를 요청합니다.

3. 컨트롤러는 요청에 대해 test 폴더에 있는 index.jsp를 브라우저로 전송합니다.

 

 

cglib-nodep-2.1_3.jar
0.31MB
cglib-nodep-2.2.jar
0.31MB
com.springsource.javax.validation-1.0.0.GA.jar
0.05MB
com.springsource.org.aopalliance-1.0.0.jar
0.00MB
com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
1.57MB
commons-beanutils-1.8.3.jar
0.22MB
commons-dbcp.jar
0.10MB
commons-dbcp-1.4.jar
0.15MB
commons-digester-2.0.jar
0.14MB

 

commons-fileupload-1.2.2.jar
0.06MB
commons-io-2.0.1.jar
0.15MB
commons-logging.jar
0.05MB
commons-logging-1.1.1.jar
0.06MB
commons-pool.jar
0.06MB
commons-pool-1.5.6.jar
0.10MB
json_simple-1.1.jar
0.02MB
jstl.jar
0.02MB
log4j-1.2.16.jar
0.46MB
mybatis-3.0.5.jar
0.61MB
mybatis-spring-1.0.1.jar
0.03MB
mysql-connector-java-3.0.14-production-bin.jar
0.23MB
ojdbc6.jar
2.61MB
org.springframework.aop-3.0.6.RELEASE.jar
0.31MB
org.springframework.asm-3.0.6.RELEASE.jar
0.05MB
org.springframework.aspects-3.0.6.RELEASE.jar
0.03MB
org.springframework.beans-3.0.6.RELEASE.jar
0.53MB
org.springframework.context-3.0.6.RELEASE.jar
0.64MB
org.springframework.core-3.0.6.RELEASE.jar
0.36MB
org.springframework.expression-3.0.6.RELEASE.jar
0.16MB
org.springframework.jdbc-3.0.6.RELEASE.jar
0.37MB
org.springframework.transaction-3.0.6.RELEASE.jar
0.22MB
org.springframework.web.servlet-3.0.6.RELEASE.jar
0.40MB
org.springframework.web-3.0.6.RELEASE.jar
0.38MB
slf4j-api-1.5.8.jar
0.02MB
slf4j-jdk14-1.5.8.jar
0.01MB
spring.jar
2.43MB
standard.jar
0.38MB
tiles-api-2.2.2.jar
0.03MB
tiles-core-2.2.2.jar
0.15MB
tiles-jsp-2.2.2.jar
0.05MB
tiles-servlet-2.2.2.jar
0.06MB
tiles-template-2.2.2.jar
0.02MB

  서블릿에서는 브라우저 요청 처리 시 서블릿에서 제공하는 메서드를 이용해 요청명을 일일이 가져왔습니다. 그러나 스프링에서는 브라우저의 요청을 쉽게 가져올 수 있는 여러 가지 기능을 제공합니다. 그중 SimpleUrlController를 사용해 보겠습니다. 먼저 스프링을 설정합니다.

 

새프로젝트를 만들고 위에 있는 파일들을 다운로드하고 복사해서 lib 폴더에 붙여 넣어 줍니다.

스프링 설정을 마쳤으니 SimpleUrlController를 이용해 요청을 처리해 보겠습니다.

 

실습 파일에 대한 간단한 설명을 하자면..

파일 설명
web.xml 브라우저에서 *.do로 요청 시 스프링의 DispatcherServlet 클래스가 요청을 받을 수 있게 서블릿 매핑을 합니다.
action-servlet.xml 스프링 프레임워크에서 필요한 빈들을 설정합니다.
SimpleUrlController.java 매핑된 요청에 대해 컨트롤러의 기능을 수행합니다.
index.jsp 요청에 대한 컨트롤러가 브라우저로 전송하는 JSP파일입니다.

web.xml을 다음과 같이 작성합니다. 브라우저에서 *.do로 요청하면 스프링의 Dispacther Servlet클래스가 요청을 받을 수 있게 서블릿 매핑을 설정합니다. 또한 <load-on-startup>태그를 이용해 톰캣 실행 시 미리 스프링의 DispatcherServlet을 메모리에 로드 합니다.

  action-servlet.xml에 필요한 빈들을 다음과 같이 설정합니다. SimpleUrlController 클래스에 대해 id가 simpleUrlController인 빈을 생성합니다. 스프링의 SimpleUrlHandlerMapping 클래스 빈을 생성하면 요청명 /test/index.do에 대해 처리하는 컨트롤러를 SimpleUrlController로 설정합니다.

 

  SimpleUrlController 클래스는 다음과 같이 작성합니다. 설정 파일의 요청을 처리하기 위해서는 반드시 Controller 인터페이스를 구현해야 하며, SimplerUrlController 클래스로 요청 시 ModelAndView 객체를 생성해 응답할 jsp이름인 index.jsp로 설정하여 반환합니다.

  컨트롤러에서 ModelAndView의 인자로 설정된 index.jsp를 화면에 출력하도록 설정합니다.

실행해 봅니다.

반응형
블로그 이미지

꽃꽂이하는개발자

,
반응형

이전 글에서는 리스트 출력까지 해보았습니다.

  이번에는 컨트롤러에서 회원 정보 조회뿐만 아니라 회원 정보 등록까지 구현해 보겠습니다. 앞에서 보다 브라우저로부터 전달되는 요청 사항이 많아졌기 때문에 우선은 컨트롤러가 브라우저로부터 어떤 요청을 받았는지 알아내야 합니다. 그런 다음 그 요청에 대해 해당하는 모델을 선택하여 작업을 요청해야 하는데, 이 역할을 하는 방법을 커맨트 패턴이라고 합니다.

  커맨트 패턴이란 한마디로 브라우저가 URL패턴을 이용해 컨트롤러에게 수행 작업을 요청하는 방법입니다. 컨트롤러는 getPathInfo() 메서드를 이용해 URL 패턴에서 요청명을 받아와 작업을 수행합니다.

 

memberForm.jsp MemberController MemberDao DB
  • 회원 가입창에서 회원 정보를 입력하고 URL 패턴을 /member/addMember.do로 서버에 요청합니다.
  • MemberController에서 getPathInfo()메서드를 이용해 요청명인 /addMember.do를 받아옵니다.
  • 요청명에 대해 MemberDAO의 addMember()메서드를 호출합니다.
  • addMember() 메서드에서 SQL문으로 테이블에 회원 정보를 추가합니다.

 

  컨트롤러 역할을 하는 MemberController 클래스를 다음과 같이 작성합니다. 이 컨트롤러에서는 getPathInfo() 메서드를 이용해 두 단계로 이루어진 요청을 가져옵니다. action값에 따라 if문을 분기해서 요청한 작업을 수행하는데 action 값이 null이거나 /listMembers.do인 경우에 회원 조회 기능을 수행합니다. 만약 action값이 /memberForm.do면 회원 가입창을 나타내고 action 값이 /addMember.do면 전송된 회원 정보들을 테이블에 추가합니다.

 

MemberController
listMembers
memberForm.jsp

 

MemberDAO와 MemberVO 는 이전글에서 만든 파일을 복사하였습니다.

 

이제 출력해 보겠습니다.

회원 가입을 하게 되면

이렇게 추가가 됩니다.'

다음편에서는 회원 정보 수정 및 삭제 기능을 구현해 보도록 하겠습니다.

 

github : https://github.com/soulwine-it/mvc_test

 

soulwine-it/mvc_test

Contribute to soulwine-it/mvc_test development by creating an account on GitHub.

github.com

 

출처 : 자바웹을 다루는 기술

 

반응형

'2020 > JSP SERVLET' 카테고리의 다른 글

모델 2 답변형 게시판 구현(게시판 테이블 생성)  (0) 2020.01.02
MVC 회원 정보 수정 및 삭제 기능 구현  (0) 2019.12.30
jstl download  (0) 2019.12.30
MVC를 이용한 회원관리  (0) 2019.12.30
모델2 방식  (0) 2019.12.30
블로그 이미지

꽃꽂이하는개발자

,