본문 바로가기

Java/Spring

spring + freemarker

테스트를 위해 로컬에 환경을 구현해보았다.


freemarker 라이브러리 다운 페이지

http://freemarker.sourceforge.net/freemarkerdownload.html


1. web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

<display-name>Sample_Spring3.0</display-name>


<welcome-file-list>

<welcome-file>/html/test.html</welcome-file>

</welcome-file-list>


<!-- Spring Dispatcher Servlet //-->  

<servlet>

<servlet-name>spring</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>spring</servlet-name>

<url-pattern>*.free</url-pattern>

</servlet-mapping>

<!-- //Spring Dispatcher Servlet -->


<!-- Encoding // -->  

<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>*</url-pattern>

    </filter-mapping>

<!-- // Encoding -->

   

</web-app>


오랜만에 하니 헷갈리는 부분이 있었다. servlet에서 url-pattern을 *로 설정하는 실수를 했더니 모든게 서블릿으로 동작하고 view와 연결이 안되고 404 에러가 나온다. 하지만 controller는 타고 넘어간다. 주의해야겠다.


2. spring-servlet.xml
<?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:mvc="http://www.springframework.org/schema/mvc"
    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-3.0.xsd
        http://www.springframework.org/schema/mvc 
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd">

<!-- com.skyunoe.spring 패키지의 하위 bean 자동 등록 -->
<context:component-scan base-package="rsa.controller" />
<!-- To enable @RequestMapping process on type level and method level -->
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<!--/ configration set start /-->
    <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <property name="templateLoaderPath"><value>/WEB-INF/freemarker/</value></property>
        <property name="freemarkerSettings">
            <props>
                <prop key="default_encoding">utf-8</prop>
                <prop key="template_update_delay">1</prop>
                <prop key="number_format">#.#######</prop>
                <prop key="date_format">yyyy년 MM월 dd일</prop>
                <prop key="time_format">a hh시 mm분 ss초</prop>
                <prop key="datetime_format">yyyy년 MM월 dd일 hh시 mm분 a</prop>
            </props>
        </property>
        <property name="freemarkerVariables">
            <props>
<prop key="HOME">http://localhost.home.com</prop>
            </props>
        </property>
    </bean>
    
    <!--/ view resolver /-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
   <property name="order" value="2" />
        <property name="cache"><value>true</value></property>
        <property name="contentType"><value>text/html; charset=utf-8</value></property>
        <property name="exposeSpringMacroHelpers"><value>true</value></property>
</bean>
</beans>



3. TestController 작성 : /src/rsa/controller/TestController.java

package rsa.controller;


import org.springframework.stereotype.Controller;

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

import org.springframework.web.servlet.ModelAndView;


@Controller

public class TestController {


//http://localhost.home.com:8080/rsa/test.jsp

@RequestMapping("/rsa/test")

public ModelAndView test(){

String message = "Hello World 한글";

System.out.println("/rsa/test --> 실행됨");

//ModelAndView mnv = new ModelAndView();

//mnv.setViewName("/rsa/test");

//mnv.addObject("message", message);

//return mnv;

return new ModelAndView("/rsa/test.ftl", "message", message);

}


}



4. view 작성 : /WebContent/WEB-INF/freemarker/rsa/test.ftl

<#ftl encoding="utf-8"/>

<html>

<head>

</head>

<h2>Spring3 Test Page</h2>

<body>

    Controller return value : ${message}

</body>

</html>



http://localhost.home.com:8080/rsa/test.free 으로 동작을 확인했다.



참고로 2가지 작업이 필요한데

본인은 로컬에서 돌릴 때, hosts 파일에 localhost.home.com을 도메인으로 만들고 test한다.

톰켓 설정은 실행한 프로젝트를 root( / )로 설정한다.



freemarker를 정식으로 공부해보고 싶지만 많이 사용하지 않는듯해서 API문서만 보고있다. 개인적으로는 jsp보다 좋은듯하다.



'Java > Spring' 카테고리의 다른 글

스프링 버젼 확인하기  (0) 2012.06.28
form으로 파일 전송  (0) 2012.06.28
Spring 3.0 프로그래밍 챕터3  (0) 2011.05.31
Spring 3.0 프로그래밍 챕터2  (0) 2011.05.31
Spring 3.0 프로그래밍 챕터1  (0) 2011.05.23