Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- w3schools
- 삼성청년SW아카데미
- til
- 예외처리
- edwith
- exception
- 관계형 데이터베이스
- 기초프로그래밍
- CS기초지식
- ERD
- 부스트코스
- CS50
- SSAFY 9기
- Java Programming
- WebProgramming
- SW
- ssafy
- 데이터베이스 모델링
- 모두를 위한 컴퓨터 과학
- 알고리즘
- 모두를 위한 컴퓨터 과학(CS50)
- java
- Compute Science
- 상속
- 면접을 위한 CS 전공지식 노트
- 객체지향
- CS 기초
- CS 기초지식
- 이진법
- Computer Science
Archives
- Today
- Total
Joslynn의 하루
MSA Full-Stack 개발자 양성 과정 - Spring MVC_221107 본문
MSA Full-Stack 개발자 양성과정/Spring
MSA Full-Stack 개발자 양성 과정 - Spring MVC_221107
Joslynn 2022. 11. 7. 12:43
Spring 3.x MVC
: 2.x에서는 특정 Conroller를 상속 하거나 implements 해야 하나 3.x 에서는 POJO 코딩 방식이 가능
: 2.x에서는 Controller마다 클래스가 필요하여 많은 컨트롤러 클래스 가 필요하고 설정문서가 길어 졌으나 3.x에서는 클래스 하나에 메소드로 사용자 요청 처리가 가능
: 3.X에서 Controller부분이 많이 변했으며 MVC의 어노테이션을 권장
: org.springframework.web.servlet.mvc 안의 Abstractcontroller를 제외한 대부분이 Deprecated 되었음
Spring MVC의 핵심 Componet
Spring MVC 컴포넌트간의 관계와 흐름
: viewResolver - 전달된 viewName정보를 통해 어떤 view(ex> json, jsp, tiles...)를 실행해야 하는지 정보 찾아줌
→ InternalResourceViewResolver 등록
→ prepix(경로), suffix(확장자)를 통해 하나의 view를 만들어냄
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>MyFactoryFrameWork Test</h1>
<h3>
<a href="insert.do?key=insert">등록하기</a><p>
<a href="select.do?key=select">검색하기</a><p>
<a href="update.do?key=update">수정하기</a><p>
<a href="delete.do?key=delete">삭제하기</a><p>
</h3>
</body>
</html>
web.xml 문서
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>step08_MyFramework</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- 진입점 FrontController 역할 등록 -->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
dispatcher-servlet.xml 문서
: spring의 DispatcherServlet이 등록되면, 자동으로 springBean 설정 문서를 로딩
: 기본 위치와 이름은 /WEB-INF/서블릿명-servlet.xml
: springBean 설정문서가 로딩되면, SpringContainer가 생성되면서 필요한 객체를 사전 초기화 및 주입
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 1. 스프링에서 제공하는 빈(컴포넌트)을 설정하는/등록하는 메타데이타
2. 내가 작성한(User Definition Component) 컴포넌트도 여기에 등록
-->
<!-- HandlerMapping을 등록 -->
<bean id="handlerMapping"
class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
<!-- viewResolver 등록 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/" />
<property name="suffix" value=".jsp" />
</bean>
<bean name="/insert.do" class="kosta.mvc.controller.InsertController" />
<bean name="/select.do" class="kosta.mvc.controller.SelectController" />
<bean name="/update.do" class="kosta.mvc.controller.UpdateController" />
<bean name="/delete.do" class="kosta.mvc.controller.DeleteController" />
</beans>
SelectController.java 예시)
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class SelectController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("SelectController 호출");
// 뷰쪽에 전달될 정보
// request.setAttribute("message", "select결과");
ModelAndView mv = new ModelAndView();
// 뷰쪽에 전달될 정보
mv.addObject("message", "select결과"); // 뷰에서 ${message}로 접근
mv.setViewName("selectResult"); // forward 방식 이동
return mv;
}
}
Annotation 방식
Controller
Comments