<?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.
-->

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
	version="2.4">

	<servlet>
		<servlet-name>controller</servlet-name>
		<servlet-class>com.example.Model2ControllerServlet</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>controller</servlet-name>
		<url-pattern>*.c</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>controller</servlet-name>
        <url-pattern>/</url-pattern>
	</servlet-mapping>

	<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; charset=UTF-8</param-value> <!-- Forces UTF-8 output encoding! -->
		</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>
			<param-value>0</param-value> <!-- 0 is for development only! Use higher value otherwise. -->
		</init-param>
		<init-param>
			<param-name>default_encoding</param-name>
			<param-value>UTF-8</param-value> <!-- The encoding of the template files. -->
		</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>freemarker</servlet-name>
		<url-pattern>*.ftl</url-pattern>
	</servlet-mapping>

	<!-- 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>