Tiles & JSP - ohne Spring, Struts und Co.

stockhausen

Grünschnabel
Hallo Zusammen,

ich habe ein Problem mit Tiles. Ich möchte gerne Tiles bei meinem JSP-Projekt einsetzten. Hier kommt weder Spring, Struts, JSF usw. zum Einsatz.
Zurzeit funktioniert Tiles überhaupt nicht.

Ich habe ein einfaches Beispiel erstellt, welches mein Projektszenario wiederspiegelt.

Teils sollte kommt in diesem Beispiel an zwei Stellen zum Einsatz:
1. Ganz am Anfang, wenn index.jsp aufgerufen wird. Hier sollte gleich auf default.jsp weitergeleitet werden.
<c:redirect url="default"/>

2. Innahalb von default.jsp befindet sich ein der Link <a href="show">Show String Page</a>.
Wenn der Link angeklickt wird, sollte zunächst das Servlet "MyServlet" aufgerunfen werden und anschließend auf show.jsp weitergeleitet werden.
Innerhalb von show.jsp sollte das in MyServlet generierte String (Hello World) angezeigt.


Anders gesagt:
Die Weiterleitung innerhalb von index.jsp funktioniert nicht.
Die Weiterleitung innerhalb des Servlets funktioniert nicht.

Würde mich über ein paar Antworten sehr freuen!

Beste Grüße,
Michael

Eclipse Projekt: http://depositfiles.com/files/lhfq2hw1b


web.xml
Code:
<?xml version="1.0" encoding="ASCII"?>
<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_3_0.xsd"
	version="3.0">

	<display-name>JspAndTiles</display-name>

	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

  <servlet>
    <description></description>
    <display-name>MyServlet</display-name>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>de.servlet.MyServlet</servlet-class>
    <load-on-startup>200</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/MyServlet</url-pattern>
  </servlet-mapping>


  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.tiles.TilesServlet</servlet-class>
    <init-param>
      <param-name>definitions-config</param-name>
      <param-value>/WEB-INF/tiles-defs.xml</param-value>
    </init-param>
    <init-param>
      <param-name>org.apache.tiles.definition.digester.DigesterDefinitionsReader.PARSER_VALIDATE</param-name>
      <param-value>true</param-value>
    </init-param>
  </servlet>
  
</web-app>


tiles-defs.xml
Code:
<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE tiles-definitions PUBLIC
      "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
      "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">

<tiles-definitions>

	<definition name="default" template="/jsp/template.jsp">
		<put-attribute name="header" value="/jsp/header.jsp" />
		<put-attribute name="content" value="/jsp/default.jsp" />	
	</definition>	
	
	<!-- show screen -->
	<definition name="show" extends="default">
		<put-attribute name="content" value="/jsp/show.jsp" />
	</definition>
	
</tiles-definitions>

template.jsp
Code:
<%@ include file="/jsp/taglibs.jsp" %>
<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %>

<html>
	<head>
	  <title>JSP and Tiles example</title>
	</head>
	<body>
	<div id="container">
		<div id="header"><tiles:insertAttribute name="header"/></div>
		<div id="content"><tiles:insertAttribute name="content"/></div>
	</div>  
	</body>
</html>


index.jsp
Code:
<%@ include file="/jsp/taglibs.jsp" %>

<c:redirect url="default"/>


default.jsp
Code:
<a href="show">Show String Page</a>


MyServlet
Code:
package de.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class MyServlet
 */
@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public MyServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setAttribute("myString", "Hello World!");
		getServletConfig().getServletContext().getRequestDispatcher("show").forward(request,response);		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	}

}
 
Zuletzt bearbeitet:
Zurück