관리자 글쓰기

 본 내용은 혼자 공부하기 위하여 다른 포스트를 보면서 저에게 필요한 부분과 궁금했던 부분을 게시하는 곳입니다.


궁금한 것에 대한 것은 모르는 것이 많겠지만 함께 알아보도록 노력하겠습니다.


참조 게시 포스트 : http://addio3305.tistory.com/


-------------------------------------------------------------------------------------------------------------------------------------------

0. 디렉토리 구성 분석




1. HomeController.java

	@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";
	}

이 클래스는 Controller로 DispatcherServlet에 의해 호출되어 클라이언트로부터 들어오는 Request을 Service 객체로 보내주고 처리 결과와 처리 화면을 DispatcherSerlvet에게 반환한다.


1) @RequestMapping(value = "/", method = RequestMethod.GET)

위 부분에서 살펴봐야 할 것으로 @RequestMapping이란 클라이언트로부터 들어온 Request를 어느 Service 객체로 보내주어야 하는지 매핑하기 위한 역할로 value의 값으로 구분되어진다. method 파라미터는 요청의 방식이 POST 방식인지 GET 방식인지 구분하는 것이다. method 부분을 따로 작성하지 않으면 Default로 POST 형식이 된다.


2) model.addAttribute("serverTime", formattedDate )

처리되어진 결과를 뷰단인 jsp에 보내주기 위한 것으로 serverTime이라는 이름에 formattedDate의 값을 가진 속성을 뷰단으로 넘겨준다.


3)  return "home"

home.jsp 라는 jsp 파일을 뜻하며, 위에서의 처리 결과들을 해당 jsp파일로 보내준다는 것이다.

home이라고만 쓴 이유는 서블릿 설정에서 경로와 뒤의 확장자를 자동으로 붙여주도록 설정해두었기 때문이다.



2. home.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<html>
<head>
	<title>Home</title>
</head>
<body>
<h1>
	Hello world!  
</h1>

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

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

해당 $(serverTime} 이라는 것은 아까 controller에서 처리 결과를 속성값을 추가하여 보냄으로써 받아온 값으로 EL(Express Language)이다.



3. web.xml

web.xml을 위에서 서블릿 배포 서술자라고 했다. 영어로는 DD (Deploment Descriptor)라고 한다. web.xml은 WAS (Web Application Server)(여기서는 Tomcat)이 최초 구동될 때, WEB-INF 디렉토리에 존재하는 web.xml을 읽고, 그에 해당하는 웹 애플리케이션 설정을 구성한다. 다시 말해, 각종 설정을 위한 설정파일이라고 이야기 할 수 있다.



4. servlet-context.xml

DispatcherSerlvet으로 설정된 서블릿을 설정하는 곳입니다.

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/mvc"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:beans="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
		
	<annotation-driven />
	
	<resources mapping="/resources/**" location="/resources/" />
	
	<beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<beans:property name="prefix" value="/WEB-INF/views/" />
		<beans:property name="suffix" value=".jsp" />
	</beans:bean>
	
	<context:component-scan base-package="com.mycompany.myapp" />
		
</beans:beans>
1) 14~17줄
해당 부분은 HomeController 에서 return "home";에 대해 설명할 때 경로와 확장자를 써주지 않아도 된다고 했던 곳을 설정해줬던 부분이다.

2) <context:component-scan base-package="com.mycompany.myapp" />
해당 부분은 해당 패키지에서 @Component 어노테이션이(또는 하위 어노테이션) 적용된 클래스를 검색하여 빈으로 자동등록해주는 기능을 한다.