도담도담

Spring MVC 사용 본문

IT 공부/KH 정보교육원

Spring MVC 사용

Zinisang 2021. 6. 22. 17:02

MVC 모델 1,2 비교

 

모델1

  • 소규모
  • 유지보수가 복잡
  • 디자이너가 코드 삭제할 위험

모델2 : (핵심- 컨트롤러의 유무)

  • 엔터프라이즈급 작업
  • 유지보수가 쉽다
  • 역할이 확실히 나위어있어 디자이너가 꾸미기 편함
    • (개발자는 컨트롤러와 모델만 관리)

 

MVC 구성요소 개발주체
Model VO,DAO 클래스 자바 개발자
View JSP 페이지 웹 디자이너
Controller Servlet 클래스 자바 개발자 또는 MVC프레임워크

 


Spring MVC 사용

DispatcherServlet => /WEB-INF/내에서 서블릿이름-servlet.xml 문서를 검색 (default)

만약 서블릿이름-servlet.xml 문서의 위치를 변경할 경우,
서블릿 초기화 파라미터를 이용하여 위치 변경 가능..

**서블릿이름-servlet.xml 는 web.xml 문서에 등록된다.

<servlet>
	<servlet-name>서블릿이름</servlet-name> 을 이용하여 검색
	<servlet-class> ~~~.DispatcherServlet </servlet-class>
</servlet>

 

예) web.xml문서 내에

<servlet>
	<servlet-name>test</servlet-name>
	<servlet-class> ~~~.DispatcherServlet </servlet-class>	
</servlet>

 

와 같이 서블릿 이름을 설정하면
DispatcherServlet은 test-servlet.xml 문서를 검색한다.



서블릿이름-servlet.xml 문서 등록 내용

HandlerMapping / ~~Controller / ViewResolver
들을 <bean></bean> 태그를 이용하여 등록!!



서블릿이름-servlet.xml 문서 위치 변경시,

<servlet>
	<servlet-name> ~~ </servlet-name>
	<servlet-class> ~~ </servlet-class>
	<init-param>
		<param-name> ~~ </param-name>
		<param-value> ~~ </param-value>
	</init-param>
</servlet>

와 같이 변경된 위치를 설정..
<init-param></init-param> 는 DispatcherServlet의 init()에 의해서 설정됨.
<param-name> contextConfigLocation </param-name> 는 DispatcherServlet의 멤버변수명 수정불가.
<param-value> ~~ </param-value> 는 변경된 위치 및 설정 파일


예) action-servlet.xml 이 WEB-INF/config/ 이 존재할 경우

<init-param>
	<param-name> contextConfigLocation </param-name>
	<param-value> /WEB-INF/config/action-servlet.xml </param-value>
</init-param>


예) action-servlet.xml 의 이름을 presentation-layer.xml으로 변경하고, 파일이  WEB-INF/config/ 이 존재할 경우

<init-param>
	<param-name> contextConfigLocation </param-name>
	<param-value> /WEB-INF/config/presentation-layer.xml </param-value>
</init-param>

Spring MVC 가 제공하는 DispatcherServlet의 내부구조

public class DispatcherServlet extends HttpServlet{
	private String contextConfigLocation;
	
	public void init(ServletConfig config) throws ServletException{
		contextConfigLocation = config.getInitParameter("contextConfigLocation");
		new XmlWebApplicationContext(contextConfigLocation);
	}
	~~~~~
}

 


인코딩설정

웹 애플리케이션에 대한 전체적인 요청 인코딩을 설정할 경우
web.xml 문서 내의 상단에 <filter></filter> 와 <filter-mapping></filter-mapping> 을 이용하여 설정

SpringMVC 는 CharaterEncodingFilter 클래스를 제공한다..

<filter>
	<filter-name>characterEncoding</filter-name>
	<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
	<init-param>
		<param-name>encoding</param-name>
		<param-value>UTF-8</param-value>
	</init-param>
</filter>
  
<filter-mapping>
	<filter-name>characterEncoding</filter-name>
	<url-pattern>*.do</url-pattern>
</filter-mapping>

 

  
<filter><filter-name>characterEncoding</filter-name></filter> 의 필터 이름과
<filter-mapping><filter-name>characterEncoding</filter-name></filter-mapping> 의 필터 이름은 동일해야 한다!

설정 방법은 서블릿 등록 방법과 동일한 형식!!
<init-param><param-name>encoding</param-name></init-param> 의 파라미터명은 수정 불가능!!!
encoding은 CharacterEncodingFilter 의 멤버변수명이기 때문에...

위의 설정은 요청 URL의 마지막이 ~~.do 로 요청이 들어오면 UTF-8로 인코딩 처리


프로젝트 이름변경시 주의사항

프로젝트 실행시, 웹페이지 주소줄에 프로젝트 이름기반으로 되어있는지 확인 
안되어있으면 server 에서 톰캣(서버)를 더블클릭한 후, 

[Modules] -> path를 [Edit] -> "/프로젝트이름" 으로 변경 (변경 후 저장까지 해줘야함)

Servlet 됬는지 확인하는곳
src => main => webapp => WEB-INF => web.xml 맨 밑쪽으로 설정한 servlet 내용들이 있다.

 

'IT 공부 > KH 정보교육원' 카테고리의 다른 글

프레젠테이션, 비지니스 레이어 통합  (0) 2021.06.28
Spring MVC를 이용한 구현  (0) 2021.06.23
Spring MVC 구조  (0) 2021.06.22
스프링 트랙젝션(Transaction)  (0) 2021.06.21
어노테이션을 이용한 MVC  (0) 2021.06.18
Comments