관리 메뉴

IT journey

70일차~73일차 Spring MVC 프레임워크 본문

끄적끄적/스프링

70일차~73일차 Spring MVC 프레임워크

step 2021. 10. 17. 15:28
728x90
반응형

스프링 프레임워크

이 스프링 프레임워크는 3 Tier 구조로 되어있습니다. 각각의 처리영역이 layer고, 이는 Presentation, Business, Persistence 으로 이루어져 있습니다.

(1) Presentation

웹 브라우저에서 웹 서버로 요청하고 응답 결과를 전달하는 영역입니다.

이 영역은 웹 서버가 일합니다.

-- 클라이언트 사이드 스크립트

html/css/javascript/ajax/jQuery

-- 서버 사이드 스크립트

el/jstl/jsp/Servlet

 

프레임 워크는 크게 두개로 나누어집니다.

1) Struts : html 에서 form 태그를 찾아갈 때 xml 을 이용해 serlvlet 을 찾아갑니다.

2) Spring(MVC) : 컨트롤러를 사용하는 것입니다.

(2) Business

이는 미들웨어로, 일하는 애는 WAS 이다.

이에 대한 프레임워크는 Spring(IoC, AOP) 입니다.

[참고]

IoC(역제어)는 이클립스 스프링 프레임워크를 반영해서 프로젝트(컨테이너, 도메인, 웹 어플리케이션, 컨텍스트)를 만들어서 서비스를 하기 위해서 apache-tomcat을 기동 시키면 프로젝트에 적용된 모든 클래스들이 모두 메모리에 올라가야 apache-tomcat 서버가 켜집니다.

역제어(IoC) vs 순제어(Not IoC)

역제어란, 프레임워크가 사용하려는 클래스를 인스턴스(클래스의 인스턴스를 개발자가 아니고 스프링 프레임워크에서 요청한 것)를 하는 것을 말하고, 순제어는 개발자가 클래스 인스턴스를 new 키워드를 이용해서 요청하는 것을 말합니다.

AOP는 보안, 로그 등 공통 모듈의 위치 및 사용합니다.

(3) Persistence

데이터베이스 연동을 XML로 하는 것입니다.

프레임워크는 Hibernate or JPA 와 Ibatis or Mybatis로 나누어집니다.

Hiberate or JPA는 전세계에서 한국을 제외한 곳에서 쓸 수 있습니다.

Ibatis or Mybatis 는 Ibatis에 비해 Mybatis 는 더 좋은 버전입니다.

(1), (2)는 스프링 프레임워크로, 마이바틱스가 포함되어 있습니다.

(2), (3) 은 마이비티스 프레임워크입니다.

컨텍스트의 환경설정

(1) context/WEB-INF/web.xml

컨텍스트의 환경설정 파일

웰컴 파일, 디스패처 서블릿 세팅, 스프링 환경설정파일 불러오기, url 패턴 정의, POST 방식을 위한 인코딩, log4j 세팅하는 것을 해놓은 상황입니다.

(2) context/WEB-INF/spring-servlet.xml

mvc:annotation Handler Mapping, context:component-scan, View Resolving을 세팅한 상태입니다.

 

인코딩

(1) GET 방식

server.xml

<Connector connectionTimeout="20000" port="8088" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="EUC-KR"/>

(2) POST 방식

<filter>

       <filter-name>encodingFilter</filter-name>

        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

        <init-param>

                 <param-name>encoding</param-name>

                 <param-value>EUC-KR</param-value>

        </init-param>

        <init-param>

                <param-name>foreEncoding</param-name>

                <param-value>true</param-value>

        </init-param>

</filter>

<filter-mapping>

         <filter-name>encodingFilter</filter-name>

         <url-pattern>/*</url-pattern>

</filter-mapping>

728x90
반응형
Comments