[국비학원 기록/Spring] 스프링 MVC 패턴, model1, model2
my code archive
article thumbnail
반응형
MVC

1. MVC(Model-View-Controller) 패턴

 

1)아키텍쳐 패턴

 

2)Business logic과 Presentation logic을 분리하기 위한 목적.

 

3)사용자 인터페이스로부터 비즈니스 로직을 분리

==>시각적 요소와 그 이면에서 실행되는 비즈니스 로직이 서로 영향없이

쉽게 고칠 수 있는 애플리케이션을 만들 수 있음.

 

4)Model : 애플리케이션의 정보(데이터, Business Logic 포함)
   View : 사용자에게 제공할 화면(Presentation Logic)
   Controller : Model과 View 사이 상호 작용을 관리

 

 

2. MVC 컴포넌트 역할

 

1)모델(Model) 컴포넌트
 -데이터 저장소(DB)와 연동
 -사용자가 입력한 데이터나 사용자에게 출력할 데이터를 다루는 일을 함.
 -여러 개의 데이터 변경 작업을 하나의 작업으로 묶는 트랜잭션을 다루는 일도 함.
 -DAO, VO, Servlet 클래스에 해당


 2)뷰(View) 컴포넌트
 -화면을 만드는 일을 함.
 -HTML,JSP,JS,CSS


 3)컨트롤러(Controller) 컴포넌트
 -클라이언트 요청에 대해 모델과 뷰를 결정하여 전달
 -Servlet, JSP

 

3. 모델2 아키텍쳐 개념

1)모델 1 : Controller 역할을 JSP가 담당함.
2)모델 2 : Controller 역할을 Servlet이 담당함.

 


   
4. Spring MVC

1)DI와 AOP 기능과 더불어 서블릿 기반의 웹 개발을 위한 MVC 프레임워크를 제공
2)모델2 아키텍쳐와 Front Controller 패턴을 프레임워크 차원에서 제공 
3)DispatcherServlet 클래스를 맨 앞단에 놓고
 서버로 들어오는 모든 요청 받아 처리하는 구성

 

5. Spring MVC 주요 구성 요소

1)DispatcherServlet
2)HandlerMapping
3)Controller
4)ModelAndView
5)View
6)ViewResolver
   

6. SimpleUrlController

7. MultiActionController

-여러 요청명에 대해 한 개의 컨트롤러에 구현된 각 메서드로 처리할 수 있음.
-InternalResourceViewResolver
-뷰 생성하는 기능 제공
-prefix, suffix 프로퍼티를 이용해 경로를 지정.
-PropertiesMethodNameResolver
-URL 요청명으로 컨트롤러의 설정 파일에서 미리 설정된 메서드를 바로 호출해서 
 사용할 수 있음.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:p="http://www.springframework.org/schema/p"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
        
        <bean id="viewResolver"
                class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
            <property name="prefix" value="/multi/"/>
            <property name="suffix" value=".jsp"/>
        </bean>
 
        <bean id="userUrlMapping"
                class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
            <property name="mappings">
                <props>
                    <prop key="/multi/*.do">userController</prop>    <!-- URL 요청명 /multi/*.do로 되면 userController를 요청함 -->
                </props>
            </property>
        </bean>
        
        <bean id="userController" class="kr.co.ezenac.multiaction.UserController">
            <property name="methodNameResolver">
                <ref local="userMethodNameResolver" />
            </property>
        </bean>
        
        <bean id="userMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
            <property name="mappings">
                <props>
                    <prop key="/multi/login.do">login</prop>
                    <prop key="/multi/memberInfo.do">memberInfo</prop>
                </props>
            </property>        <!-- PropertiesMethodNameResolver를 이용해 /multi/login.do로 요청하면 userController의 login메서드를 호출함 -->
        </bean>
</beans>
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
 
public class UserController extends MultiActionController {
    
    public ModelAndView login(HttpServletRequest request, HttpServletResponse response) throws Exception{
        
        String userId = "";
        String passwd = "";
        
        ModelAndView mav = new ModelAndView();
        
        request.setCharacterEncoding("utf-8");
        
        userId = request.getParameter("userID");
        passwd = request.getParameter("passwd");
        mav.addObject("userId", userId);        //ModelAndView에 로그인 정보를 바인딩함.
        mav.addObject("passwd", passwd);
        mav.setViewName("result");                //ModelAndView 객체에 포워딩할 JSP 이름 설정함.
        
        return mav;
    }
    
    public ModelAndView memberInfo(HttpServletRequest request, HttpServletResponse response) throws Exception{
        
        request.setCharacterEncoding("utf-8");
        ModelAndView mav = new ModelAndView();
        String id = request.getParameter("id");
        String pwd = request.getParameter("pwd");
        String name = request.getParameter("name");
        String email = request.getParameter("email");
        
        mav.addObject("id", id);                //회원 가입창에서 전송된 회원 정보를 addObject()로 ModelAndView
        mav.addObject("pwd", pwd);
        mav.addObject("name", name);
        mav.addObject("email", email);
        mav.setViewName("memberInfo");
        
        return mav;
    }
 
}
cs
반응형
profile

my code archive

@얼레벌레 개발자👩‍💻

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

반응형