<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at
  
    http://www.apache.org/licenses/LICENSE-2.0
  
  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
-->

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web
Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<web-app>
  <display-name>FreeMarker Struts Example</display-name>

  <!-- Struts controller servlet -->
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>example.GuestbookActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>2</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>2</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
  </servlet>

  <!-- FreeMarker view servlet (to replace JSP) -->
  <servlet>
    <servlet-name>freemarker</servlet-name>
    <servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
    
    <!-- FreemarkerServlet settings: -->
    <init-param>
      <param-name>TemplatePath</param-name>
      <param-value>/</param-value>
    </init-param>
    <init-param>
      <param-name>NoCache</param-name>
      <param-value>true</param-value>
    </init-param>
    <init-param>
      <param-name>ContentType</param-name>
      <param-value>text/html</param-value>
    </init-param>
    
    <!-- FreeMarker settings: -->
    <init-param>
      <param-name>incompatible_improvements</param-name>
      <param-value>2.3.21</param-value>
    </init-param>
    <init-param>
      <param-name>template_exception_handler</param-name>
      <!-- Some may prefer "html_debug" for development. -->
      <param-value>rethrow</param-value>
    </init-param>
    <init-param>
      <param-name>template_update_delay</param-name>
      <!-- 0 is for development only! Use higher value otherwise. -->
      <param-value>0</param-value>
    </init-param>
    <init-param>
      <param-name>default_encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
      <param-name>locale</param-name>
      <param-value>en_US</param-value>
    </init-param>
    <init-param>
      <param-name>number_format</param-name>
      <param-value>0.####</param-value>
    </init-param>
    
    <load-on-startup>1</load-on-startup>
  </servlet>

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

  <servlet-mapping>
    <servlet-name>freemarker</servlet-name>
    <url-pattern>*.ftl</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
      <welcome-file>help.html</welcome-file>
  </welcome-file-list>

  <!--
    Prevent the visiting of MVC Views from outside the servlet container.
    RequestDispatcher.forward/include should and will still work.
    Removing this may open security holes!
  -->
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>FreeMarker MVC Views</web-resource-name>
      <url-pattern>*.ftl</url-pattern>
    </web-resource-collection> 
    <auth-constraint>
      <!-- Nobody is allowed to visit these -->
    </auth-constraint>
  </security-constraint>
  
</web-app>
