[egovFramework 4.1] MVC 패턴으로 Hello World 출력해보기

sliver gun·2024년 7월 13일

egovFramework

목록 보기
1/14

들어가며

egovFramework로 맡은 작업을 하다가 MVC를 통해 직접 화면에 jsp로 Hello World를 출력하는 기본적인 것을 하게 되었다.
캡스톤을 하면서 egovFramework를 많이 써왔지만 프로젝트 처음 시작했을 때의 MVC 설계를 잊어서 그런지 조금 헤매게 되었다.

MVC 패턴이란


프로젝트를 Model, View, Controller로 나누어 구성하는 패턴을 말한다.
Model : Controller를 통해 보낼 데이터를 보관하고 관리함
View : User에게 보여질 화면 처리를 담당한다. (jsp)


가장 먼저 Client가 Dispatcher Servlet에 통신하고, 차례로 HandlerMapping을 통해 처리할 컨트롤러를 받고, Controller에 ModelAndView라는 객체를 받고, View Resolver에게 처리할 View를 받고, View에게서 jsp를 전달 받는다.

프로젝트 생성



New > eGovFrame Web Project 에서 Project name과 Group id를 입력한다.
Generate Example은 여러가지 많은 예시를 제공하지만 빈 프로젝트에서 만들기 때문에 체크하지 않는다.



src/main/java에 새로운 패키지를 만들어 Controller class를 만들 것이다.



패키지 안에 HelloController.java를 생성한다.

package egov.test;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloController {
	@RequestMapping(value = "/hello.do")
	public String hello() {
		return "hello";
	}
}

HelloControll는 다음과 같이 @Controller 어노테이션과 @RequestMapping 어노테이션을 쓰고 /hello.do가 호출되면 hello라는 view의 이름을 반환한다.

src 파일 구성하기


정확히는 src/main/webapp/WEB-INF 디렉토리에 context-servlet.xml, web.xml, index.jsp, hello.jsp를 추가할 것이다.

context-servlet.xml

사실 dispatcher-servlet.xml이라는 이름을 쓰지만 만드는 과정에서 다른 예제의 파일을 그대로 가져오다보니 context-servlet이 되었다.

<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

<!-- scan component -->
<context:component-scan base-package="egov.test"/>

<!-- set view resolver -->
<bean  class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" />

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />

</beans>

package 경로를 지정해 component를 스캔하도록 하고, view resolver를 설정하고 p:perfix, p:suffix를 통해 접근할 jsp 경로와 확장자를 설정한다.
HandlerMapping도 설정하는 코드가 있다.

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee; http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<display-name>Egov2</display-name>
<filter>
<filter-name>encodingFilter</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>encodingFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>

<!-- Spring  context configuration -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring/context-*.xml</param-value>
</context-param>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- Spring WEB context configuration -->
<servlet>
<servlet-name>mvcAction</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/springmvc/context-*.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>mvcAction</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
</web-app>

servlet/param-value에 적힌 /WEB-INF/config/springmvc/context-*.xml은 context-servlet.xml의 경로가 적혀있어야 한다.

index.jsp

<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>mvc test</title>
	</head>
	<body>
		<a href="hello.do">Hello World</a>
	</body>
</html>

Hello World를 클릭하면 hello.do로 이동하게 된다.

hello.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>Insert title here</title>
	</head>
	<body>
		Hello, World!
	</body>
</html>

결론



index.jsp와 hello.jsp가 잘 나오는 것을 확인할 수 있다.

다른 예제 파일에서 servlet 파일과 web.xml 파일을 가져와서 hello World가 뜰 수 있게 간단하게 구성해봤는데 MVC 패턴 치고는 ModelAndView를 쓰지 않아 VC 패턴이 된 것 같긴하다.

참조

Hands on Guide

0개의 댓글