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 |
'📒 education archive > 🌿Spring' 카테고리의 다른 글
[국비학원 기록/Spring] 트랜잭션(Transaction), 두 개의 계좌에 대한 동시 계좌이체 구현 예제 (0) | 2022.01.04 |
---|---|
[국비학원 기록/Spring] 마이바티스 MyBatis Framework 사용, 회원 정보 조회, 수정, 삭제 예제 (0) | 2022.01.04 |
[국비학원 기록/Spring] 의존성 주입, setter, 생성자 예제 (0) | 2022.01.02 |
[국비학원 기록/Spring] IoC, DI, AOP 개념 정리, 예제 (0) | 2022.01.02 |
[국비학원 기록/Spring] 프레임워크란? (0) | 2022.01.02 |