안녕하세요. 글쓰는 개발자입니다.
Apache Tomcat을 Eclipse 혹은 STS에 연동하는 작업(아래 링크 참고)을 마쳤으니,
https://backstreet-programmer.tistory.com/24
본격적인 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 참고)
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 참고)
여기까지 Spring Legacy Project를 생성하고
브라우저를 통해 Hello, Wolrd를 출력해 보았습니다.
어떤 원리로 home.jsp를 찾아가는지에 관해 궁금하신 분들이 많을텐데
시리즈를 진행하면서 자연스럽게 설명되도록 진행하겠습니다.
(Spring Framework는 환경설정이 절반이상이기에...)
앞으로 mybatis연동, 다양한 annotation사용 등을 다뤄볼 예정이니,
끝까지 봐주시면 감사하겠습니다.
부족한 글 끝까지 읽어주셔서 감사합니다.
'old > Spring' 카테고리의 다른 글
이클립스(eclipse) / JSP / Mybatis 활용 / DB연동 (0) | 2019.06.26 |
---|---|
이클립스(eclipse) / JSP / ibatis 활용 / DB연동 (2) | 2019.06.26 |
이클립스(eclipse) dynamic web project import (0) | 2019.06.26 |