old/Spring

[Spring Framework] Spring Legacy Project 생성

뒷골목프로그래머 2020. 1. 3. 21:29
반응형

안녕하세요. 글쓰는 개발자입니다.

 

Apache Tomcat을 Eclipse 혹은 STS에 연동하는 작업(아래 링크 참고)을 마쳤으니,

https://backstreet-programmer.tistory.com/24

 

[Java 개발환경] WAS setting (Apache Tomcat, Wild fly, resin 4.0)

안녕하세요. 글쓰는 개발자입니다. Java를 기반으로 웹개발을 하다보면, 반드시 필요한게 WAS(Web Application Server) 입니다. 저는 학원에서 Apache Tomcat 8.5v을 사용했고, 현재, 회사에서는 Wild Fly, 전자정..

backstreet-programmer.tistory.com

본격적인 Spring Frame work를 위한 시리즈를 준비했습니다.

 

지난번 WAS Setting이 첫번째라면,

오늘은 두번째로 Spring Legacy Project를 생성하고

Project를 Run 시켜서 Chrome Brower에서

"Hello, World"를 출력시켜보겠습니다.

 

1. Spring Legacy Project 생성

 

STS를 실행시킨 후

상단 메뉴바의 File - New - Spring Legacy Project를 선택합니다.(그림 1 참고)

만약, New를 선택했음에도 1번 그림처럼 나타나지 않을 경우에는

최 하단의 Other...을 선택한 후 Spring - Spring Legacy Project 를 선택합니다.(그림 2 참고)

그림 2의 Next를 누르고

Project명을 입력하고 spring MVC project를 선택 (그림 3 참고)한 후,

최상단 Package 명을 입력합니다.

저는 com.myFirstSpring.mySpring으로 정했습니다. (그림 4 참고)

Finish를 누르면 Proejct가 생성되었음을 확인할 수 있습니다. (그림 5 참고)

 

Spring Legacy Project 생성

 

2. Hello World 출력하기

 

처음 프로젝트를 생성하면

Top-Level Package에 생성시 입력했던

com.myFirstSpring.mySpring Package가 보이고

그 아래에 HomeConstroller가 있습니다.

 

또한, src - main - webapp - WEB-INF - views - home.jsp가 있음을 확인하실 수 있습니다.

 

2-1) HomeController

Project를 Run시키면 HomeController를 찾아가서

아래 코드 중 @Controller를 찾고 RequestMapping에서 Get방식으로 "/"를 찾은 것입니다.

여기서 return 형태는 String형이고 return 값이 "home" 임을 알 수 있는데,

이는 servlet-context.xml에서 설정을 해놓았기 때문입니다.

(자세한 xml 설정은 mybatis 연동 편을 포스팅할 때 합쳐서 설명드리겠습니다.)

package com.myFirstSpring.mySpring;

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {
	
	private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
	
	/**
	 * Simply selects the home view to render by returning its name.
	 */
	@RequestMapping(value = "/", method = RequestMethod.GET)
	public String home(Locale locale, Model model) {
		logger.info("Welcome home! The client locale is {}.", locale);
		
		Date date = new Date();
		DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
		
		String formattedDate = dateFormat.format(date);
		
		model.addAttribute("serverTime", formattedDate );
		
		return "home";
	}
	
}

 

2-2) web.xml

 

그냥 Proejct를 run하게되면, 한글이 깨지는 현상을 확인하실 수 있습니다.

이를 방지하기 위해 web.xml에 아래 코드중

<!-- 한글설정 [S] -->에 해당하는 부분을 추가해주고 저장합니다.

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

	<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/spring/root-context.xml</param-value>
	</context-param>
	
	<!-- Creates the Spring Container shared by all Servlets and Filters -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<!-- Processes application requests -->
	<servlet>
		<servlet-name>appServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
		
	<servlet-mapping>
		<servlet-name>appServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>
	
	<!-- 한글설정 [S] -->
	<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>

		<init-param>

			<param-name>forceEncoding</param-name>

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

		</init-param>

	</filter>

	<filter-mapping>

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

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

	</filter-mapping>

	<!-- 한글설정 [E] -->

</web-app>

 

2-3) home.jsp

 

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
	<title>Home</title>
</head>
<body>
<h1>
	Hello world! 안녕 세상아!
</h1>

<P>  The time on the server is ${serverTime}. </P>
</body>
</html>

 

3. Project 실행 및 결과확인

- 자신이 만든 프로젝트를 우클릭한 후 Run As - Run on Server 선택(그림 1 참고)

- Tomcat 선택 후 Finish(그림 2 참고)

- 크롬 브라우저에서 확인(그림 3 참고)

Hellow World 출력 확인

 

여기까지 Spring Legacy Project를 생성하고

브라우저를 통해 Hello, Wolrd를 출력해 보았습니다.

어떤 원리로 home.jsp를 찾아가는지에 관해 궁금하신 분들이 많을텐데

시리즈를 진행하면서 자연스럽게 설명되도록 진행하겠습니다.

(Spring Framework는 환경설정이 절반이상이기에...)

 

앞으로 mybatis연동, 다양한 annotation사용 등을 다뤄볼 예정이니,

끝까지 봐주시면 감사하겠습니다.

 

부족한 글 끝까지 읽어주셔서 감사합니다.

반응형