Grosse MàJ
This commit is contained in:
		
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,121 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
/* $Id: CookieExample.java 500674 2007-01-27 23:15:00Z markt $
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
import java.io.*;
 | 
			
		||||
import java.util.*;
 | 
			
		||||
import javax.servlet.*;
 | 
			
		||||
import javax.servlet.http.*;
 | 
			
		||||
 | 
			
		||||
import util.HTMLFilter;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Example servlet showing request headers
 | 
			
		||||
 *
 | 
			
		||||
 * @author James Duncan Davidson <duncan@eng.sun.com>
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
public class CookieExample extends HttpServlet {
 | 
			
		||||
 | 
			
		||||
    ResourceBundle rb = ResourceBundle.getBundle("LocalStrings");
 | 
			
		||||
    
 | 
			
		||||
    public void doGet(HttpServletRequest request,
 | 
			
		||||
                      HttpServletResponse response)
 | 
			
		||||
        throws IOException, ServletException
 | 
			
		||||
    {
 | 
			
		||||
        response.setContentType("text/html");
 | 
			
		||||
 | 
			
		||||
        PrintWriter out = response.getWriter();
 | 
			
		||||
        out.println("<html>");
 | 
			
		||||
        out.println("<body bgcolor=\"white\">");
 | 
			
		||||
        out.println("<head>");
 | 
			
		||||
 | 
			
		||||
        String title = rb.getString("cookies.title");
 | 
			
		||||
        out.println("<title>" + title + "</title>");
 | 
			
		||||
        out.println("</head>");
 | 
			
		||||
        out.println("<body>");
 | 
			
		||||
 | 
			
		||||
	// relative links
 | 
			
		||||
 | 
			
		||||
        // XXX
 | 
			
		||||
        // making these absolute till we work out the
 | 
			
		||||
        // addition of a PathInfo issue 
 | 
			
		||||
	
 | 
			
		||||
        out.println("<a href=\"../cookies.html\">");
 | 
			
		||||
        out.println("<img src=\"../images/code.gif\" height=24 " +
 | 
			
		||||
                    "width=24 align=right border=0 alt=\"view code\"></a>");
 | 
			
		||||
        out.println("<a href=\"../index.html\">");
 | 
			
		||||
        out.println("<img src=\"../images/return.gif\" height=24 " +
 | 
			
		||||
                    "width=24 align=right border=0 alt=\"return\"></a>");
 | 
			
		||||
 | 
			
		||||
        out.println("<h3>" + title + "</h3>");
 | 
			
		||||
 | 
			
		||||
        Cookie[] cookies = request.getCookies();
 | 
			
		||||
        if ((cookies != null) && (cookies.length > 0)) {
 | 
			
		||||
            out.println(rb.getString("cookies.cookies") + "<br>");
 | 
			
		||||
            for (int i = 0; i < cookies.length; i++) {
 | 
			
		||||
                Cookie cookie = cookies[i];
 | 
			
		||||
                out.print("Cookie Name: " + HTMLFilter.filter(cookie.getName())
 | 
			
		||||
                          + "<br>");
 | 
			
		||||
                out.println("  Cookie Value: " 
 | 
			
		||||
                            + HTMLFilter.filter(cookie.getValue())
 | 
			
		||||
                            + "<br><br>");
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            out.println(rb.getString("cookies.no-cookies"));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        String cookieName = request.getParameter("cookiename");
 | 
			
		||||
        String cookieValue = request.getParameter("cookievalue");
 | 
			
		||||
        if (cookieName != null && cookieValue != null) {
 | 
			
		||||
            Cookie cookie = new Cookie(cookieName, cookieValue);
 | 
			
		||||
            response.addCookie(cookie);
 | 
			
		||||
            out.println("<P>");
 | 
			
		||||
            out.println(rb.getString("cookies.set") + "<br>");
 | 
			
		||||
            out.print(rb.getString("cookies.name") + "  " 
 | 
			
		||||
                      + HTMLFilter.filter(cookieName) + "<br>");
 | 
			
		||||
            out.print(rb.getString("cookies.value") + "  " 
 | 
			
		||||
                      + HTMLFilter.filter(cookieValue));
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        out.println("<P>");
 | 
			
		||||
        out.println(rb.getString("cookies.make-cookie") + "<br>");
 | 
			
		||||
        out.print("<form action=\"");
 | 
			
		||||
        out.println("CookieExample\" method=POST>");
 | 
			
		||||
        out.print(rb.getString("cookies.name") + "  ");
 | 
			
		||||
        out.println("<input type=text length=20 name=cookiename><br>");
 | 
			
		||||
        out.print(rb.getString("cookies.value") + "  ");
 | 
			
		||||
        out.println("<input type=text length=20 name=cookievalue><br>");
 | 
			
		||||
        out.println("<input type=submit></form>");
 | 
			
		||||
            
 | 
			
		||||
            
 | 
			
		||||
        out.println("</body>");
 | 
			
		||||
        out.println("</html>");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void doPost(HttpServletRequest request,
 | 
			
		||||
                      HttpServletResponse response)
 | 
			
		||||
        throws IOException, ServletException
 | 
			
		||||
    {
 | 
			
		||||
        doGet(request, response);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,75 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
/* $Id: HelloWorldExample.java 500674 2007-01-27 23:15:00Z markt $
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
import java.io.*;
 | 
			
		||||
import java.util.*;
 | 
			
		||||
import javax.servlet.*;
 | 
			
		||||
import javax.servlet.http.*;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * The simplest possible servlet.
 | 
			
		||||
 *
 | 
			
		||||
 * @author James Duncan Davidson
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
public class HelloWorldExample extends HttpServlet {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public void doGet(HttpServletRequest request,
 | 
			
		||||
                      HttpServletResponse response)
 | 
			
		||||
        throws IOException, ServletException
 | 
			
		||||
    {
 | 
			
		||||
        ResourceBundle rb =
 | 
			
		||||
            ResourceBundle.getBundle("LocalStrings",request.getLocale());
 | 
			
		||||
        response.setContentType("text/html");
 | 
			
		||||
        PrintWriter out = response.getWriter();
 | 
			
		||||
 | 
			
		||||
        out.println("<html>");
 | 
			
		||||
        out.println("<head>");
 | 
			
		||||
 | 
			
		||||
	    String title = rb.getString("helloworld.title");
 | 
			
		||||
 | 
			
		||||
	    out.println("<title>" + title + "</title>");
 | 
			
		||||
        out.println("</head>");
 | 
			
		||||
        out.println("<body bgcolor=\"white\">");
 | 
			
		||||
 | 
			
		||||
	// note that all links are created to be relative. this
 | 
			
		||||
	// ensures that we can move the web application that this
 | 
			
		||||
	// servlet belongs to to a different place in the url
 | 
			
		||||
	// tree and not have any harmful side effects.
 | 
			
		||||
 | 
			
		||||
        // XXX
 | 
			
		||||
        // making these absolute till we work out the
 | 
			
		||||
        // addition of a PathInfo issue
 | 
			
		||||
 | 
			
		||||
	    out.println("<a href=\"../helloworld.html\">");
 | 
			
		||||
        out.println("<img src=\"../images/code.gif\" height=24 " +
 | 
			
		||||
                    "width=24 align=right border=0 alt=\"view code\"></a>");
 | 
			
		||||
        out.println("<a href=\"../index.html\">");
 | 
			
		||||
        out.println("<img src=\"../images/return.gif\" height=24 " +
 | 
			
		||||
                    "width=24 align=right border=0 alt=\"return\"></a>");
 | 
			
		||||
        out.println("<h1>" + title + "</h1>");
 | 
			
		||||
        out.println("</body>");
 | 
			
		||||
        out.println("</html>");
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -0,0 +1,53 @@
 | 
			
		||||
# 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.
 | 
			
		||||
 | 
			
		||||
# $Id: LocalStrings.properties 467217 2006-10-24 03:14:34Z markt $
 | 
			
		||||
 | 
			
		||||
# Default localized resources for example servlets
 | 
			
		||||
# This locale is en_US
 | 
			
		||||
 | 
			
		||||
helloworld.title=Hello World!
 | 
			
		||||
 | 
			
		||||
requestinfo.title=Request Information Example
 | 
			
		||||
requestinfo.label.method=Method:
 | 
			
		||||
requestinfo.label.requesturi=Request URI:
 | 
			
		||||
requestinfo.label.protocol=Protocol:
 | 
			
		||||
requestinfo.label.pathinfo=Path Info:
 | 
			
		||||
requestinfo.label.remoteaddr=Remote Address:
 | 
			
		||||
 | 
			
		||||
requestheader.title=Request Header Example
 | 
			
		||||
 | 
			
		||||
requestparams.title=Request Parameters Example
 | 
			
		||||
requestparams.params-in-req=Parameters in this request:
 | 
			
		||||
requestparams.no-params=No Parameters, Please enter some
 | 
			
		||||
requestparams.firstname=First Name:
 | 
			
		||||
requestparams.lastname=Last Name:
 | 
			
		||||
 | 
			
		||||
cookies.title=Cookies Example
 | 
			
		||||
cookies.cookies=Your browser is sending the following cookies:
 | 
			
		||||
cookies.no-cookies=Your browser isn't sending any cookies
 | 
			
		||||
cookies.make-cookie=Create a cookie to send to your browser
 | 
			
		||||
cookies.name=Name:
 | 
			
		||||
cookies.value=Value:
 | 
			
		||||
cookies.set=You just sent the following cookie to your browser:
 | 
			
		||||
 | 
			
		||||
sessions.title=Sessions Example
 | 
			
		||||
sessions.id=Session ID:
 | 
			
		||||
sessions.created=Created:
 | 
			
		||||
sessions.lastaccessed=Last Accessed:
 | 
			
		||||
sessions.data=The following data is in your session:
 | 
			
		||||
sessions.adddata=Add data to your session
 | 
			
		||||
sessions.dataname=Name of Session Attribute:
 | 
			
		||||
sessions.datavalue=Value of Session Attribute:
 | 
			
		||||
@@ -0,0 +1,53 @@
 | 
			
		||||
# 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.
 | 
			
		||||
 | 
			
		||||
# $Id: LocalStrings_en.properties 467217 2006-10-24 03:14:34Z markt $
 | 
			
		||||
 | 
			
		||||
# Default localized resources for example servlets
 | 
			
		||||
# This locale is en_US
 | 
			
		||||
 | 
			
		||||
helloworld.title=Hello World!
 | 
			
		||||
 | 
			
		||||
requestinfo.title=Request Information Example
 | 
			
		||||
requestinfo.label.method=Method:
 | 
			
		||||
requestinfo.label.requesturi=Request URI:
 | 
			
		||||
requestinfo.label.protocol=Protocol:
 | 
			
		||||
requestinfo.label.pathinfo=Path Info:
 | 
			
		||||
requestinfo.label.remoteaddr=Remote Address:
 | 
			
		||||
 | 
			
		||||
requestheader.title=Request Header Example
 | 
			
		||||
 | 
			
		||||
requestparams.title=Request Parameters Example
 | 
			
		||||
requestparams.params-in-req=Parameters in this request:
 | 
			
		||||
requestparams.no-params=No Parameters, Please enter some
 | 
			
		||||
requestparams.firstname=First Name:
 | 
			
		||||
requestparams.lastname=Last Name:
 | 
			
		||||
 | 
			
		||||
cookies.title=Cookies Example
 | 
			
		||||
cookies.cookies=Your browser is sending the following cookies:
 | 
			
		||||
cookies.no-cookies=Your browser isn't sending any cookies
 | 
			
		||||
cookies.make-cookie=Create a cookie to send to your browser
 | 
			
		||||
cookies.name=Name:
 | 
			
		||||
cookies.value=Value:
 | 
			
		||||
cookies.set=You just sent the following cookie to your browser:
 | 
			
		||||
 | 
			
		||||
sessions.title=Sessions Example
 | 
			
		||||
sessions.id=Session ID:
 | 
			
		||||
sessions.created=Created:
 | 
			
		||||
sessions.lastaccessed=Last Accessed:
 | 
			
		||||
sessions.data=The following data is in your session:
 | 
			
		||||
sessions.adddata=Add data to your session
 | 
			
		||||
sessions.dataname=Name of Session Attribute:
 | 
			
		||||
sessions.datavalue=Value of Session Attribute:
 | 
			
		||||
@@ -0,0 +1,53 @@
 | 
			
		||||
# 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.
 | 
			
		||||
 | 
			
		||||
# $Id: LocalStrings_es.properties 467217 2006-10-24 03:14:34Z markt $
 | 
			
		||||
#
 | 
			
		||||
# Default localized string information
 | 
			
		||||
# Localized para Locale es_ES
 | 
			
		||||
 | 
			
		||||
helloworld.title=Hola Mundo!
 | 
			
		||||
 | 
			
		||||
requestinfo.title=Ejemplo de Informacion de Request
 | 
			
		||||
requestinfo.label.method=Metodo:
 | 
			
		||||
requestinfo.label.requesturi=Request URI:
 | 
			
		||||
requestinfo.label.protocol=Protocolo:
 | 
			
		||||
requestinfo.label.pathinfo=Path Info:
 | 
			
		||||
requestinfo.label.remoteaddr=Direccion Remota:
 | 
			
		||||
 | 
			
		||||
requestheader.title=Ejemplo de Cabecera de Request
 | 
			
		||||
 | 
			
		||||
requestparams.title=Ejemplo de parametros de Request
 | 
			
		||||
requestparams.params-in-req=Parametros en este Request:
 | 
			
		||||
requestparams.no-params=No hay parametro. por favor usa alguno
 | 
			
		||||
requestparams.firstname=Nombre:
 | 
			
		||||
requestparams.lastname=Apellidos:
 | 
			
		||||
 | 
			
		||||
cookies.title=Ejemplo de Cookies
 | 
			
		||||
cookies.cookies=Tu navegador esta enviando los siguientes cookies:
 | 
			
		||||
cookies.no-cookies=Tu navegador no esta enviando cookies
 | 
			
		||||
cookies.make-cookie=Crea un cookie para enviarlo a tu navegador
 | 
			
		||||
cookies.name=Nombre:
 | 
			
		||||
cookies.value=Valor:
 | 
			
		||||
cookies.set=Acabas de enviar a tu navegador estos cookies:
 | 
			
		||||
 | 
			
		||||
sessions.title=ejemplo de Sesiones
 | 
			
		||||
sessions.id=ID de Sesion:
 | 
			
		||||
sessions.created=Creado:
 | 
			
		||||
sessions.lastaccessed=Ultimo Acceso:
 | 
			
		||||
sessions.data=Lo siguientes datos estan en tu sesion:
 | 
			
		||||
sessions.adddata=A<EFBFBD>ade datos a tu sesion:
 | 
			
		||||
sessions.dataname=Nombre del atributo de sesion:
 | 
			
		||||
sessions.datavalue=Valor del atributo de sesion:
 | 
			
		||||
@@ -0,0 +1,53 @@
 | 
			
		||||
# 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.
 | 
			
		||||
 | 
			
		||||
# $Id: LocalStrings_fr.properties 467217 2006-10-24 03:14:34Z markt $
 | 
			
		||||
 | 
			
		||||
# Default localized resources for example servlets
 | 
			
		||||
# This locale is fr_FR
 | 
			
		||||
 | 
			
		||||
helloworld.title=Salut le Monde!
 | 
			
		||||
 | 
			
		||||
requestinfo.title=Exemple d''information sur la requ<71>te
 | 
			
		||||
requestinfo.label.method=M<EFBFBD>thode:
 | 
			
		||||
requestinfo.label.requesturi=URI de requ<71>te:
 | 
			
		||||
requestinfo.label.protocol=Protocole:
 | 
			
		||||
requestinfo.label.pathinfo=Info de chemin:
 | 
			
		||||
requestinfo.label.remoteaddr=Adresse distante:
 | 
			
		||||
 | 
			
		||||
requestheader.title=Exemple d''information sur les ent<6E>te de requ<71>te
 | 
			
		||||
 | 
			
		||||
requestparams.title=Exemple de requ<71>te avec param<61>tres
 | 
			
		||||
requestparams.params-in-req=Param<EFBFBD>tres dans la requ<71>te:
 | 
			
		||||
requestparams.no-params=Pas de param<61>tre, merci dans saisir quelqu'uns
 | 
			
		||||
requestparams.firstname=Pr<EFBFBD>nom:
 | 
			
		||||
requestparams.lastname=Nom:
 | 
			
		||||
 | 
			
		||||
cookies.title=Exemple d''utilisation de Cookies
 | 
			
		||||
cookies.cookies=Votre navigateur retourne les cookies suivant:
 | 
			
		||||
cookies.no-cookies=Votre navigateur ne retourne aucun cookie
 | 
			
		||||
cookies.make-cookie=Cr<EFBFBD>ation d''un cookie <20> retourner <20> votre navigateur
 | 
			
		||||
cookies.name=Nom:
 | 
			
		||||
cookies.value=Valeur:
 | 
			
		||||
cookies.set=Vous venez d''envoyer le cookie suivant <20> votre navigateur:
 | 
			
		||||
 | 
			
		||||
sessions.title=Exemple de Sessions
 | 
			
		||||
sessions.id=ID de Session:
 | 
			
		||||
sessions.created=Cr<EFBFBD>e le:
 | 
			
		||||
sessions.lastaccessed=Dernier acc<63>s:
 | 
			
		||||
sessions.data=Les donn<6E>es existantes dans votre session:
 | 
			
		||||
sessions.adddata=Ajouter des donn<6E>es <20> votre session
 | 
			
		||||
sessions.dataname=Nom de l''Attribut de Session:
 | 
			
		||||
sessions.datavalue=Valeur de l''Attribut de Session:
 | 
			
		||||
@@ -0,0 +1,53 @@
 | 
			
		||||
# 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.
 | 
			
		||||
 | 
			
		||||
# $Id: LocalStrings_pt.properties 467217 2006-10-24 03:14:34Z markt $
 | 
			
		||||
 | 
			
		||||
# Default localized resources for example servlets
 | 
			
		||||
# This locale is pt_PT
 | 
			
		||||
 | 
			
		||||
helloworld.title=Ola Mundo!
 | 
			
		||||
 | 
			
		||||
requestinfo.title=Exemplo da Informacao do Pedido
 | 
			
		||||
requestinfo.label.method=Metodo:
 | 
			
		||||
requestinfo.label.requesturi=URI do Pedido:
 | 
			
		||||
requestinfo.label.protocol=Protocolo:
 | 
			
		||||
requestinfo.label.pathinfo=Informacao do Caminho:
 | 
			
		||||
requestinfo.label.remoteaddr=Endereco Remoto:
 | 
			
		||||
 | 
			
		||||
requestheader.title=Exemplo da Cebeceira do Pedido
 | 
			
		||||
 | 
			
		||||
requestparams.title=Examplo de Parametros do Pedido
 | 
			
		||||
requestparams.params-in-req=Parametros neste pedido:
 | 
			
		||||
requestparams.no-params=Sem Parametros, Por favor entre alguns
 | 
			
		||||
requestparams.firstname=Primeiro Nome:
 | 
			
		||||
requestparams.lastname=Apelido:
 | 
			
		||||
 | 
			
		||||
cookies.title=CExamplo de Cookies
 | 
			
		||||
cookies.cookies=O se browser esta a enviar os seguintes cookies:
 | 
			
		||||
cookies.no-cookies=O seu browser nao esta a enviar nenhuns cookies
 | 
			
		||||
cookies.make-cookie=Crie um cookie para enviar para o seu browser
 | 
			
		||||
cookies.name=Nome:
 | 
			
		||||
cookies.value=Valor:
 | 
			
		||||
cookies.set=Acabou de enviar o seguinte cookie para o seu browser:
 | 
			
		||||
 | 
			
		||||
sessions.title=Examplo de sessoes
 | 
			
		||||
sessions.id=Identificador da Sessao:
 | 
			
		||||
sessions.created=Criada:
 | 
			
		||||
sessions.lastaccessed=Ultima vez acedida:
 | 
			
		||||
sessions.data=Os seguintes dados fazem parte da sua sessao:
 | 
			
		||||
sessions.adddata=Adicione data a sua sessao
 | 
			
		||||
sessions.dataname=Nome do atributo da sessao:
 | 
			
		||||
sessions.datavalue=Valor do atributo da Sessao:
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,90 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
/* $Id: RequestHeaderExample.java 500674 2007-01-27 23:15:00Z markt $
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
import java.io.*;
 | 
			
		||||
import java.util.*;
 | 
			
		||||
import javax.servlet.*;
 | 
			
		||||
import javax.servlet.http.*;
 | 
			
		||||
 | 
			
		||||
import util.HTMLFilter;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Example servlet showing request headers
 | 
			
		||||
 *
 | 
			
		||||
 * @author James Duncan Davidson <duncan@eng.sun.com>
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
public class RequestHeaderExample extends HttpServlet {
 | 
			
		||||
 | 
			
		||||
    ResourceBundle rb = ResourceBundle.getBundle("LocalStrings");
 | 
			
		||||
    
 | 
			
		||||
    public void doGet(HttpServletRequest request,
 | 
			
		||||
                      HttpServletResponse response)
 | 
			
		||||
        throws IOException, ServletException
 | 
			
		||||
    {
 | 
			
		||||
        response.setContentType("text/html");
 | 
			
		||||
 | 
			
		||||
        PrintWriter out = response.getWriter();
 | 
			
		||||
        out.println("<html>");
 | 
			
		||||
        out.println("<body bgcolor=\"white\">");
 | 
			
		||||
        out.println("<head>");
 | 
			
		||||
 | 
			
		||||
        String title = rb.getString("requestheader.title");
 | 
			
		||||
        out.println("<title>" + title + "</title>");
 | 
			
		||||
        out.println("</head>");
 | 
			
		||||
        out.println("<body>");
 | 
			
		||||
 | 
			
		||||
	// all links relative
 | 
			
		||||
 | 
			
		||||
        // XXX
 | 
			
		||||
        // making these absolute till we work out the
 | 
			
		||||
        // addition of a PathInfo issue 
 | 
			
		||||
	
 | 
			
		||||
        out.println("<a href=\"../reqheaders.html\">");
 | 
			
		||||
        out.println("<img src=\"../images/code.gif\" height=24 " +
 | 
			
		||||
                    "width=24 align=right border=0 alt=\"view code\"></a>");
 | 
			
		||||
        out.println("<a href=\"../index.html\">");
 | 
			
		||||
        out.println("<img src=\"../images/return.gif\" height=24 " +
 | 
			
		||||
                    "width=24 align=right border=0 alt=\"return\"></a>");
 | 
			
		||||
 | 
			
		||||
        out.println("<h3>" + title + "</h3>");
 | 
			
		||||
        out.println("<table border=0>");
 | 
			
		||||
        Enumeration e = request.getHeaderNames();
 | 
			
		||||
        while (e.hasMoreElements()) {
 | 
			
		||||
            String headerName = (String)e.nextElement();
 | 
			
		||||
            String headerValue = request.getHeader(headerName);
 | 
			
		||||
            out.println("<tr><td bgcolor=\"#CCCCCC\">");
 | 
			
		||||
            out.println(HTMLFilter.filter(headerName));
 | 
			
		||||
            out.println("</td><td>");
 | 
			
		||||
            out.println(HTMLFilter.filter(headerValue));
 | 
			
		||||
            out.println("</td></tr>");
 | 
			
		||||
        }
 | 
			
		||||
        out.println("</table>");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void doPost(HttpServletRequest request,
 | 
			
		||||
                      HttpServletResponse response)
 | 
			
		||||
        throws IOException, ServletException
 | 
			
		||||
    {
 | 
			
		||||
        doGet(request, response);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,114 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
/* $Id: RequestInfoExample.java 500674 2007-01-27 23:15:00Z markt $
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
import java.io.*;
 | 
			
		||||
import java.util.*;
 | 
			
		||||
import javax.servlet.*;
 | 
			
		||||
import javax.servlet.http.*;
 | 
			
		||||
 | 
			
		||||
import util.HTMLFilter;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Example servlet showing request information.
 | 
			
		||||
 *
 | 
			
		||||
 * @author James Duncan Davidson <duncan@eng.sun.com>
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
public class RequestInfoExample extends HttpServlet {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    ResourceBundle rb = ResourceBundle.getBundle("LocalStrings");
 | 
			
		||||
 | 
			
		||||
    public void doGet(HttpServletRequest request,
 | 
			
		||||
                      HttpServletResponse response)
 | 
			
		||||
        throws IOException, ServletException
 | 
			
		||||
    {
 | 
			
		||||
        response.setContentType("text/html");
 | 
			
		||||
 | 
			
		||||
        PrintWriter out = response.getWriter();
 | 
			
		||||
        out.println("<html>");
 | 
			
		||||
        out.println("<body>");
 | 
			
		||||
        out.println("<head>");
 | 
			
		||||
 | 
			
		||||
        String title = rb.getString("requestinfo.title");
 | 
			
		||||
        out.println("<title>" + title + "</title>");
 | 
			
		||||
        out.println("</head>");
 | 
			
		||||
        out.println("<body bgcolor=\"white\">");
 | 
			
		||||
 | 
			
		||||
        // img stuff not req'd for source code html showing
 | 
			
		||||
	// all links relative!
 | 
			
		||||
 | 
			
		||||
        // XXX
 | 
			
		||||
        // making these absolute till we work out the
 | 
			
		||||
        // addition of a PathInfo issue
 | 
			
		||||
	
 | 
			
		||||
        out.println("<a href=\"../reqinfo.html\">");
 | 
			
		||||
        out.println("<img src=\"../images/code.gif\" height=24 " +
 | 
			
		||||
                    "width=24 align=right border=0 alt=\"view code\"></a>");
 | 
			
		||||
        out.println("<a href=\"../index.html\">");
 | 
			
		||||
        out.println("<img src=\"../images/return.gif\" height=24 " +
 | 
			
		||||
                    "width=24 align=right border=0 alt=\"return\"></a>");
 | 
			
		||||
 | 
			
		||||
        out.println("<h3>" + title + "</h3>");
 | 
			
		||||
        out.println("<table border=0><tr><td>");
 | 
			
		||||
        out.println(rb.getString("requestinfo.label.method"));
 | 
			
		||||
        out.println("</td><td>");
 | 
			
		||||
        out.println(request.getMethod());
 | 
			
		||||
        out.println("</td></tr><tr><td>");
 | 
			
		||||
        out.println(rb.getString("requestinfo.label.requesturi"));
 | 
			
		||||
        out.println("</td><td>");        
 | 
			
		||||
        out.println(HTMLFilter.filter(request.getRequestURI()));
 | 
			
		||||
        out.println("</td></tr><tr><td>");        
 | 
			
		||||
        out.println(rb.getString("requestinfo.label.protocol"));
 | 
			
		||||
        out.println("</td><td>");        
 | 
			
		||||
        out.println(request.getProtocol());
 | 
			
		||||
        out.println("</td></tr><tr><td>");
 | 
			
		||||
        out.println(rb.getString("requestinfo.label.pathinfo"));
 | 
			
		||||
        out.println("</td><td>");        
 | 
			
		||||
        out.println(HTMLFilter.filter(request.getPathInfo()));
 | 
			
		||||
        out.println("</td></tr><tr><td>");
 | 
			
		||||
        out.println(rb.getString("requestinfo.label.remoteaddr"));
 | 
			
		||||
 | 
			
		||||
 	String cipherSuite=
 | 
			
		||||
 	    (String)request.getAttribute("javax.servlet.request.cipher_suite");
 | 
			
		||||
        out.println("</td><td>");                
 | 
			
		||||
        out.println(request.getRemoteAddr());
 | 
			
		||||
        out.println("</table>");
 | 
			
		||||
 | 
			
		||||
 	if(cipherSuite!=null){
 | 
			
		||||
 	    out.println("</td></tr><tr><td>");	
 | 
			
		||||
 	    out.println("SSLCipherSuite:");
 | 
			
		||||
 	    out.println("</td>");
 | 
			
		||||
 	    out.println("<td>");	    
 | 
			
		||||
 	    out.println(request.getAttribute("javax.servlet.request.cipher_suite"));
 | 
			
		||||
	    out.println("</td>");	    
 | 
			
		||||
 	}
 | 
			
		||||
	
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void doPost(HttpServletRequest request,
 | 
			
		||||
                      HttpServletResponse response)
 | 
			
		||||
        throws IOException, ServletException
 | 
			
		||||
    {
 | 
			
		||||
        doGet(request, response);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,106 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
/* $Id: RequestParamExample.java 500674 2007-01-27 23:15:00Z markt $
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
import java.io.*;
 | 
			
		||||
import java.util.*;
 | 
			
		||||
import javax.servlet.*;
 | 
			
		||||
import javax.servlet.http.*;
 | 
			
		||||
 | 
			
		||||
import util.HTMLFilter;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Example servlet showing request headers
 | 
			
		||||
 *
 | 
			
		||||
 * @author James Duncan Davidson <duncan@eng.sun.com>
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
public class RequestParamExample extends HttpServlet {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    ResourceBundle rb = ResourceBundle.getBundle("LocalStrings");
 | 
			
		||||
    
 | 
			
		||||
    public void doGet(HttpServletRequest request,
 | 
			
		||||
                      HttpServletResponse response)
 | 
			
		||||
        throws IOException, ServletException
 | 
			
		||||
    {
 | 
			
		||||
        response.setContentType("text/html");
 | 
			
		||||
 | 
			
		||||
        PrintWriter out = response.getWriter();
 | 
			
		||||
        out.println("<html>");
 | 
			
		||||
        out.println("<body>");
 | 
			
		||||
        out.println("<head>");
 | 
			
		||||
 | 
			
		||||
        String title = rb.getString("requestparams.title");
 | 
			
		||||
        out.println("<title>" + title + "</title>");
 | 
			
		||||
        out.println("</head>");
 | 
			
		||||
        out.println("<body bgcolor=\"white\">");
 | 
			
		||||
 | 
			
		||||
        // img stuff not req'd for source code html showing
 | 
			
		||||
 | 
			
		||||
	// all links relative
 | 
			
		||||
 | 
			
		||||
        // XXX
 | 
			
		||||
        // making these absolute till we work out the
 | 
			
		||||
        // addition of a PathInfo issue 
 | 
			
		||||
	
 | 
			
		||||
        out.println("<a href=\"../reqparams.html\">");
 | 
			
		||||
        out.println("<img src=\"../images/code.gif\" height=24 " +
 | 
			
		||||
                    "width=24 align=right border=0 alt=\"view code\"></a>");
 | 
			
		||||
        out.println("<a href=\"../index.html\">");
 | 
			
		||||
        out.println("<img src=\"../images/return.gif\" height=24 " +
 | 
			
		||||
                    "width=24 align=right border=0 alt=\"return\"></a>");
 | 
			
		||||
 | 
			
		||||
        out.println("<h3>" + title + "</h3>");
 | 
			
		||||
        String firstName = request.getParameter("firstname");
 | 
			
		||||
        String lastName = request.getParameter("lastname");
 | 
			
		||||
        out.println(rb.getString("requestparams.params-in-req") + "<br>");
 | 
			
		||||
        if (firstName != null || lastName != null) {
 | 
			
		||||
            out.println(rb.getString("requestparams.firstname"));
 | 
			
		||||
            out.println(" = " + HTMLFilter.filter(firstName) + "<br>");
 | 
			
		||||
            out.println(rb.getString("requestparams.lastname"));
 | 
			
		||||
            out.println(" = " + HTMLFilter.filter(lastName));
 | 
			
		||||
        } else {
 | 
			
		||||
            out.println(rb.getString("requestparams.no-params"));
 | 
			
		||||
        }
 | 
			
		||||
        out.println("<P>");
 | 
			
		||||
        out.print("<form action=\"");
 | 
			
		||||
        out.print("RequestParamExample\" ");
 | 
			
		||||
        out.println("method=POST>");
 | 
			
		||||
        out.println(rb.getString("requestparams.firstname"));
 | 
			
		||||
        out.println("<input type=text size=20 name=firstname>");
 | 
			
		||||
        out.println("<br>");
 | 
			
		||||
        out.println(rb.getString("requestparams.lastname"));
 | 
			
		||||
        out.println("<input type=text size=20 name=lastname>");
 | 
			
		||||
        out.println("<br>");
 | 
			
		||||
        out.println("<input type=submit>");
 | 
			
		||||
        out.println("</form>");
 | 
			
		||||
 | 
			
		||||
        out.println("</body>");
 | 
			
		||||
        out.println("</html>");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void doPost(HttpServletRequest request,
 | 
			
		||||
                      HttpServletResponse response)
 | 
			
		||||
        throws IOException, ServletException
 | 
			
		||||
    {
 | 
			
		||||
        doGet(request, response);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,140 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
/* $Id: SessionExample.java 500674 2007-01-27 23:15:00Z markt $
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
import java.io.*;
 | 
			
		||||
import java.util.*;
 | 
			
		||||
import javax.servlet.*;
 | 
			
		||||
import javax.servlet.http.*;
 | 
			
		||||
 | 
			
		||||
import util.HTMLFilter;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Example servlet showing request headers
 | 
			
		||||
 *
 | 
			
		||||
 * @author James Duncan Davidson <duncan@eng.sun.com>
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
public class SessionExample extends HttpServlet {
 | 
			
		||||
 | 
			
		||||
    ResourceBundle rb = ResourceBundle.getBundle("LocalStrings");
 | 
			
		||||
    
 | 
			
		||||
    public void doGet(HttpServletRequest request,
 | 
			
		||||
                      HttpServletResponse response)
 | 
			
		||||
        throws IOException, ServletException
 | 
			
		||||
    {
 | 
			
		||||
        response.setContentType("text/html");
 | 
			
		||||
 | 
			
		||||
        PrintWriter out = response.getWriter();
 | 
			
		||||
        out.println("<html>");
 | 
			
		||||
        out.println("<body bgcolor=\"white\">");
 | 
			
		||||
        out.println("<head>");
 | 
			
		||||
 | 
			
		||||
        String title = rb.getString("sessions.title");
 | 
			
		||||
        out.println("<title>" + title + "</title>");
 | 
			
		||||
        out.println("</head>");
 | 
			
		||||
        out.println("<body>");
 | 
			
		||||
 | 
			
		||||
        // img stuff not req'd for source code html showing
 | 
			
		||||
	// relative links everywhere!
 | 
			
		||||
 | 
			
		||||
        // XXX
 | 
			
		||||
        // making these absolute till we work out the
 | 
			
		||||
        // addition of a PathInfo issue 
 | 
			
		||||
	
 | 
			
		||||
        out.println("<a href=\"../sessions.html\">");
 | 
			
		||||
        out.println("<img src=\"../images/code.gif\" height=24 " +
 | 
			
		||||
                    "width=24 align=right border=0 alt=\"view code\"></a>");
 | 
			
		||||
        out.println("<a href=\"../index.html\">");
 | 
			
		||||
        out.println("<img src=\"../images/return.gif\" height=24 " +
 | 
			
		||||
                    "width=24 align=right border=0 alt=\"return\"></a>");
 | 
			
		||||
 | 
			
		||||
        out.println("<h3>" + title + "</h3>");
 | 
			
		||||
 | 
			
		||||
        HttpSession session = request.getSession(true);
 | 
			
		||||
        out.println(rb.getString("sessions.id") + " " + session.getId());
 | 
			
		||||
        out.println("<br>");
 | 
			
		||||
        out.println(rb.getString("sessions.created") + " ");
 | 
			
		||||
        out.println(new Date(session.getCreationTime()) + "<br>");
 | 
			
		||||
        out.println(rb.getString("sessions.lastaccessed") + " ");
 | 
			
		||||
        out.println(new Date(session.getLastAccessedTime()));
 | 
			
		||||
 | 
			
		||||
        String dataName = request.getParameter("dataname");
 | 
			
		||||
        String dataValue = request.getParameter("datavalue");
 | 
			
		||||
        if (dataName != null && dataValue != null) {
 | 
			
		||||
            session.setAttribute(dataName, dataValue);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        out.println("<P>");
 | 
			
		||||
        out.println(rb.getString("sessions.data") + "<br>");
 | 
			
		||||
        Enumeration names = session.getAttributeNames();
 | 
			
		||||
        while (names.hasMoreElements()) {
 | 
			
		||||
            String name = (String) names.nextElement(); 
 | 
			
		||||
            String value = session.getAttribute(name).toString();
 | 
			
		||||
            out.println(HTMLFilter.filter(name) + " = " 
 | 
			
		||||
                        + HTMLFilter.filter(value) + "<br>");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        out.println("<P>");
 | 
			
		||||
        out.print("<form action=\"");
 | 
			
		||||
	out.print(response.encodeURL("SessionExample"));
 | 
			
		||||
        out.print("\" ");
 | 
			
		||||
        out.println("method=POST>");
 | 
			
		||||
        out.println(rb.getString("sessions.dataname"));
 | 
			
		||||
        out.println("<input type=text size=20 name=dataname>");
 | 
			
		||||
        out.println("<br>");
 | 
			
		||||
        out.println(rb.getString("sessions.datavalue"));
 | 
			
		||||
        out.println("<input type=text size=20 name=datavalue>");
 | 
			
		||||
        out.println("<br>");
 | 
			
		||||
        out.println("<input type=submit>");
 | 
			
		||||
        out.println("</form>");
 | 
			
		||||
 | 
			
		||||
        out.println("<P>GET based form:<br>");
 | 
			
		||||
        out.print("<form action=\"");
 | 
			
		||||
	out.print(response.encodeURL("SessionExample"));
 | 
			
		||||
        out.print("\" ");
 | 
			
		||||
        out.println("method=GET>");
 | 
			
		||||
        out.println(rb.getString("sessions.dataname"));
 | 
			
		||||
        out.println("<input type=text size=20 name=dataname>");
 | 
			
		||||
        out.println("<br>");
 | 
			
		||||
        out.println(rb.getString("sessions.datavalue"));
 | 
			
		||||
        out.println("<input type=text size=20 name=datavalue>");
 | 
			
		||||
        out.println("<br>");
 | 
			
		||||
        out.println("<input type=submit>");
 | 
			
		||||
        out.println("</form>");
 | 
			
		||||
 | 
			
		||||
        out.print("<p><a href=\"");
 | 
			
		||||
	out.print(response.encodeURL("SessionExample?dataname=foo&datavalue=bar"));
 | 
			
		||||
	out.println("\" >URL encoded </a>");
 | 
			
		||||
	
 | 
			
		||||
        out.println("</body>");
 | 
			
		||||
        out.println("</html>");
 | 
			
		||||
        
 | 
			
		||||
        out.println("</body>");
 | 
			
		||||
        out.println("</html>");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void doPost(HttpServletRequest request,
 | 
			
		||||
                      HttpServletResponse response)
 | 
			
		||||
        throws IOException, ServletException
 | 
			
		||||
    {
 | 
			
		||||
        doGet(request, response);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,72 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
package cal;
 | 
			
		||||
 | 
			
		||||
import java.util.Hashtable;
 | 
			
		||||
import javax.servlet.http.*;
 | 
			
		||||
 | 
			
		||||
public class Entries {
 | 
			
		||||
 | 
			
		||||
  private Hashtable entries;
 | 
			
		||||
  private static final String[] time = {"8am", "9am", "10am", "11am", "12pm", 
 | 
			
		||||
					"1pm", "2pm", "3pm", "4pm", "5pm", "6pm",
 | 
			
		||||
					"7pm", "8pm" };
 | 
			
		||||
  public static final int rows = 12;
 | 
			
		||||
 | 
			
		||||
  public Entries () {   
 | 
			
		||||
   entries = new Hashtable (rows);
 | 
			
		||||
   for (int i=0; i < rows; i++) {
 | 
			
		||||
     entries.put (time[i], new Entry(time[i]));
 | 
			
		||||
   }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public int getRows () {
 | 
			
		||||
    return rows;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public Entry getEntry (int index) {
 | 
			
		||||
    return (Entry)this.entries.get(time[index]);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public int getIndex (String tm) {
 | 
			
		||||
    for (int i=0; i<rows; i++)
 | 
			
		||||
      if(tm.equals(time[i])) return i;
 | 
			
		||||
    return -1;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public void processRequest (HttpServletRequest request, String tm) {
 | 
			
		||||
    int index = getIndex (tm);
 | 
			
		||||
    if (index >= 0) {
 | 
			
		||||
      String descr = request.getParameter ("description");
 | 
			
		||||
      ((Entry)entries.get(time[index])).setDescription (descr);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,55 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
package cal;
 | 
			
		||||
 | 
			
		||||
public class Entry {
 | 
			
		||||
 | 
			
		||||
  String hour;
 | 
			
		||||
  String description;
 | 
			
		||||
  String color;
 | 
			
		||||
 | 
			
		||||
  public Entry (String hour) {
 | 
			
		||||
    this.hour = hour;
 | 
			
		||||
    this.description = "";
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public String getHour () {
 | 
			
		||||
    return this.hour;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public String getColor () {
 | 
			
		||||
    if (description.equals("")) return "lightblue";
 | 
			
		||||
    else return "red";
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public String getDescription () {
 | 
			
		||||
    if (description.equals("")) return "None";
 | 
			
		||||
    else return this.description;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public void setDescription (String descr) {
 | 
			
		||||
    description = descr;
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,154 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
package cal;
 | 
			
		||||
 | 
			
		||||
import java.util.*;
 | 
			
		||||
 | 
			
		||||
public class JspCalendar {
 | 
			
		||||
    Calendar  calendar = null;
 | 
			
		||||
    Date currentDate;
 | 
			
		||||
 | 
			
		||||
    public JspCalendar() {
 | 
			
		||||
	calendar = Calendar.getInstance();
 | 
			
		||||
	Date trialTime = new Date();
 | 
			
		||||
	calendar.setTime(trialTime);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public int getYear() {
 | 
			
		||||
	return calendar.get(Calendar.YEAR);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public String getMonth() {
 | 
			
		||||
	int m = getMonthInt();
 | 
			
		||||
	String[] months = new String [] { "January", "February", "March",
 | 
			
		||||
					"April", "May", "June",
 | 
			
		||||
					"July", "August", "September",
 | 
			
		||||
					"October", "November", "December" };
 | 
			
		||||
	if (m > 12)
 | 
			
		||||
	    return "Unknown to Man";
 | 
			
		||||
	
 | 
			
		||||
	return months[m - 1];
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getDay() {
 | 
			
		||||
	int x = getDayOfWeek();
 | 
			
		||||
	String[] days = new String[] {"Sunday", "Monday", "Tuesday", "Wednesday", 
 | 
			
		||||
				      "Thursday", "Friday", "Saturday"};
 | 
			
		||||
 | 
			
		||||
	if (x > 7)
 | 
			
		||||
	    return "Unknown to Man";
 | 
			
		||||
 | 
			
		||||
	return days[x - 1];
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public int getMonthInt() {
 | 
			
		||||
	return 1 + calendar.get(Calendar.MONTH);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getDate() {
 | 
			
		||||
	return getMonthInt() + "/" + getDayOfMonth() + "/" +  getYear();	
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getCurrentDate() {
 | 
			
		||||
        Date dt = new Date ();
 | 
			
		||||
	calendar.setTime (dt);
 | 
			
		||||
	return getMonthInt() + "/" + getDayOfMonth() + "/" +  getYear();
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getNextDate() {
 | 
			
		||||
        calendar.set (Calendar.DAY_OF_MONTH, getDayOfMonth() + 1);
 | 
			
		||||
	return getDate ();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getPrevDate() {
 | 
			
		||||
        calendar.set (Calendar.DAY_OF_MONTH, getDayOfMonth() - 1);
 | 
			
		||||
	return getDate ();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getTime() {
 | 
			
		||||
	return getHour() + ":" + getMinute() + ":" + getSecond();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getDayOfMonth() {
 | 
			
		||||
	return calendar.get(Calendar.DAY_OF_MONTH);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getDayOfYear() {
 | 
			
		||||
	return calendar.get(Calendar.DAY_OF_YEAR);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getWeekOfYear() {
 | 
			
		||||
	return calendar.get(Calendar.WEEK_OF_YEAR);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getWeekOfMonth() {
 | 
			
		||||
	return calendar.get(Calendar.WEEK_OF_MONTH);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getDayOfWeek() {
 | 
			
		||||
	return calendar.get(Calendar.DAY_OF_WEEK);
 | 
			
		||||
    }
 | 
			
		||||
     
 | 
			
		||||
    public int getHour() {
 | 
			
		||||
	return calendar.get(Calendar.HOUR_OF_DAY);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public int getMinute() {
 | 
			
		||||
	return calendar.get(Calendar.MINUTE);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public int getSecond() {
 | 
			
		||||
	return calendar.get(Calendar.SECOND);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
  
 | 
			
		||||
    public int getEra() {
 | 
			
		||||
	return calendar.get(Calendar.ERA);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getUSTimeZone() {
 | 
			
		||||
	String[] zones = new String[] {"Hawaii", "Alaskan", "Pacific",
 | 
			
		||||
				       "Mountain", "Central", "Eastern"};
 | 
			
		||||
	
 | 
			
		||||
	return zones[10 + getZoneOffset()];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getZoneOffset() {
 | 
			
		||||
	return calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public int getDSTOffset() {
 | 
			
		||||
	return calendar.get(Calendar.DST_OFFSET)/(60*60*1000);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    public int getAMPM() {
 | 
			
		||||
	return calendar.get(Calendar.AM_PM);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,100 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
package cal;
 | 
			
		||||
 | 
			
		||||
import javax.servlet.http.*;
 | 
			
		||||
import java.util.Hashtable;
 | 
			
		||||
 | 
			
		||||
public class TableBean {
 | 
			
		||||
 | 
			
		||||
  Hashtable table;
 | 
			
		||||
  JspCalendar JspCal;
 | 
			
		||||
  Entries entries;
 | 
			
		||||
  String date;
 | 
			
		||||
  String name = null;
 | 
			
		||||
  String email = null;
 | 
			
		||||
  boolean processError = false;
 | 
			
		||||
 | 
			
		||||
  public TableBean () {
 | 
			
		||||
    this.table = new Hashtable (10);
 | 
			
		||||
    this.JspCal = new JspCalendar ();
 | 
			
		||||
    this.date = JspCal.getCurrentDate ();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public void setName (String nm) {
 | 
			
		||||
    this.name = nm;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public String getName () {
 | 
			
		||||
    return this.name;
 | 
			
		||||
  }
 | 
			
		||||
  
 | 
			
		||||
  public void setEmail (String mail) {
 | 
			
		||||
    this.email = mail;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public String getEmail () {
 | 
			
		||||
    return this.email;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public String getDate () {
 | 
			
		||||
    return this.date;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public Entries getEntries () {
 | 
			
		||||
    return this.entries;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public void processRequest (HttpServletRequest request) {
 | 
			
		||||
 | 
			
		||||
    // Get the name and e-mail.
 | 
			
		||||
    this.processError = false;
 | 
			
		||||
    if (name == null || name.equals("")) setName(request.getParameter ("name"));  
 | 
			
		||||
    if (email == null || email.equals("")) setEmail(request.getParameter ("email"));
 | 
			
		||||
    if (name == null || email == null ||
 | 
			
		||||
		name.equals("") || email.equals("")) {
 | 
			
		||||
      this.processError = true;
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Get the date.
 | 
			
		||||
    String dateR = request.getParameter ("date");
 | 
			
		||||
    if (dateR == null) date = JspCal.getCurrentDate ();
 | 
			
		||||
    else if (dateR.equalsIgnoreCase("next")) date = JspCal.getNextDate ();
 | 
			
		||||
    else if (dateR.equalsIgnoreCase("prev")) date = JspCal.getPrevDate ();
 | 
			
		||||
 | 
			
		||||
    entries = (Entries) table.get (date);
 | 
			
		||||
    if (entries == null) {
 | 
			
		||||
      entries = new Entries ();
 | 
			
		||||
      table.put (date, entries);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // If time is provided add the event.
 | 
			
		||||
	String time = request.getParameter("time");
 | 
			
		||||
    if (time != null) entries.processRequest (request, time);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public boolean getProcessError () {
 | 
			
		||||
    return this.processError;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,256 @@
 | 
			
		||||
/*
 | 
			
		||||
 * 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.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
package chat;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.io.InputStream;
 | 
			
		||||
import java.io.PrintWriter;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
 | 
			
		||||
import org.apache.catalina.CometEvent;
 | 
			
		||||
import org.apache.catalina.CometProcessor;
 | 
			
		||||
 | 
			
		||||
import javax.servlet.ServletException;
 | 
			
		||||
import javax.servlet.http.HttpServlet;
 | 
			
		||||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Helper class to implement Comet functionality.
 | 
			
		||||
 */
 | 
			
		||||
public class ChatServlet
 | 
			
		||||
    extends HttpServlet implements CometProcessor {
 | 
			
		||||
 | 
			
		||||
    protected ArrayList<HttpServletResponse> connections = 
 | 
			
		||||
        new ArrayList<HttpServletResponse>();
 | 
			
		||||
    protected MessageSender messageSender = null;
 | 
			
		||||
    
 | 
			
		||||
    public void init() throws ServletException {
 | 
			
		||||
        messageSender = new MessageSender();
 | 
			
		||||
        Thread messageSenderThread = 
 | 
			
		||||
            new Thread(messageSender, "MessageSender[" + getServletContext().getContextPath() + "]");
 | 
			
		||||
        messageSenderThread.setDaemon(true);
 | 
			
		||||
        messageSenderThread.start();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void destroy() {
 | 
			
		||||
        connections.clear();
 | 
			
		||||
        messageSender.stop();
 | 
			
		||||
        messageSender = null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Process the given Comet event.
 | 
			
		||||
     * 
 | 
			
		||||
     * @param event The Comet event that will be processed
 | 
			
		||||
     * @throws IOException
 | 
			
		||||
     * @throws ServletException
 | 
			
		||||
     */
 | 
			
		||||
    public void event(CometEvent event)
 | 
			
		||||
        throws IOException, ServletException {
 | 
			
		||||
 | 
			
		||||
        // Note: There should really be two servlets in this example, to avoid
 | 
			
		||||
        // mixing Comet stuff with regular connection processing
 | 
			
		||||
        HttpServletRequest request = event.getHttpServletRequest();
 | 
			
		||||
        HttpServletResponse response = event.getHttpServletResponse();
 | 
			
		||||
        
 | 
			
		||||
        if (event.getEventType() == CometEvent.EventType.BEGIN) {
 | 
			
		||||
            String action = request.getParameter("action");
 | 
			
		||||
            if (action != null) {
 | 
			
		||||
                if ("login".equals(action)) {
 | 
			
		||||
                    String nickname = request.getParameter("nickname");
 | 
			
		||||
                    request.getSession(true).setAttribute("nickname", nickname);
 | 
			
		||||
                    response.sendRedirect("post.jsp");
 | 
			
		||||
                    event.close();
 | 
			
		||||
                    return;
 | 
			
		||||
                } else {
 | 
			
		||||
                    String nickname = (String) request.getSession(true).getAttribute("nickname");
 | 
			
		||||
                    String message = request.getParameter("message");
 | 
			
		||||
                    messageSender.send(nickname, message);
 | 
			
		||||
                    response.sendRedirect("post.jsp");
 | 
			
		||||
                    event.close();
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
                if (request.getSession(true).getAttribute("nickname") == null) {
 | 
			
		||||
                    // Redirect to "login"
 | 
			
		||||
                    log("Redirect to login for session: " + request.getSession(true).getId());
 | 
			
		||||
                    response.sendRedirect("login.jsp");
 | 
			
		||||
                    event.close();
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            begin(event, request, response);
 | 
			
		||||
        } else if (event.getEventType() == CometEvent.EventType.ERROR) {
 | 
			
		||||
            error(event, request, response);
 | 
			
		||||
        } else if (event.getEventType() == CometEvent.EventType.END) {
 | 
			
		||||
            end(event, request, response);
 | 
			
		||||
        } else if (event.getEventType() == CometEvent.EventType.READ) {
 | 
			
		||||
            read(event, request, response);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected void begin(CometEvent event, HttpServletRequest request, HttpServletResponse response)
 | 
			
		||||
        throws IOException, ServletException {
 | 
			
		||||
        log("Begin for session: " + request.getSession(true).getId());
 | 
			
		||||
        
 | 
			
		||||
        PrintWriter writer = response.getWriter();
 | 
			
		||||
        writer.println("<!doctype html public \"-//w3c//dtd html 4.0 transitional//en\">");
 | 
			
		||||
        writer.println("<html><head><title>JSP Chat</title></head><body bgcolor=\"#FFFFFF\">");
 | 
			
		||||
        writer.flush();
 | 
			
		||||
 | 
			
		||||
        synchronized(connections) {
 | 
			
		||||
            connections.add(response);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    protected void end(CometEvent event, HttpServletRequest request, HttpServletResponse response)
 | 
			
		||||
        throws IOException, ServletException {
 | 
			
		||||
        log("End for session: " + request.getSession(true).getId());
 | 
			
		||||
        synchronized(connections) {
 | 
			
		||||
            connections.remove(response);
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        PrintWriter writer = response.getWriter();
 | 
			
		||||
        writer.println("</body></html>");
 | 
			
		||||
        
 | 
			
		||||
        event.close();
 | 
			
		||||
        
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    protected void error(CometEvent event, HttpServletRequest request, HttpServletResponse response)
 | 
			
		||||
        throws IOException, ServletException {
 | 
			
		||||
        log("Error for session: " + request.getSession(true).getId());
 | 
			
		||||
        synchronized(connections) {
 | 
			
		||||
            connections.remove(response);
 | 
			
		||||
        }
 | 
			
		||||
        event.close();
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    protected void read(CometEvent event, HttpServletRequest request, HttpServletResponse response)
 | 
			
		||||
        throws IOException, ServletException {
 | 
			
		||||
        InputStream is = request.getInputStream();
 | 
			
		||||
        byte[] buf = new byte[512];
 | 
			
		||||
        while (is.available() > 0) {
 | 
			
		||||
            log("Available: " + is.available());
 | 
			
		||||
            int n = is.read(buf);
 | 
			
		||||
            if (n > 0) {
 | 
			
		||||
                log("Read " + n + " bytes: " + new String(buf, 0, n) 
 | 
			
		||||
                        + " for session: " + request.getSession(true).getId());
 | 
			
		||||
            } else if (n < 0) {
 | 
			
		||||
                log("End of file: " + n);
 | 
			
		||||
                end(event, request, response);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected void service(HttpServletRequest request, HttpServletResponse response)
 | 
			
		||||
        throws IOException, ServletException {
 | 
			
		||||
        // Compatibility method: equivalent method using the regular connection model
 | 
			
		||||
        PrintWriter writer = response.getWriter();
 | 
			
		||||
        writer.println("<!doctype html public \"-//w3c//dtd html 4.0 transitional//en\">");
 | 
			
		||||
        writer.println("<html><head><title>JSP Chat</title></head><body bgcolor=\"#FFFFFF\">");
 | 
			
		||||
        writer.println("Chat example only supports Comet processing");
 | 
			
		||||
        writer.println("</body></html>");
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Poller class.
 | 
			
		||||
     */
 | 
			
		||||
    public class MessageSender implements Runnable {
 | 
			
		||||
 | 
			
		||||
        protected boolean running = true;
 | 
			
		||||
        protected ArrayList<String> messages = new ArrayList<String>();
 | 
			
		||||
        
 | 
			
		||||
        public MessageSender() {
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        public void stop() {
 | 
			
		||||
            running = false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Add specified socket and associated pool to the poller. The socket will
 | 
			
		||||
         * be added to a temporary array, and polled first after a maximum amount
 | 
			
		||||
         * of time equal to pollTime (in most cases, latency will be much lower,
 | 
			
		||||
         * however).
 | 
			
		||||
         *
 | 
			
		||||
         * @param socket to add to the poller
 | 
			
		||||
         */
 | 
			
		||||
        public void send(String user, String message) {
 | 
			
		||||
            synchronized (messages) {
 | 
			
		||||
                messages.add("[" + user + "]: " + message);
 | 
			
		||||
                messages.notify();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * The background thread that listens for incoming TCP/IP connections and
 | 
			
		||||
         * hands them off to an appropriate processor.
 | 
			
		||||
         */
 | 
			
		||||
        public void run() {
 | 
			
		||||
 | 
			
		||||
            // Loop until we receive a shutdown command
 | 
			
		||||
            while (running) {
 | 
			
		||||
                // Loop if endpoint is paused
 | 
			
		||||
 | 
			
		||||
                if (messages.size() == 0) {
 | 
			
		||||
                    try {
 | 
			
		||||
                        synchronized (messages) {
 | 
			
		||||
                            messages.wait();
 | 
			
		||||
                        }
 | 
			
		||||
                    } catch (InterruptedException e) {
 | 
			
		||||
                        // Ignore
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                synchronized (connections) {
 | 
			
		||||
                    String[] pendingMessages = null;
 | 
			
		||||
                    synchronized (messages) {
 | 
			
		||||
                        pendingMessages = messages.toArray(new String[0]);
 | 
			
		||||
                        messages.clear();
 | 
			
		||||
                    }
 | 
			
		||||
                    for (int i = 0; i < connections.size(); i++) {
 | 
			
		||||
                        try {
 | 
			
		||||
                            PrintWriter writer = connections.get(i).getWriter();
 | 
			
		||||
                            for (int j = 0; j < pendingMessages.length; j++) {
 | 
			
		||||
                                // FIXME: Add HTML filtering
 | 
			
		||||
                                writer.println(pendingMessages[j] + "<br/>");
 | 
			
		||||
                            }
 | 
			
		||||
                            writer.flush();
 | 
			
		||||
                        } catch (IOException e) {
 | 
			
		||||
                            log("IOExeption sending message", e);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,31 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
package checkbox;
 | 
			
		||||
 | 
			
		||||
public class CheckTest {
 | 
			
		||||
 | 
			
		||||
    String b[] = new String[] { "1", "2", "3", "4" };
 | 
			
		||||
 | 
			
		||||
    public String[] getFruit() {
 | 
			
		||||
	return b;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setFruit(String [] b) {
 | 
			
		||||
	this.b = b;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,115 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
package colors;
 | 
			
		||||
 | 
			
		||||
import javax.servlet.http.*;
 | 
			
		||||
 | 
			
		||||
public class ColorGameBean {
 | 
			
		||||
 | 
			
		||||
    private String background = "yellow";
 | 
			
		||||
    private String foreground = "red";
 | 
			
		||||
    private String color1 = foreground;
 | 
			
		||||
    private String color2 = background;
 | 
			
		||||
    private String hint = "no";
 | 
			
		||||
    private int attempts = 0;
 | 
			
		||||
	private int intval = 0;
 | 
			
		||||
    private boolean tookHints = false;
 | 
			
		||||
 | 
			
		||||
    public void processRequest(HttpServletRequest request) {
 | 
			
		||||
 | 
			
		||||
	// background = "yellow";
 | 
			
		||||
	// foreground = "red";
 | 
			
		||||
 | 
			
		||||
	if (! color1.equals(foreground)) {
 | 
			
		||||
	    if (color1.equalsIgnoreCase("black") ||
 | 
			
		||||
			color1.equalsIgnoreCase("cyan")) {
 | 
			
		||||
			background = color1;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (! color2.equals(background)) {
 | 
			
		||||
	    if (color2.equalsIgnoreCase("black") ||
 | 
			
		||||
			color2.equalsIgnoreCase("cyan")) {
 | 
			
		||||
			foreground = color2;
 | 
			
		||||
	    }
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	attempts++;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setColor2(String x) {
 | 
			
		||||
	color2 = x;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setColor1(String x) {
 | 
			
		||||
	color1 = x;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setAction(String x) {
 | 
			
		||||
	if (!tookHints)
 | 
			
		||||
	    tookHints = x.equalsIgnoreCase("Hint");
 | 
			
		||||
	hint = x;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getColor2() {
 | 
			
		||||
	 return background;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getColor1() {
 | 
			
		||||
	 return foreground;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getAttempts() {
 | 
			
		||||
	return attempts;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean getHint() {
 | 
			
		||||
	return hint.equalsIgnoreCase("Hint");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean getSuccess() {
 | 
			
		||||
	if (background.equalsIgnoreCase("black") ||
 | 
			
		||||
	    background.equalsIgnoreCase("cyan")) {
 | 
			
		||||
	
 | 
			
		||||
	    if (foreground.equalsIgnoreCase("black") ||
 | 
			
		||||
		foreground.equalsIgnoreCase("cyan"))
 | 
			
		||||
		return true;
 | 
			
		||||
	    else
 | 
			
		||||
		return false;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public boolean getHintTaken() {
 | 
			
		||||
	return tookHints;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void reset() {
 | 
			
		||||
	foreground = "red";
 | 
			
		||||
	background = "yellow";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setIntval(int value) {
 | 
			
		||||
	intval = value;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
    public int getIntval() {
 | 
			
		||||
	return intval;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,219 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
package compressionFilters;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.util.Enumeration;
 | 
			
		||||
import javax.servlet.Filter;
 | 
			
		||||
import javax.servlet.FilterChain;
 | 
			
		||||
import javax.servlet.FilterConfig;
 | 
			
		||||
import javax.servlet.ServletException;
 | 
			
		||||
import javax.servlet.ServletRequest;
 | 
			
		||||
import javax.servlet.ServletResponse;
 | 
			
		||||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Implementation of <code>javax.servlet.Filter</code> used to compress
 | 
			
		||||
 * the ServletResponse if it is bigger than a threshold.
 | 
			
		||||
 *
 | 
			
		||||
 * @author Amy Roh
 | 
			
		||||
 * @author Dmitri Valdin
 | 
			
		||||
 * @version $Revision: 467217 $, $Date: 2006-10-24 05:14:34 +0200 (mar., 24 oct. 2006) $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
public class CompressionFilter implements Filter{
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The filter configuration object we are associated with.  If this value
 | 
			
		||||
     * is null, this filter instance is not currently configured.
 | 
			
		||||
     */
 | 
			
		||||
    private FilterConfig config = null;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Minimal reasonable threshold
 | 
			
		||||
     */
 | 
			
		||||
    private int minThreshold = 128;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The threshold number to compress
 | 
			
		||||
     */
 | 
			
		||||
    protected int compressionThreshold;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Debug level for this filter
 | 
			
		||||
     */
 | 
			
		||||
    private int debug = 0;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Place this filter into service.
 | 
			
		||||
     *
 | 
			
		||||
     * @param filterConfig The filter configuration object
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    public void init(FilterConfig filterConfig) {
 | 
			
		||||
 | 
			
		||||
        config = filterConfig;
 | 
			
		||||
        if (filterConfig != null) {
 | 
			
		||||
            String value = filterConfig.getInitParameter("debug");
 | 
			
		||||
            if (value!=null) {
 | 
			
		||||
                debug = Integer.parseInt(value);
 | 
			
		||||
            } else {
 | 
			
		||||
                debug = 0;
 | 
			
		||||
            }
 | 
			
		||||
            String str = filterConfig.getInitParameter("compressionThreshold");
 | 
			
		||||
            if (str!=null) {
 | 
			
		||||
                compressionThreshold = Integer.parseInt(str);
 | 
			
		||||
                if (compressionThreshold != 0 && compressionThreshold < minThreshold) {
 | 
			
		||||
                    if (debug > 0) {
 | 
			
		||||
                        System.out.println("compressionThreshold should be either 0 - no compression or >= " + minThreshold);
 | 
			
		||||
                        System.out.println("compressionThreshold set to " + minThreshold);
 | 
			
		||||
                    }
 | 
			
		||||
                    compressionThreshold = minThreshold;
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
                compressionThreshold = 0;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        } else {
 | 
			
		||||
            compressionThreshold = 0;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
    * Take this filter out of service.
 | 
			
		||||
    */
 | 
			
		||||
    public void destroy() {
 | 
			
		||||
 | 
			
		||||
        this.config = null;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The <code>doFilter</code> method of the Filter is called by the container
 | 
			
		||||
     * each time a request/response pair is passed through the chain due
 | 
			
		||||
     * to a client request for a resource at the end of the chain.
 | 
			
		||||
     * The FilterChain passed into this method allows the Filter to pass on the
 | 
			
		||||
     * request and response to the next entity in the chain.<p>
 | 
			
		||||
     * This method first examines the request to check whether the client support
 | 
			
		||||
     * compression. <br>
 | 
			
		||||
     * It simply just pass the request and response if there is no support for
 | 
			
		||||
     * compression.<br>
 | 
			
		||||
     * If the compression support is available, it creates a
 | 
			
		||||
     * CompressionServletResponseWrapper object which compresses the content and
 | 
			
		||||
     * modifies the header if the content length is big enough.
 | 
			
		||||
     * It then invokes the next entity in the chain using the FilterChain object
 | 
			
		||||
     * (<code>chain.doFilter()</code>), <br>
 | 
			
		||||
     **/
 | 
			
		||||
 | 
			
		||||
    public void doFilter ( ServletRequest request, ServletResponse response,
 | 
			
		||||
                        FilterChain chain ) throws IOException, ServletException {
 | 
			
		||||
 | 
			
		||||
        if (debug > 0) {
 | 
			
		||||
            System.out.println("@doFilter");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (compressionThreshold == 0) {
 | 
			
		||||
            if (debug > 0) {
 | 
			
		||||
                System.out.println("doFilter gets called, but compressionTreshold is set to 0 - no compression");
 | 
			
		||||
            }
 | 
			
		||||
            chain.doFilter(request, response);
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        boolean supportCompression = false;
 | 
			
		||||
        if (request instanceof HttpServletRequest) {
 | 
			
		||||
            if (debug > 1) {
 | 
			
		||||
                System.out.println("requestURI = " + ((HttpServletRequest)request).getRequestURI());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Are we allowed to compress ?
 | 
			
		||||
            String s = (String) ((HttpServletRequest)request).getParameter("gzip");
 | 
			
		||||
            if ("false".equals(s)) {
 | 
			
		||||
                if (debug > 0) {
 | 
			
		||||
                    System.out.println("got parameter gzip=false --> don't compress, just chain filter");
 | 
			
		||||
                }
 | 
			
		||||
                chain.doFilter(request, response);
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            Enumeration e =
 | 
			
		||||
                ((HttpServletRequest)request).getHeaders("Accept-Encoding");
 | 
			
		||||
            while (e.hasMoreElements()) {
 | 
			
		||||
                String name = (String)e.nextElement();
 | 
			
		||||
                if (name.indexOf("gzip") != -1) {
 | 
			
		||||
                    if (debug > 0) {
 | 
			
		||||
                        System.out.println("supports compression");
 | 
			
		||||
                    }
 | 
			
		||||
                    supportCompression = true;
 | 
			
		||||
                } else {
 | 
			
		||||
                    if (debug > 0) {
 | 
			
		||||
                        System.out.println("no support for compresion");
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (!supportCompression) {
 | 
			
		||||
            if (debug > 0) {
 | 
			
		||||
                System.out.println("doFilter gets called wo compression");
 | 
			
		||||
            }
 | 
			
		||||
            chain.doFilter(request, response);
 | 
			
		||||
            return;
 | 
			
		||||
        } else {
 | 
			
		||||
            if (response instanceof HttpServletResponse) {
 | 
			
		||||
                CompressionServletResponseWrapper wrappedResponse =
 | 
			
		||||
                    new CompressionServletResponseWrapper((HttpServletResponse)response);
 | 
			
		||||
                wrappedResponse.setDebugLevel(debug);
 | 
			
		||||
                wrappedResponse.setCompressionThreshold(compressionThreshold);
 | 
			
		||||
                if (debug > 0) {
 | 
			
		||||
                    System.out.println("doFilter gets called with compression");
 | 
			
		||||
                }
 | 
			
		||||
                try {
 | 
			
		||||
                    chain.doFilter(request, wrappedResponse);
 | 
			
		||||
                } finally {
 | 
			
		||||
                    wrappedResponse.finishResponse();
 | 
			
		||||
                }
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Set filter config
 | 
			
		||||
     * This function is equivalent to init. Required by Weblogic 6.1
 | 
			
		||||
     *
 | 
			
		||||
     * @param filterConfig The filter configuration object
 | 
			
		||||
     */
 | 
			
		||||
    public void setFilterConfig(FilterConfig filterConfig) {
 | 
			
		||||
        init(filterConfig);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return filter config
 | 
			
		||||
     * Required by Weblogic 6.1
 | 
			
		||||
     */
 | 
			
		||||
    public FilterConfig getFilterConfig() {
 | 
			
		||||
        return config;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,57 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
package compressionFilters;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.util.Enumeration;
 | 
			
		||||
import javax.servlet.*;
 | 
			
		||||
import javax.servlet.http.*;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Very Simple test servlet to test compression filter
 | 
			
		||||
 * @author Amy Roh
 | 
			
		||||
 * @version $Revision: 500668 $, $Date: 2007-01-28 00:07:51 +0100 (dim., 28 janv. 2007) $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
public class CompressionFilterTestServlet extends HttpServlet {
 | 
			
		||||
 | 
			
		||||
    public void doGet(HttpServletRequest request, HttpServletResponse response)
 | 
			
		||||
        throws ServletException, IOException {
 | 
			
		||||
 | 
			
		||||
        ServletOutputStream out = response.getOutputStream();
 | 
			
		||||
        response.setContentType("text/plain");
 | 
			
		||||
 | 
			
		||||
        Enumeration e = ((HttpServletRequest)request).getHeaders("Accept-Encoding");
 | 
			
		||||
        while (e.hasMoreElements()) {
 | 
			
		||||
            String name = (String)e.nextElement();
 | 
			
		||||
            out.println(name);
 | 
			
		||||
            if (name.indexOf("gzip") != -1) {
 | 
			
		||||
                out.println("gzip supported -- able to compress");
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                out.println("gzip not supported");
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        out.println("Compression Filter Test Servlet");
 | 
			
		||||
        out.close();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,324 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
package compressionFilters;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.io.OutputStream;
 | 
			
		||||
import java.util.zip.GZIPOutputStream;
 | 
			
		||||
import javax.servlet.ServletOutputStream;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Implementation of <b>ServletOutputStream</b> that works with
 | 
			
		||||
 * the CompressionServletResponseWrapper implementation.
 | 
			
		||||
 *
 | 
			
		||||
 * @author Amy Roh
 | 
			
		||||
 * @author Dmitri Valdin
 | 
			
		||||
 * @version $Revision: 500668 $, $Date: 2007-01-28 00:07:51 +0100 (dim., 28 janv. 2007) $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
public class CompressionResponseStream
 | 
			
		||||
    extends ServletOutputStream {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ----------------------------------------------------------- Constructors
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Construct a servlet output stream associated with the specified Response.
 | 
			
		||||
     *
 | 
			
		||||
     * @param response The associated response
 | 
			
		||||
     */
 | 
			
		||||
    public CompressionResponseStream(HttpServletResponse response) throws IOException{
 | 
			
		||||
 | 
			
		||||
        super();
 | 
			
		||||
        closed = false;
 | 
			
		||||
        this.response = response;
 | 
			
		||||
        this.output = response.getOutputStream();
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ----------------------------------------------------- Instance Variables
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The threshold number which decides to compress or not.
 | 
			
		||||
     * Users can configure in web.xml to set it to fit their needs.
 | 
			
		||||
     */
 | 
			
		||||
    protected int compressionThreshold = 0;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Debug level
 | 
			
		||||
     */
 | 
			
		||||
    private int debug = 0;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The buffer through which all of our output bytes are passed.
 | 
			
		||||
     */
 | 
			
		||||
    protected byte[] buffer = null;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The number of data bytes currently in the buffer.
 | 
			
		||||
     */
 | 
			
		||||
    protected int bufferCount = 0;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The underlying gzip output stream to which we should write data.
 | 
			
		||||
     */
 | 
			
		||||
    protected OutputStream gzipstream = null;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Has this stream been closed?
 | 
			
		||||
     */
 | 
			
		||||
    protected boolean closed = false;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The content length past which we will not write, or -1 if there is
 | 
			
		||||
     * no defined content length.
 | 
			
		||||
     */
 | 
			
		||||
    protected int length = -1;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The response with which this servlet output stream is associated.
 | 
			
		||||
     */
 | 
			
		||||
    protected HttpServletResponse response = null;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The underlying servket output stream to which we should write data.
 | 
			
		||||
     */
 | 
			
		||||
    protected ServletOutputStream output = null;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // --------------------------------------------------------- Public Methods
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Set debug level
 | 
			
		||||
     */
 | 
			
		||||
    public void setDebugLevel(int debug) {
 | 
			
		||||
        this.debug = debug;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Set the compressionThreshold number and create buffer for this size
 | 
			
		||||
     */
 | 
			
		||||
    protected void setBuffer(int threshold) {
 | 
			
		||||
        compressionThreshold = threshold;
 | 
			
		||||
        buffer = new byte[compressionThreshold];
 | 
			
		||||
        if (debug > 1) {
 | 
			
		||||
            System.out.println("buffer is set to "+compressionThreshold);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Close this output stream, causing any buffered data to be flushed and
 | 
			
		||||
     * any further output data to throw an IOException.
 | 
			
		||||
     */
 | 
			
		||||
    public void close() throws IOException {
 | 
			
		||||
 | 
			
		||||
        if (debug > 1) {
 | 
			
		||||
            System.out.println("close() @ CompressionResponseStream");
 | 
			
		||||
        }
 | 
			
		||||
        if (closed)
 | 
			
		||||
            throw new IOException("This output stream has already been closed");
 | 
			
		||||
 | 
			
		||||
        if (gzipstream != null) {
 | 
			
		||||
            flushToGZip();
 | 
			
		||||
            gzipstream.close();
 | 
			
		||||
            gzipstream = null;
 | 
			
		||||
        } else {
 | 
			
		||||
            if (bufferCount > 0) {
 | 
			
		||||
                if (debug > 2) {
 | 
			
		||||
                    System.out.print("output.write(");
 | 
			
		||||
                    System.out.write(buffer, 0, bufferCount);
 | 
			
		||||
                    System.out.println(")");
 | 
			
		||||
                }
 | 
			
		||||
                output.write(buffer, 0, bufferCount);
 | 
			
		||||
                bufferCount = 0;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        output.close();
 | 
			
		||||
        closed = true;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Flush any buffered data for this output stream, which also causes the
 | 
			
		||||
     * response to be committed.
 | 
			
		||||
     */
 | 
			
		||||
    public void flush() throws IOException {
 | 
			
		||||
 | 
			
		||||
        if (debug > 1) {
 | 
			
		||||
            System.out.println("flush() @ CompressionResponseStream");
 | 
			
		||||
        }
 | 
			
		||||
        if (closed) {
 | 
			
		||||
            throw new IOException("Cannot flush a closed output stream");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (gzipstream != null) {
 | 
			
		||||
            gzipstream.flush();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void flushToGZip() throws IOException {
 | 
			
		||||
 | 
			
		||||
        if (debug > 1) {
 | 
			
		||||
            System.out.println("flushToGZip() @ CompressionResponseStream");
 | 
			
		||||
        }
 | 
			
		||||
        if (bufferCount > 0) {
 | 
			
		||||
            if (debug > 1) {
 | 
			
		||||
                System.out.println("flushing out to GZipStream, bufferCount = " + bufferCount);
 | 
			
		||||
            }
 | 
			
		||||
            writeToGZip(buffer, 0, bufferCount);
 | 
			
		||||
            bufferCount = 0;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Write the specified byte to our output stream.
 | 
			
		||||
     *
 | 
			
		||||
     * @param b The byte to be written
 | 
			
		||||
     *
 | 
			
		||||
     * @exception IOException if an input/output error occurs
 | 
			
		||||
     */
 | 
			
		||||
    public void write(int b) throws IOException {
 | 
			
		||||
 | 
			
		||||
        if (debug > 1) {
 | 
			
		||||
            System.out.println("write "+b+" in CompressionResponseStream ");
 | 
			
		||||
        }
 | 
			
		||||
        if (closed)
 | 
			
		||||
            throw new IOException("Cannot write to a closed output stream");
 | 
			
		||||
 | 
			
		||||
        if (bufferCount >= buffer.length) {
 | 
			
		||||
            flushToGZip();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        buffer[bufferCount++] = (byte) b;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Write <code>b.length</code> bytes from the specified byte array
 | 
			
		||||
     * to our output stream.
 | 
			
		||||
     *
 | 
			
		||||
     * @param b The byte array to be written
 | 
			
		||||
     *
 | 
			
		||||
     * @exception IOException if an input/output error occurs
 | 
			
		||||
     */
 | 
			
		||||
    public void write(byte b[]) throws IOException {
 | 
			
		||||
 | 
			
		||||
        write(b, 0, b.length);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Write <code>len</code> bytes from the specified byte array, starting
 | 
			
		||||
     * at the specified offset, to our output stream.
 | 
			
		||||
     *
 | 
			
		||||
     * @param b The byte array containing the bytes to be written
 | 
			
		||||
     * @param off Zero-relative starting offset of the bytes to be written
 | 
			
		||||
     * @param len The number of bytes to be written
 | 
			
		||||
     *
 | 
			
		||||
     * @exception IOException if an input/output error occurs
 | 
			
		||||
     */
 | 
			
		||||
    public void write(byte b[], int off, int len) throws IOException {
 | 
			
		||||
 | 
			
		||||
        if (debug > 1) {
 | 
			
		||||
            System.out.println("write, bufferCount = " + bufferCount + " len = " + len + " off = " + off);
 | 
			
		||||
        }
 | 
			
		||||
        if (debug > 2) {
 | 
			
		||||
            System.out.print("write(");
 | 
			
		||||
            System.out.write(b, off, len);
 | 
			
		||||
            System.out.println(")");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (closed)
 | 
			
		||||
            throw new IOException("Cannot write to a closed output stream");
 | 
			
		||||
 | 
			
		||||
        if (len == 0)
 | 
			
		||||
            return;
 | 
			
		||||
 | 
			
		||||
        // Can we write into buffer ?
 | 
			
		||||
        if (len <= (buffer.length - bufferCount)) {
 | 
			
		||||
            System.arraycopy(b, off, buffer, bufferCount, len);
 | 
			
		||||
            bufferCount += len;
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // There is not enough space in buffer. Flush it ...
 | 
			
		||||
        flushToGZip();
 | 
			
		||||
 | 
			
		||||
        // ... and try again. Note, that bufferCount = 0 here !
 | 
			
		||||
        if (len <= (buffer.length - bufferCount)) {
 | 
			
		||||
            System.arraycopy(b, off, buffer, bufferCount, len);
 | 
			
		||||
            bufferCount += len;
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // write direct to gzip
 | 
			
		||||
        writeToGZip(b, off, len);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void writeToGZip(byte b[], int off, int len) throws IOException {
 | 
			
		||||
 | 
			
		||||
        if (debug > 1) {
 | 
			
		||||
            System.out.println("writeToGZip, len = " + len);
 | 
			
		||||
        }
 | 
			
		||||
        if (debug > 2) {
 | 
			
		||||
            System.out.print("writeToGZip(");
 | 
			
		||||
            System.out.write(b, off, len);
 | 
			
		||||
            System.out.println(")");
 | 
			
		||||
        }
 | 
			
		||||
        if (gzipstream == null) {
 | 
			
		||||
            if (debug > 1) {
 | 
			
		||||
                System.out.println("new GZIPOutputStream");
 | 
			
		||||
            }
 | 
			
		||||
            if (response.isCommitted()) {
 | 
			
		||||
                if (debug > 1)
 | 
			
		||||
                    System.out.print("Response already committed. Using original output stream");
 | 
			
		||||
                gzipstream = output;
 | 
			
		||||
            } else {
 | 
			
		||||
                response.addHeader("Content-Encoding", "gzip");
 | 
			
		||||
                gzipstream = new GZIPOutputStream(output);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        gzipstream.write(b, off, len);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // -------------------------------------------------------- Package Methods
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Has this response stream been closed?
 | 
			
		||||
     */
 | 
			
		||||
    public boolean closed() {
 | 
			
		||||
 | 
			
		||||
        return (this.closed);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,245 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
package compressionFilters;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.io.OutputStreamWriter;
 | 
			
		||||
import java.io.PrintWriter;
 | 
			
		||||
import javax.servlet.ServletOutputStream;
 | 
			
		||||
import javax.servlet.http.HttpServletResponse;
 | 
			
		||||
import javax.servlet.http.HttpServletResponseWrapper;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Implementation of <b>HttpServletResponseWrapper</b> that works with
 | 
			
		||||
 * the CompressionServletResponseStream implementation..
 | 
			
		||||
 *
 | 
			
		||||
 * @author Amy Roh
 | 
			
		||||
 * @author Dmitri Valdin
 | 
			
		||||
 * @version $Revision: 500668 $, $Date: 2007-01-28 00:07:51 +0100 (dim., 28 janv. 2007) $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
public class CompressionServletResponseWrapper extends HttpServletResponseWrapper {
 | 
			
		||||
 | 
			
		||||
    // ----------------------------------------------------- Constructor
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Calls the parent constructor which creates a ServletResponse adaptor
 | 
			
		||||
     * wrapping the given response object.
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    public CompressionServletResponseWrapper(HttpServletResponse response) {
 | 
			
		||||
        super(response);
 | 
			
		||||
        origResponse = response;
 | 
			
		||||
        if (debug > 1) {
 | 
			
		||||
            System.out.println("CompressionServletResponseWrapper constructor gets called");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ----------------------------------------------------- Instance Variables
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Original response
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    protected HttpServletResponse origResponse = null;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Descriptive information about this Response implementation.
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    protected static final String info = "CompressionServletResponseWrapper";
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The ServletOutputStream that has been returned by
 | 
			
		||||
     * <code>getOutputStream()</code>, if any.
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    protected ServletOutputStream stream = null;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The PrintWriter that has been returned by
 | 
			
		||||
     * <code>getWriter()</code>, if any.
 | 
			
		||||
     */
 | 
			
		||||
 | 
			
		||||
    protected PrintWriter writer = null;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The threshold number to compress
 | 
			
		||||
     */
 | 
			
		||||
    protected int threshold = 0;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Debug level
 | 
			
		||||
     */
 | 
			
		||||
    private int debug = 0;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Content type
 | 
			
		||||
     */
 | 
			
		||||
    protected String contentType = null;
 | 
			
		||||
 | 
			
		||||
    // --------------------------------------------------------- Public Methods
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Set content type
 | 
			
		||||
     */
 | 
			
		||||
    public void setContentType(String contentType) {
 | 
			
		||||
        if (debug > 1) {
 | 
			
		||||
            System.out.println("setContentType to "+contentType);
 | 
			
		||||
        }
 | 
			
		||||
        this.contentType = contentType;
 | 
			
		||||
        origResponse.setContentType(contentType);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Set threshold number
 | 
			
		||||
     */
 | 
			
		||||
    public void setCompressionThreshold(int threshold) {
 | 
			
		||||
        if (debug > 1) {
 | 
			
		||||
            System.out.println("setCompressionThreshold to " + threshold);
 | 
			
		||||
        }
 | 
			
		||||
        this.threshold = threshold;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Set debug level
 | 
			
		||||
     */
 | 
			
		||||
    public void setDebugLevel(int debug) {
 | 
			
		||||
        this.debug = debug;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Create and return a ServletOutputStream to write the content
 | 
			
		||||
     * associated with this Response.
 | 
			
		||||
     *
 | 
			
		||||
     * @exception IOException if an input/output error occurs
 | 
			
		||||
     */
 | 
			
		||||
    public ServletOutputStream createOutputStream() throws IOException {
 | 
			
		||||
        if (debug > 1) {
 | 
			
		||||
            System.out.println("createOutputStream gets called");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        CompressionResponseStream stream = new CompressionResponseStream(origResponse);
 | 
			
		||||
        stream.setDebugLevel(debug);
 | 
			
		||||
        stream.setBuffer(threshold);
 | 
			
		||||
 | 
			
		||||
        return stream;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Finish a response.
 | 
			
		||||
     */
 | 
			
		||||
    public void finishResponse() {
 | 
			
		||||
        try {
 | 
			
		||||
            if (writer != null) {
 | 
			
		||||
                writer.close();
 | 
			
		||||
            } else {
 | 
			
		||||
                if (stream != null)
 | 
			
		||||
                    stream.close();
 | 
			
		||||
            }
 | 
			
		||||
        } catch (IOException e) {
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ------------------------------------------------ ServletResponse Methods
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Flush the buffer and commit this response.
 | 
			
		||||
     *
 | 
			
		||||
     * @exception IOException if an input/output error occurs
 | 
			
		||||
     */
 | 
			
		||||
    public void flushBuffer() throws IOException {
 | 
			
		||||
        if (debug > 1) {
 | 
			
		||||
            System.out.println("flush buffer @ CompressionServletResponseWrapper");
 | 
			
		||||
        }
 | 
			
		||||
        ((CompressionResponseStream)stream).flush();
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return the servlet output stream associated with this Response.
 | 
			
		||||
     *
 | 
			
		||||
     * @exception IllegalStateException if <code>getWriter</code> has
 | 
			
		||||
     *  already been called for this response
 | 
			
		||||
     * @exception IOException if an input/output error occurs
 | 
			
		||||
     */
 | 
			
		||||
    public ServletOutputStream getOutputStream() throws IOException {
 | 
			
		||||
 | 
			
		||||
        if (writer != null)
 | 
			
		||||
            throw new IllegalStateException("getWriter() has already been called for this response");
 | 
			
		||||
 | 
			
		||||
        if (stream == null)
 | 
			
		||||
            stream = createOutputStream();
 | 
			
		||||
        if (debug > 1) {
 | 
			
		||||
            System.out.println("stream is set to "+stream+" in getOutputStream");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return (stream);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return the writer associated with this Response.
 | 
			
		||||
     *
 | 
			
		||||
     * @exception IllegalStateException if <code>getOutputStream</code> has
 | 
			
		||||
     *  already been called for this response
 | 
			
		||||
     * @exception IOException if an input/output error occurs
 | 
			
		||||
     */
 | 
			
		||||
    public PrintWriter getWriter() throws IOException {
 | 
			
		||||
 | 
			
		||||
        if (writer != null)
 | 
			
		||||
            return (writer);
 | 
			
		||||
 | 
			
		||||
        if (stream != null)
 | 
			
		||||
            throw new IllegalStateException("getOutputStream() has already been called for this response");
 | 
			
		||||
 | 
			
		||||
        stream = createOutputStream();
 | 
			
		||||
        if (debug > 1) {
 | 
			
		||||
            System.out.println("stream is set to "+stream+" in getWriter");
 | 
			
		||||
        }
 | 
			
		||||
        //String charset = getCharsetFromContentType(contentType);
 | 
			
		||||
        String charEnc = origResponse.getCharacterEncoding();
 | 
			
		||||
        if (debug > 1) {
 | 
			
		||||
            System.out.println("character encoding is " + charEnc);
 | 
			
		||||
        }
 | 
			
		||||
        // HttpServletResponse.getCharacterEncoding() shouldn't return null
 | 
			
		||||
        // according the spec, so feel free to remove that "if"
 | 
			
		||||
        if (charEnc != null) {
 | 
			
		||||
            writer = new PrintWriter(new OutputStreamWriter(stream, charEnc));
 | 
			
		||||
        } else {
 | 
			
		||||
            writer = new PrintWriter(stream);
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        return (writer);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public void setContentLength(int length) {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,152 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
package dates;
 | 
			
		||||
 | 
			
		||||
import java.util.*;
 | 
			
		||||
 | 
			
		||||
public class JspCalendar {
 | 
			
		||||
    Calendar  calendar = null;
 | 
			
		||||
 | 
			
		||||
    public JspCalendar() {
 | 
			
		||||
	calendar = Calendar.getInstance();
 | 
			
		||||
	Date trialTime = new Date();
 | 
			
		||||
	calendar.setTime(trialTime);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getYear() {
 | 
			
		||||
	return calendar.get(Calendar.YEAR);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public String getMonth() {
 | 
			
		||||
	int m = getMonthInt();
 | 
			
		||||
	String[] months = new String [] { "January", "February", "March",
 | 
			
		||||
					"April", "May", "June",
 | 
			
		||||
					"July", "August", "September",
 | 
			
		||||
					"October", "November", "December" };
 | 
			
		||||
	if (m > 12)
 | 
			
		||||
	    return "Unknown to Man";
 | 
			
		||||
	
 | 
			
		||||
	return months[m - 1];
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getDay() {
 | 
			
		||||
	int x = getDayOfWeek();
 | 
			
		||||
	String[] days = new String[] {"Sunday", "Monday", "Tuesday", "Wednesday", 
 | 
			
		||||
				      "Thursday", "Friday", "Saturday"};
 | 
			
		||||
 | 
			
		||||
	if (x > 7)
 | 
			
		||||
	    return "Unknown to Man";
 | 
			
		||||
 | 
			
		||||
	return days[x - 1];
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public int getMonthInt() {
 | 
			
		||||
	return 1 + calendar.get(Calendar.MONTH);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getDate() {
 | 
			
		||||
	return getMonthInt() + "/" + getDayOfMonth() + "/" +  getYear();
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getTime() {
 | 
			
		||||
	return getHour() + ":" + getMinute() + ":" + getSecond();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getDayOfMonth() {
 | 
			
		||||
	return calendar.get(Calendar.DAY_OF_MONTH);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getDayOfYear() {
 | 
			
		||||
	return calendar.get(Calendar.DAY_OF_YEAR);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getWeekOfYear() {
 | 
			
		||||
	return calendar.get(Calendar.WEEK_OF_YEAR);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getWeekOfMonth() {
 | 
			
		||||
	return calendar.get(Calendar.WEEK_OF_MONTH);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getDayOfWeek() {
 | 
			
		||||
	return calendar.get(Calendar.DAY_OF_WEEK);
 | 
			
		||||
    }
 | 
			
		||||
     
 | 
			
		||||
    public int getHour() {
 | 
			
		||||
	return calendar.get(Calendar.HOUR_OF_DAY);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public int getMinute() {
 | 
			
		||||
	return calendar.get(Calendar.MINUTE);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public int getSecond() {
 | 
			
		||||
	return calendar.get(Calendar.SECOND);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static void main(String args[]) {
 | 
			
		||||
	JspCalendar db = new JspCalendar();
 | 
			
		||||
	p("date: " + db.getDayOfMonth());
 | 
			
		||||
	p("year: " + db.getYear());
 | 
			
		||||
	p("month: " + db.getMonth());
 | 
			
		||||
	p("time: " + db.getTime());
 | 
			
		||||
	p("date: " + db.getDate());
 | 
			
		||||
	p("Day: " + db.getDay());
 | 
			
		||||
	p("DayOfYear: " + db.getDayOfYear());
 | 
			
		||||
	p("WeekOfYear: " + db.getWeekOfYear());
 | 
			
		||||
	p("era: " + db.getEra());
 | 
			
		||||
	p("ampm: " + db.getAMPM());
 | 
			
		||||
	p("DST: " + db.getDSTOffset());
 | 
			
		||||
	p("ZONE Offset: " + db.getZoneOffset());
 | 
			
		||||
	p("TIMEZONE: " + db.getUSTimeZone());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static void p(String x) {
 | 
			
		||||
	System.out.println(x);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public int getEra() {
 | 
			
		||||
	return calendar.get(Calendar.ERA);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getUSTimeZone() {
 | 
			
		||||
	String[] zones = new String[] {"Hawaii", "Alaskan", "Pacific",
 | 
			
		||||
				       "Mountain", "Central", "Eastern"};
 | 
			
		||||
	
 | 
			
		||||
	return zones[10 + getZoneOffset()];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int getZoneOffset() {
 | 
			
		||||
	return calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public int getDSTOffset() {
 | 
			
		||||
	return calendar.get(Calendar.DST_OFFSET)/(60*60*1000);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    public int getAMPM() {
 | 
			
		||||
	return calendar.get(Calendar.AM_PM);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,32 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
package error;
 | 
			
		||||
 | 
			
		||||
public class Smart {
 | 
			
		||||
 | 
			
		||||
  String name = "JSP";
 | 
			
		||||
 | 
			
		||||
  public String getName () {
 | 
			
		||||
	return name;
 | 
			
		||||
  }	
 | 
			
		||||
 | 
			
		||||
  public void setName (String name) {
 | 
			
		||||
	this.name = name;
 | 
			
		||||
  }	
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,67 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
package examples;
 | 
			
		||||
 | 
			
		||||
import javax.servlet.jsp.*;
 | 
			
		||||
import javax.servlet.jsp.tagext.*;
 | 
			
		||||
 | 
			
		||||
public abstract class ExampleTagBase extends BodyTagSupport {
 | 
			
		||||
 | 
			
		||||
    public void setParent(Tag parent) {
 | 
			
		||||
        this.parent = parent;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setBodyContent(BodyContent bodyOut) {
 | 
			
		||||
        this.bodyOut = bodyOut;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setPageContext(PageContext pageContext) {
 | 
			
		||||
        this.pageContext = pageContext;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Tag getParent() {
 | 
			
		||||
        return this.parent;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public int doStartTag() throws JspException {
 | 
			
		||||
        return SKIP_BODY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int doEndTag() throws JspException {
 | 
			
		||||
        return EVAL_PAGE;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    // Default implementations for BodyTag methods as well
 | 
			
		||||
    // just in case a tag decides to implement BodyTag.
 | 
			
		||||
    public void doInitBody() throws JspException {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int doAfterBody() throws JspException {
 | 
			
		||||
        return SKIP_BODY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void release() {
 | 
			
		||||
        bodyOut = null;
 | 
			
		||||
        pageContext = null;
 | 
			
		||||
        parent = null;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    protected BodyContent bodyOut;
 | 
			
		||||
    protected PageContext pageContext;
 | 
			
		||||
    protected Tag parent;
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,80 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
package examples;
 | 
			
		||||
 | 
			
		||||
import javax.servlet.jsp.*;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Example1: the simplest tag
 | 
			
		||||
 * Collect attributes and call into some actions
 | 
			
		||||
 *
 | 
			
		||||
 * <foo att1="..." att2="...." att3="...." />
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
public class FooTag 
 | 
			
		||||
    extends ExampleTagBase 
 | 
			
		||||
{
 | 
			
		||||
    private String atts[] = new String[3];
 | 
			
		||||
    int i = 0;
 | 
			
		||||
    
 | 
			
		||||
    private final void setAtt(int index, String value) {
 | 
			
		||||
        atts[index] = value;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public void setAtt1(String value) {
 | 
			
		||||
        setAtt(0, value);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public void setAtt2(String value) {
 | 
			
		||||
        setAtt(1, value);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setAtt3(String value) {
 | 
			
		||||
        setAtt(2, value);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Process start tag
 | 
			
		||||
     *
 | 
			
		||||
     * @return EVAL_BODY_INCLUDE
 | 
			
		||||
     */
 | 
			
		||||
    public int doStartTag() throws JspException {
 | 
			
		||||
        i = 0;
 | 
			
		||||
	return EVAL_BODY_BUFFERED;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void doInitBody() throws JspException {
 | 
			
		||||
        pageContext.setAttribute("member", atts[i]);
 | 
			
		||||
        i++;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public int doAfterBody() throws JspException {
 | 
			
		||||
        try {
 | 
			
		||||
            if (i == 3) {
 | 
			
		||||
                bodyOut.writeOut(bodyOut.getEnclosingWriter());
 | 
			
		||||
                return SKIP_BODY;
 | 
			
		||||
            } else
 | 
			
		||||
                pageContext.setAttribute("member", atts[i]);
 | 
			
		||||
            i++;
 | 
			
		||||
            return EVAL_BODY_BUFFERED;
 | 
			
		||||
        } catch (IOException ex) {
 | 
			
		||||
            throw new JspTagException(ex.toString());
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,33 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
package examples;
 | 
			
		||||
 | 
			
		||||
import javax.servlet.jsp.tagext.*;
 | 
			
		||||
 | 
			
		||||
public class FooTagExtraInfo extends TagExtraInfo {
 | 
			
		||||
    public VariableInfo[] getVariableInfo(TagData data) {
 | 
			
		||||
        return new VariableInfo[] 
 | 
			
		||||
            {
 | 
			
		||||
                new VariableInfo("member",
 | 
			
		||||
                                 "String",
 | 
			
		||||
                                 true,
 | 
			
		||||
                                 VariableInfo.NESTED)
 | 
			
		||||
            };
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,60 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
package examples;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import javax.servlet.jsp.*;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Log the contents of the body. Could be used to handle errors etc. 
 | 
			
		||||
 */
 | 
			
		||||
public class LogTag 
 | 
			
		||||
    extends ExampleTagBase
 | 
			
		||||
{
 | 
			
		||||
    boolean toBrowser = false;
 | 
			
		||||
    
 | 
			
		||||
    public void setToBrowser(String value) {
 | 
			
		||||
        if (value == null)
 | 
			
		||||
            toBrowser = false;
 | 
			
		||||
        else if (value.equalsIgnoreCase("true"))
 | 
			
		||||
            toBrowser = true;
 | 
			
		||||
        else
 | 
			
		||||
            toBrowser = false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int doStartTag() throws JspException {
 | 
			
		||||
        return EVAL_BODY_BUFFERED;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public int doAfterBody() throws JspException {
 | 
			
		||||
        try {
 | 
			
		||||
            String s = bodyOut.getString();
 | 
			
		||||
            System.err.println(s);
 | 
			
		||||
            if (toBrowser)
 | 
			
		||||
                bodyOut.writeOut(bodyOut.getEnclosingWriter());
 | 
			
		||||
            return SKIP_BODY;
 | 
			
		||||
        } catch (IOException ex) {
 | 
			
		||||
            throw new JspTagException(ex.toString());
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
        
 | 
			
		||||
    
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,71 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
package examples;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import javax.servlet.jsp.*;
 | 
			
		||||
import javax.servlet.jsp.tagext.*;
 | 
			
		||||
 | 
			
		||||
import java.io.*;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Display the sources of the JSP file.
 | 
			
		||||
 */
 | 
			
		||||
public class ShowSource
 | 
			
		||||
    extends TagSupport
 | 
			
		||||
{
 | 
			
		||||
    String jspFile;
 | 
			
		||||
    
 | 
			
		||||
    public void setJspFile(String jspFile) {
 | 
			
		||||
        this.jspFile = jspFile;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public int doEndTag() throws JspException {
 | 
			
		||||
	if ((jspFile.indexOf( ".." ) >= 0) ||
 | 
			
		||||
            (jspFile.toUpperCase().indexOf("/WEB-INF/") != 0) ||
 | 
			
		||||
            (jspFile.toUpperCase().indexOf("/META-INF/") != 0))
 | 
			
		||||
	    throw new JspTagException("Invalid JSP file " + jspFile);
 | 
			
		||||
 | 
			
		||||
        InputStream in
 | 
			
		||||
            = pageContext.getServletContext().getResourceAsStream(jspFile);
 | 
			
		||||
 | 
			
		||||
        if (in == null)
 | 
			
		||||
            throw new JspTagException("Unable to find JSP file: "+jspFile);
 | 
			
		||||
 | 
			
		||||
        JspWriter out = pageContext.getOut();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            out.println("<body>");
 | 
			
		||||
            out.println("<pre>");
 | 
			
		||||
            for(int ch = in.read(); ch != -1; ch = in.read())
 | 
			
		||||
                if (ch == '<')
 | 
			
		||||
                    out.print("<");
 | 
			
		||||
                else
 | 
			
		||||
                    out.print((char) ch);
 | 
			
		||||
            out.println("</pre>");
 | 
			
		||||
            out.println("</body>");
 | 
			
		||||
        } catch (IOException ex) {
 | 
			
		||||
            throw new JspTagException("IOException: "+ex.toString());
 | 
			
		||||
        }
 | 
			
		||||
        return super.doEndTag();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
        
 | 
			
		||||
    
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,139 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
package filters;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import javax.servlet.Filter;
 | 
			
		||||
import javax.servlet.FilterChain;
 | 
			
		||||
import javax.servlet.FilterConfig;
 | 
			
		||||
import javax.servlet.ServletException;
 | 
			
		||||
import javax.servlet.ServletRequest;
 | 
			
		||||
import javax.servlet.ServletResponse;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Example filter that can be attached to either an individual servlet
 | 
			
		||||
 * or to a URL pattern.  This filter performs the following functions:
 | 
			
		||||
 * <ul>
 | 
			
		||||
 * <li>Attaches itself as a request attribute, under the attribute name
 | 
			
		||||
 *     defined by the value of the <code>attribute</code> initialization
 | 
			
		||||
 *     parameter.</li>
 | 
			
		||||
 * <li>Calculates the number of milliseconds required to perform the
 | 
			
		||||
 *     servlet processing required by this request, including any
 | 
			
		||||
 *     subsequently defined filters, and logs the result to the servlet
 | 
			
		||||
 *     context log for this application.
 | 
			
		||||
 * </ul>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Craig McClanahan
 | 
			
		||||
 * @version $Revision: 500674 $ $Date: 2007-01-28 00:15:00 +0100 (dim., 28 janv. 2007) $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
public final class ExampleFilter implements Filter {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ----------------------------------------------------- Instance Variables
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The request attribute name under which we store a reference to ourself.
 | 
			
		||||
     */
 | 
			
		||||
    private String attribute = null;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The filter configuration object we are associated with.  If this value
 | 
			
		||||
     * is null, this filter instance is not currently configured.
 | 
			
		||||
     */
 | 
			
		||||
    private FilterConfig filterConfig = null;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // --------------------------------------------------------- Public Methods
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Take this filter out of service.
 | 
			
		||||
     */
 | 
			
		||||
    public void destroy() {
 | 
			
		||||
 | 
			
		||||
        this.attribute = null;
 | 
			
		||||
        this.filterConfig = null;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Time the processing that is performed by all subsequent filters in the
 | 
			
		||||
     * current filter stack, including the ultimately invoked servlet.
 | 
			
		||||
     *
 | 
			
		||||
     * @param request The servlet request we are processing
 | 
			
		||||
     * @param result The servlet response we are creating
 | 
			
		||||
     * @param chain The filter chain we are processing
 | 
			
		||||
     *
 | 
			
		||||
     * @exception IOException if an input/output error occurs
 | 
			
		||||
     * @exception ServletException if a servlet error occurs
 | 
			
		||||
     */
 | 
			
		||||
    public void doFilter(ServletRequest request, ServletResponse response,
 | 
			
		||||
                         FilterChain chain)
 | 
			
		||||
	throws IOException, ServletException {
 | 
			
		||||
 | 
			
		||||
	// Store ourselves as a request attribute (if requested)
 | 
			
		||||
	if (attribute != null)
 | 
			
		||||
	    request.setAttribute(attribute, this);
 | 
			
		||||
 | 
			
		||||
	// Time and log the subsequent processing
 | 
			
		||||
	long startTime = System.currentTimeMillis();
 | 
			
		||||
        chain.doFilter(request, response);
 | 
			
		||||
	long stopTime = System.currentTimeMillis();
 | 
			
		||||
	filterConfig.getServletContext().log
 | 
			
		||||
	    (this.toString() + ": " + (stopTime - startTime) +
 | 
			
		||||
	     " milliseconds");
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Place this filter into service.
 | 
			
		||||
     *
 | 
			
		||||
     * @param filterConfig The filter configuration object
 | 
			
		||||
     */
 | 
			
		||||
    public void init(FilterConfig filterConfig) throws ServletException {
 | 
			
		||||
 | 
			
		||||
	this.filterConfig = filterConfig;
 | 
			
		||||
        this.attribute = filterConfig.getInitParameter("attribute");
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return a String representation of this object.
 | 
			
		||||
     */
 | 
			
		||||
    public String toString() {
 | 
			
		||||
 | 
			
		||||
	if (filterConfig == null)
 | 
			
		||||
	    return ("InvokerFilter()");
 | 
			
		||||
	StringBuffer sb = new StringBuffer("InvokerFilter(");
 | 
			
		||||
	sb.append(filterConfig);
 | 
			
		||||
	sb.append(")");
 | 
			
		||||
	return (sb.toString());
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,200 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
package filters;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.io.PrintWriter;
 | 
			
		||||
import java.io.StringWriter;
 | 
			
		||||
import java.sql.Timestamp;
 | 
			
		||||
import java.util.Enumeration;
 | 
			
		||||
import java.util.Locale;
 | 
			
		||||
import javax.servlet.Filter;
 | 
			
		||||
import javax.servlet.FilterChain;
 | 
			
		||||
import javax.servlet.FilterConfig;
 | 
			
		||||
import javax.servlet.ServletException;
 | 
			
		||||
import javax.servlet.ServletRequest;
 | 
			
		||||
import javax.servlet.ServletResponse;
 | 
			
		||||
import javax.servlet.http.Cookie;
 | 
			
		||||
import javax.servlet.http.HttpServletRequest;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Example filter that dumps interesting state information about a request
 | 
			
		||||
 * to the associated servlet context log file, before allowing the servlet
 | 
			
		||||
 * to process the request in the usual way.  This can be installed as needed
 | 
			
		||||
 * to assist in debugging problems.
 | 
			
		||||
 *
 | 
			
		||||
 * @author Craig McClanahan
 | 
			
		||||
 * @version $Revision: 500674 $ $Date: 2007-01-28 00:15:00 +0100 (dim., 28 janv. 2007) $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
public final class RequestDumperFilter implements Filter {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ----------------------------------------------------- Instance Variables
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The filter configuration object we are associated with.  If this value
 | 
			
		||||
     * is null, this filter instance is not currently configured.
 | 
			
		||||
     */
 | 
			
		||||
    private FilterConfig filterConfig = null;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // --------------------------------------------------------- Public Methods
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Take this filter out of service.
 | 
			
		||||
     */
 | 
			
		||||
    public void destroy() {
 | 
			
		||||
 | 
			
		||||
        this.filterConfig = null;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Time the processing that is performed by all subsequent filters in the
 | 
			
		||||
     * current filter stack, including the ultimately invoked servlet.
 | 
			
		||||
     *
 | 
			
		||||
     * @param request The servlet request we are processing
 | 
			
		||||
     * @param result The servlet response we are creating
 | 
			
		||||
     * @param chain The filter chain we are processing
 | 
			
		||||
     *
 | 
			
		||||
     * @exception IOException if an input/output error occurs
 | 
			
		||||
     * @exception ServletException if a servlet error occurs
 | 
			
		||||
     */
 | 
			
		||||
    public void doFilter(ServletRequest request, ServletResponse response,
 | 
			
		||||
                         FilterChain chain)
 | 
			
		||||
	throws IOException, ServletException {
 | 
			
		||||
 | 
			
		||||
        if (filterConfig == null)
 | 
			
		||||
	    return;
 | 
			
		||||
 | 
			
		||||
	// Render the generic servlet request properties
 | 
			
		||||
	StringWriter sw = new StringWriter();
 | 
			
		||||
	PrintWriter writer = new PrintWriter(sw);
 | 
			
		||||
	writer.println("Request Received at " +
 | 
			
		||||
		       (new Timestamp(System.currentTimeMillis())));
 | 
			
		||||
	writer.println(" characterEncoding=" + request.getCharacterEncoding());
 | 
			
		||||
	writer.println("     contentLength=" + request.getContentLength());
 | 
			
		||||
	writer.println("       contentType=" + request.getContentType());
 | 
			
		||||
	writer.println("            locale=" + request.getLocale());
 | 
			
		||||
	writer.print("           locales=");
 | 
			
		||||
	Enumeration locales = request.getLocales();
 | 
			
		||||
	boolean first = true;
 | 
			
		||||
	while (locales.hasMoreElements()) {
 | 
			
		||||
	    Locale locale = (Locale) locales.nextElement();
 | 
			
		||||
	    if (first)
 | 
			
		||||
	        first = false;
 | 
			
		||||
	    else
 | 
			
		||||
	        writer.print(", ");
 | 
			
		||||
	    writer.print(locale.toString());
 | 
			
		||||
	}
 | 
			
		||||
	writer.println();
 | 
			
		||||
	Enumeration names = request.getParameterNames();
 | 
			
		||||
	while (names.hasMoreElements()) {
 | 
			
		||||
	    String name = (String) names.nextElement();
 | 
			
		||||
	    writer.print("         parameter=" + name + "=");
 | 
			
		||||
	    String values[] = request.getParameterValues(name);
 | 
			
		||||
	    for (int i = 0; i < values.length; i++) {
 | 
			
		||||
	        if (i > 0)
 | 
			
		||||
		    writer.print(", ");
 | 
			
		||||
		writer.print(values[i]);
 | 
			
		||||
	    }
 | 
			
		||||
	    writer.println();
 | 
			
		||||
	}
 | 
			
		||||
	writer.println("          protocol=" + request.getProtocol());
 | 
			
		||||
	writer.println("        remoteAddr=" + request.getRemoteAddr());
 | 
			
		||||
	writer.println("        remoteHost=" + request.getRemoteHost());
 | 
			
		||||
	writer.println("            scheme=" + request.getScheme());
 | 
			
		||||
	writer.println("        serverName=" + request.getServerName());
 | 
			
		||||
	writer.println("        serverPort=" + request.getServerPort());
 | 
			
		||||
	writer.println("          isSecure=" + request.isSecure());
 | 
			
		||||
 | 
			
		||||
	// Render the HTTP servlet request properties
 | 
			
		||||
	if (request instanceof HttpServletRequest) {
 | 
			
		||||
	    writer.println("---------------------------------------------");
 | 
			
		||||
	    HttpServletRequest hrequest = (HttpServletRequest) request;
 | 
			
		||||
	    writer.println("       contextPath=" + hrequest.getContextPath());
 | 
			
		||||
	    Cookie cookies[] = hrequest.getCookies();
 | 
			
		||||
            if (cookies == null)
 | 
			
		||||
                cookies = new Cookie[0];
 | 
			
		||||
	    for (int i = 0; i < cookies.length; i++) {
 | 
			
		||||
	        writer.println("            cookie=" + cookies[i].getName() +
 | 
			
		||||
			       "=" + cookies[i].getValue());
 | 
			
		||||
	    }
 | 
			
		||||
	    names = hrequest.getHeaderNames();
 | 
			
		||||
	    while (names.hasMoreElements()) {
 | 
			
		||||
	        String name = (String) names.nextElement();
 | 
			
		||||
		String value = hrequest.getHeader(name);
 | 
			
		||||
	        writer.println("            header=" + name + "=" + value);
 | 
			
		||||
	    }
 | 
			
		||||
	    writer.println("            method=" + hrequest.getMethod());
 | 
			
		||||
	    writer.println("          pathInfo=" + hrequest.getPathInfo());
 | 
			
		||||
	    writer.println("       queryString=" + hrequest.getQueryString());
 | 
			
		||||
	    writer.println("        remoteUser=" + hrequest.getRemoteUser());
 | 
			
		||||
	    writer.println("requestedSessionId=" +
 | 
			
		||||
			   hrequest.getRequestedSessionId());
 | 
			
		||||
	    writer.println("        requestURI=" + hrequest.getRequestURI());
 | 
			
		||||
	    writer.println("       servletPath=" + hrequest.getServletPath());
 | 
			
		||||
	}
 | 
			
		||||
	writer.println("=============================================");
 | 
			
		||||
 | 
			
		||||
	// Log the resulting string
 | 
			
		||||
	writer.flush();
 | 
			
		||||
	filterConfig.getServletContext().log(sw.getBuffer().toString());
 | 
			
		||||
 | 
			
		||||
	// Pass control on to the next filter
 | 
			
		||||
        chain.doFilter(request, response);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Place this filter into service.
 | 
			
		||||
     *
 | 
			
		||||
     * @param filterConfig The filter configuration object
 | 
			
		||||
     */
 | 
			
		||||
    public void init(FilterConfig filterConfig) throws ServletException {
 | 
			
		||||
 | 
			
		||||
	this.filterConfig = filterConfig;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return a String representation of this object.
 | 
			
		||||
     */
 | 
			
		||||
    public String toString() {
 | 
			
		||||
 | 
			
		||||
	if (filterConfig == null)
 | 
			
		||||
	    return ("RequestDumperFilter()");
 | 
			
		||||
	StringBuffer sb = new StringBuffer("RequestDumperFilter(");
 | 
			
		||||
	sb.append(filterConfig);
 | 
			
		||||
	sb.append(")");
 | 
			
		||||
	return (sb.toString());
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,171 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
package filters;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import javax.servlet.Filter;
 | 
			
		||||
import javax.servlet.FilterChain;
 | 
			
		||||
import javax.servlet.FilterConfig;
 | 
			
		||||
import javax.servlet.ServletException;
 | 
			
		||||
import javax.servlet.ServletRequest;
 | 
			
		||||
import javax.servlet.ServletResponse;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * <p>Example filter that sets the character encoding to be used in parsing the
 | 
			
		||||
 * incoming request, either unconditionally or only if the client did not
 | 
			
		||||
 * specify a character encoding.  Configuration of this filter is based on
 | 
			
		||||
 * the following initialization parameters:</p>
 | 
			
		||||
 * <ul>
 | 
			
		||||
 * <li><strong>encoding</strong> - The character encoding to be configured
 | 
			
		||||
 *     for this request, either conditionally or unconditionally based on
 | 
			
		||||
 *     the <code>ignore</code> initialization parameter.  This parameter
 | 
			
		||||
 *     is required, so there is no default.</li>
 | 
			
		||||
 * <li><strong>ignore</strong> - If set to "true", any character encoding
 | 
			
		||||
 *     specified by the client is ignored, and the value returned by the
 | 
			
		||||
 *     <code>selectEncoding()</code> method is set.  If set to "false,
 | 
			
		||||
 *     <code>selectEncoding()</code> is called <strong>only</strong> if the
 | 
			
		||||
 *     client has not already specified an encoding.  By default, this
 | 
			
		||||
 *     parameter is set to "true".</li>
 | 
			
		||||
 * </ul>
 | 
			
		||||
 *
 | 
			
		||||
 * <p>Although this filter can be used unchanged, it is also easy to
 | 
			
		||||
 * subclass it and make the <code>selectEncoding()</code> method more
 | 
			
		||||
 * intelligent about what encoding to choose, based on characteristics of
 | 
			
		||||
 * the incoming request (such as the values of the <code>Accept-Language</code>
 | 
			
		||||
 * and <code>User-Agent</code> headers, or a value stashed in the current
 | 
			
		||||
 * user's session.</p>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Craig McClanahan
 | 
			
		||||
 * @version $Revision: 500674 $ $Date: 2007-01-28 00:15:00 +0100 (dim., 28 janv. 2007) $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
public class SetCharacterEncodingFilter implements Filter {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ----------------------------------------------------- Instance Variables
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The default character encoding to set for requests that pass through
 | 
			
		||||
     * this filter.
 | 
			
		||||
     */
 | 
			
		||||
    protected String encoding = null;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The filter configuration object we are associated with.  If this value
 | 
			
		||||
     * is null, this filter instance is not currently configured.
 | 
			
		||||
     */
 | 
			
		||||
    protected FilterConfig filterConfig = null;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Should a character encoding specified by the client be ignored?
 | 
			
		||||
     */
 | 
			
		||||
    protected boolean ignore = true;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // --------------------------------------------------------- Public Methods
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Take this filter out of service.
 | 
			
		||||
     */
 | 
			
		||||
    public void destroy() {
 | 
			
		||||
 | 
			
		||||
        this.encoding = null;
 | 
			
		||||
        this.filterConfig = null;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Select and set (if specified) the character encoding to be used to
 | 
			
		||||
     * interpret request parameters for this request.
 | 
			
		||||
     *
 | 
			
		||||
     * @param request The servlet request we are processing
 | 
			
		||||
     * @param result The servlet response we are creating
 | 
			
		||||
     * @param chain The filter chain we are processing
 | 
			
		||||
     *
 | 
			
		||||
     * @exception IOException if an input/output error occurs
 | 
			
		||||
     * @exception ServletException if a servlet error occurs
 | 
			
		||||
     */
 | 
			
		||||
    public void doFilter(ServletRequest request, ServletResponse response,
 | 
			
		||||
                         FilterChain chain)
 | 
			
		||||
	throws IOException, ServletException {
 | 
			
		||||
 | 
			
		||||
        // Conditionally select and set the character encoding to be used
 | 
			
		||||
        if (ignore || (request.getCharacterEncoding() == null)) {
 | 
			
		||||
            String encoding = selectEncoding(request);
 | 
			
		||||
            if (encoding != null)
 | 
			
		||||
                request.setCharacterEncoding(encoding);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
	// Pass control on to the next filter
 | 
			
		||||
        chain.doFilter(request, response);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Place this filter into service.
 | 
			
		||||
     *
 | 
			
		||||
     * @param filterConfig The filter configuration object
 | 
			
		||||
     */
 | 
			
		||||
    public void init(FilterConfig filterConfig) throws ServletException {
 | 
			
		||||
 | 
			
		||||
	this.filterConfig = filterConfig;
 | 
			
		||||
        this.encoding = filterConfig.getInitParameter("encoding");
 | 
			
		||||
        String value = filterConfig.getInitParameter("ignore");
 | 
			
		||||
        if (value == null)
 | 
			
		||||
            this.ignore = true;
 | 
			
		||||
        else if (value.equalsIgnoreCase("true"))
 | 
			
		||||
            this.ignore = true;
 | 
			
		||||
        else if (value.equalsIgnoreCase("yes"))
 | 
			
		||||
            this.ignore = true;
 | 
			
		||||
        else
 | 
			
		||||
            this.ignore = false;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ------------------------------------------------------ Protected Methods
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Select an appropriate character encoding to be used, based on the
 | 
			
		||||
     * characteristics of the current request and/or filter initialization
 | 
			
		||||
     * parameters.  If no character encoding should be set, return
 | 
			
		||||
     * <code>null</code>.
 | 
			
		||||
     * <p>
 | 
			
		||||
     * The default implementation unconditionally returns the value configured
 | 
			
		||||
     * by the <strong>encoding</strong> initialization parameter for this
 | 
			
		||||
     * filter.
 | 
			
		||||
     *
 | 
			
		||||
     * @param request The servlet request we are processing
 | 
			
		||||
     */
 | 
			
		||||
    protected String selectEncoding(ServletRequest request) {
 | 
			
		||||
 | 
			
		||||
        return (this.encoding);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,44 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
package jsp2.examples;
 | 
			
		||||
 | 
			
		||||
public class BookBean {
 | 
			
		||||
    private String title;
 | 
			
		||||
    private String author;
 | 
			
		||||
    private String isbn;
 | 
			
		||||
    
 | 
			
		||||
    public BookBean( String title, String author, String isbn ) {
 | 
			
		||||
        this.title = title;
 | 
			
		||||
        this.author = author;
 | 
			
		||||
        this.isbn = isbn;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getTitle() {
 | 
			
		||||
        return this.title;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public String getAuthor() {
 | 
			
		||||
        return this.author;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public String getIsbn() {
 | 
			
		||||
        return this.isbn;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,36 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
package jsp2.examples;
 | 
			
		||||
 | 
			
		||||
public class FooBean {
 | 
			
		||||
    private String bar;
 | 
			
		||||
    
 | 
			
		||||
    public FooBean() {
 | 
			
		||||
        bar = "Initial value";
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public String getBar() {
 | 
			
		||||
        return this.bar;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public void setBar(String bar) {
 | 
			
		||||
        this.bar = bar;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,43 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
package jsp2.examples.el;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Defines the functions for the jsp2 example tag library.
 | 
			
		||||
 * 
 | 
			
		||||
 * <p>Each function is defined as a static method.</p>
 | 
			
		||||
 */
 | 
			
		||||
public class Functions {
 | 
			
		||||
    public static String reverse( String text ) {
 | 
			
		||||
        return new StringBuffer( text ).reverse().toString();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static int numVowels( String text ) {
 | 
			
		||||
        String vowels = "aeiouAEIOU";
 | 
			
		||||
	int result = 0;
 | 
			
		||||
        for( int i = 0; i < text.length(); i++ ) {
 | 
			
		||||
	    if( vowels.indexOf( text.charAt( i ) ) != -1 ) {
 | 
			
		||||
	        result++;
 | 
			
		||||
	    }
 | 
			
		||||
	}
 | 
			
		||||
	return result;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static String caps( String text ) {
 | 
			
		||||
        return text.toUpperCase();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,54 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
package jsp2.examples.simpletag;
 | 
			
		||||
 | 
			
		||||
import javax.servlet.jsp.JspException;
 | 
			
		||||
import javax.servlet.jsp.JspWriter;
 | 
			
		||||
import javax.servlet.jsp.tagext.SimpleTagSupport;
 | 
			
		||||
import javax.servlet.jsp.tagext.DynamicAttributes;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * SimpleTag handler that echoes all its attributes 
 | 
			
		||||
 */
 | 
			
		||||
public class EchoAttributesTag 
 | 
			
		||||
    extends SimpleTagSupport
 | 
			
		||||
    implements DynamicAttributes
 | 
			
		||||
{
 | 
			
		||||
    private ArrayList keys = new ArrayList();
 | 
			
		||||
    private ArrayList values = new ArrayList();
 | 
			
		||||
 | 
			
		||||
    public void doTag() throws JspException, IOException {
 | 
			
		||||
	JspWriter out = getJspContext().getOut();
 | 
			
		||||
	for( int i = 0; i < keys.size(); i++ ) {
 | 
			
		||||
	    String key = (String)keys.get( i );
 | 
			
		||||
	    Object value = values.get( i );
 | 
			
		||||
	    out.println( "<li>" + key + " = " + value + "</li>" );
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setDynamicAttribute( String uri, String localName, 
 | 
			
		||||
	Object value ) 
 | 
			
		||||
	throws JspException
 | 
			
		||||
    {
 | 
			
		||||
	keys.add( localName );
 | 
			
		||||
	values.add( value );
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,44 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
package jsp2.examples.simpletag;
 | 
			
		||||
 | 
			
		||||
import javax.servlet.jsp.JspException;
 | 
			
		||||
import javax.servlet.jsp.tagext.SimpleTagSupport;
 | 
			
		||||
import jsp2.examples.BookBean;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * SimpleTag handler that pretends to search for a book, and stores
 | 
			
		||||
 * the result in a scoped variable.
 | 
			
		||||
 */
 | 
			
		||||
public class FindBookSimpleTag extends SimpleTagSupport {
 | 
			
		||||
    private String var;
 | 
			
		||||
    
 | 
			
		||||
    private static final String BOOK_TITLE = "The Lord of the Rings";
 | 
			
		||||
    private static final String BOOK_AUTHOR = "J. R. R. Tolkein";
 | 
			
		||||
    private static final String BOOK_ISBN = "0618002251";
 | 
			
		||||
 | 
			
		||||
    public void doTag() throws JspException {
 | 
			
		||||
        BookBean book = new BookBean( BOOK_TITLE, BOOK_AUTHOR, BOOK_ISBN );
 | 
			
		||||
        getJspContext().setAttribute( this.var, book );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setVar( String var ) {
 | 
			
		||||
	this.var = var;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,32 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
package jsp2.examples.simpletag;
 | 
			
		||||
 | 
			
		||||
import javax.servlet.jsp.JspException;
 | 
			
		||||
import javax.servlet.jsp.tagext.SimpleTagSupport;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * SimpleTag handler that prints "Hello, world!"
 | 
			
		||||
 */
 | 
			
		||||
public class HelloWorldSimpleTag extends SimpleTagSupport {
 | 
			
		||||
    public void doTag() throws JspException, IOException {
 | 
			
		||||
	getJspContext().getOut().write( "Hello, world!" );
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,42 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
package jsp2.examples.simpletag;
 | 
			
		||||
 | 
			
		||||
import javax.servlet.jsp.JspException;
 | 
			
		||||
import javax.servlet.jsp.tagext.SimpleTagSupport;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * SimpleTag handler that accepts a num attribute and 
 | 
			
		||||
 * invokes its body 'num' times.
 | 
			
		||||
 */
 | 
			
		||||
public class RepeatSimpleTag extends SimpleTagSupport {
 | 
			
		||||
    private int num;
 | 
			
		||||
 | 
			
		||||
    public void doTag() throws JspException, IOException {
 | 
			
		||||
        for (int i=0; i<num; i++) {
 | 
			
		||||
            getJspContext().setAttribute("count", String.valueOf( i + 1 ) );
 | 
			
		||||
	    getJspBody().invoke(null);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setNum(int num) {
 | 
			
		||||
	this.num = num;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,81 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
package jsp2.examples.simpletag;
 | 
			
		||||
 | 
			
		||||
import javax.servlet.jsp.JspException;
 | 
			
		||||
import javax.servlet.jsp.tagext.JspFragment;
 | 
			
		||||
import javax.servlet.jsp.tagext.SimpleTagSupport;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * SimpleTag handler that accepts takes three attributes of type
 | 
			
		||||
 * JspFragment and invokes then in a random order.
 | 
			
		||||
 */
 | 
			
		||||
public class ShuffleSimpleTag extends SimpleTagSupport {
 | 
			
		||||
    private JspFragment fragment1;
 | 
			
		||||
    private JspFragment fragment2;
 | 
			
		||||
    private JspFragment fragment3;
 | 
			
		||||
 | 
			
		||||
    public void doTag() throws JspException, IOException {
 | 
			
		||||
        switch( (int)(Math.random() * 6) ) {
 | 
			
		||||
            case 0:
 | 
			
		||||
                fragment1.invoke( null );
 | 
			
		||||
                fragment2.invoke( null );
 | 
			
		||||
                fragment3.invoke( null );
 | 
			
		||||
                break;
 | 
			
		||||
            case 1:
 | 
			
		||||
                fragment1.invoke( null );
 | 
			
		||||
                fragment3.invoke( null );
 | 
			
		||||
                fragment2.invoke( null );
 | 
			
		||||
                break;
 | 
			
		||||
            case 2:
 | 
			
		||||
                fragment2.invoke( null );
 | 
			
		||||
                fragment1.invoke( null );
 | 
			
		||||
                fragment3.invoke( null );
 | 
			
		||||
                break;
 | 
			
		||||
            case 3:
 | 
			
		||||
                fragment2.invoke( null );
 | 
			
		||||
                fragment3.invoke( null );
 | 
			
		||||
                fragment1.invoke( null );
 | 
			
		||||
                break;
 | 
			
		||||
            case 4:
 | 
			
		||||
                fragment3.invoke( null );
 | 
			
		||||
                fragment1.invoke( null );
 | 
			
		||||
                fragment2.invoke( null );
 | 
			
		||||
                break;
 | 
			
		||||
            case 5:
 | 
			
		||||
                fragment3.invoke( null );
 | 
			
		||||
                fragment2.invoke( null );
 | 
			
		||||
                fragment1.invoke( null );
 | 
			
		||||
                break;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setFragment1( JspFragment fragment1 ) {
 | 
			
		||||
        this.fragment1 = fragment1;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public void setFragment2( JspFragment fragment2 ) {
 | 
			
		||||
        this.fragment2 = fragment2;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public void setFragment3( JspFragment fragment3 ) {
 | 
			
		||||
        this.fragment3 = fragment3;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,46 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
package jsp2.examples.simpletag;
 | 
			
		||||
 | 
			
		||||
import javax.servlet.jsp.JspException;
 | 
			
		||||
import javax.servlet.jsp.tagext.SimpleTagSupport;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Displays a tile as a single cell in a table.
 | 
			
		||||
 */
 | 
			
		||||
public class TileSimpleTag extends SimpleTagSupport {
 | 
			
		||||
    private String color;
 | 
			
		||||
    private String label;
 | 
			
		||||
 | 
			
		||||
    public void doTag() throws JspException, IOException {
 | 
			
		||||
	getJspContext().getOut().write( 
 | 
			
		||||
	    "<td width=\"32\" height=\"32\" bgcolor=\"" + this.color + 
 | 
			
		||||
	    "\"><font color=\"#ffffff\"><center>" + this.label + 
 | 
			
		||||
                "</center></font></td>" );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setColor( String color ) {
 | 
			
		||||
        this.color = color;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public void setLabel( String label ) {
 | 
			
		||||
        this.label = label;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,136 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
package listeners;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import javax.servlet.ServletContext;
 | 
			
		||||
import javax.servlet.ServletContextAttributeEvent;
 | 
			
		||||
import javax.servlet.ServletContextAttributeListener;
 | 
			
		||||
import javax.servlet.ServletContextEvent;
 | 
			
		||||
import javax.servlet.ServletContextListener;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Example listener for context-related application events, which were
 | 
			
		||||
 * introduced in the 2.3 version of the Servlet API.  This listener
 | 
			
		||||
 * merely documents the occurrence of such events in the application log
 | 
			
		||||
 * associated with our servlet context.
 | 
			
		||||
 *
 | 
			
		||||
 * @author Craig R. McClanahan
 | 
			
		||||
 * @version $Revision: 500674 $ $Date: 2007-01-28 00:15:00 +0100 (dim., 28 janv. 2007) $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
public final class ContextListener
 | 
			
		||||
    implements ServletContextAttributeListener, ServletContextListener {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ----------------------------------------------------- Instance Variables
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The servlet context with which we are associated.
 | 
			
		||||
     */
 | 
			
		||||
    private ServletContext context = null;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // --------------------------------------------------------- Public Methods
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Record the fact that a servlet context attribute was added.
 | 
			
		||||
     *
 | 
			
		||||
     * @param event The servlet context attribute event
 | 
			
		||||
     */
 | 
			
		||||
    public void attributeAdded(ServletContextAttributeEvent event) {
 | 
			
		||||
 | 
			
		||||
	log("attributeAdded('" + event.getName() + "', '" +
 | 
			
		||||
	    event.getValue() + "')");
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Record the fact that a servlet context attribute was removed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param event The servlet context attribute event
 | 
			
		||||
     */
 | 
			
		||||
    public void attributeRemoved(ServletContextAttributeEvent event) {
 | 
			
		||||
 | 
			
		||||
	log("attributeRemoved('" + event.getName() + "', '" +
 | 
			
		||||
	    event.getValue() + "')");
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Record the fact that a servlet context attribute was replaced.
 | 
			
		||||
     *
 | 
			
		||||
     * @param event The servlet context attribute event
 | 
			
		||||
     */
 | 
			
		||||
    public void attributeReplaced(ServletContextAttributeEvent event) {
 | 
			
		||||
 | 
			
		||||
	log("attributeReplaced('" + event.getName() + "', '" +
 | 
			
		||||
	    event.getValue() + "')");
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Record the fact that this web application has been destroyed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param event The servlet context event
 | 
			
		||||
     */
 | 
			
		||||
    public void contextDestroyed(ServletContextEvent event) {
 | 
			
		||||
 | 
			
		||||
	log("contextDestroyed()");
 | 
			
		||||
	this.context = null;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Record the fact that this web application has been initialized.
 | 
			
		||||
     *
 | 
			
		||||
     * @param event The servlet context event
 | 
			
		||||
     */
 | 
			
		||||
    public void contextInitialized(ServletContextEvent event) {
 | 
			
		||||
 | 
			
		||||
	this.context = event.getServletContext();
 | 
			
		||||
	log("contextInitialized()");
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // -------------------------------------------------------- Private Methods
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Log a message to the servlet context application log.
 | 
			
		||||
     *
 | 
			
		||||
     * @param message Message to be logged
 | 
			
		||||
     */
 | 
			
		||||
    private void log(String message) {
 | 
			
		||||
 | 
			
		||||
	if (context != null)
 | 
			
		||||
	    context.log("ContextListener: " + message);
 | 
			
		||||
	else
 | 
			
		||||
	    System.out.println("ContextListener: " + message);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,163 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
package listeners;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import javax.servlet.ServletContext;
 | 
			
		||||
import javax.servlet.ServletContextEvent;
 | 
			
		||||
import javax.servlet.ServletContextListener;
 | 
			
		||||
import javax.servlet.http.HttpSessionAttributeListener;
 | 
			
		||||
import javax.servlet.http.HttpSessionBindingEvent;
 | 
			
		||||
import javax.servlet.http.HttpSessionEvent;
 | 
			
		||||
import javax.servlet.http.HttpSessionListener;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Example listener for context-related application events, which were
 | 
			
		||||
 * introduced in the 2.3 version of the Servlet API.  This listener
 | 
			
		||||
 * merely documents the occurrence of such events in the application log
 | 
			
		||||
 * associated with our servlet context.
 | 
			
		||||
 *
 | 
			
		||||
 * @author Craig R. McClanahan
 | 
			
		||||
 * @version $Revision: 500674 $ $Date: 2007-01-28 00:15:00 +0100 (dim., 28 janv. 2007) $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
public final class SessionListener
 | 
			
		||||
    implements ServletContextListener,
 | 
			
		||||
	       HttpSessionAttributeListener, HttpSessionListener {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ----------------------------------------------------- Instance Variables
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The servlet context with which we are associated.
 | 
			
		||||
     */
 | 
			
		||||
    private ServletContext context = null;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // --------------------------------------------------------- Public Methods
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Record the fact that a servlet context attribute was added.
 | 
			
		||||
     *
 | 
			
		||||
     * @param event The session attribute event
 | 
			
		||||
     */
 | 
			
		||||
    public void attributeAdded(HttpSessionBindingEvent event) {
 | 
			
		||||
 | 
			
		||||
	log("attributeAdded('" + event.getSession().getId() + "', '" +
 | 
			
		||||
	    event.getName() + "', '" + event.getValue() + "')");
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Record the fact that a servlet context attribute was removed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param event The session attribute event
 | 
			
		||||
     */
 | 
			
		||||
    public void attributeRemoved(HttpSessionBindingEvent event) {
 | 
			
		||||
 | 
			
		||||
	log("attributeRemoved('" + event.getSession().getId() + "', '" +
 | 
			
		||||
	    event.getName() + "', '" + event.getValue() + "')");
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Record the fact that a servlet context attribute was replaced.
 | 
			
		||||
     *
 | 
			
		||||
     * @param event The session attribute event
 | 
			
		||||
     */
 | 
			
		||||
    public void attributeReplaced(HttpSessionBindingEvent event) {
 | 
			
		||||
 | 
			
		||||
	log("attributeReplaced('" + event.getSession().getId() + "', '" +
 | 
			
		||||
	    event.getName() + "', '" + event.getValue() + "')");
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Record the fact that this web application has been destroyed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param event The servlet context event
 | 
			
		||||
     */
 | 
			
		||||
    public void contextDestroyed(ServletContextEvent event) {
 | 
			
		||||
 | 
			
		||||
	log("contextDestroyed()");
 | 
			
		||||
	this.context = null;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Record the fact that this web application has been initialized.
 | 
			
		||||
     *
 | 
			
		||||
     * @param event The servlet context event
 | 
			
		||||
     */
 | 
			
		||||
    public void contextInitialized(ServletContextEvent event) {
 | 
			
		||||
 | 
			
		||||
	this.context = event.getServletContext();
 | 
			
		||||
	log("contextInitialized()");
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Record the fact that a session has been created.
 | 
			
		||||
     *
 | 
			
		||||
     * @param event The session event
 | 
			
		||||
     */
 | 
			
		||||
    public void sessionCreated(HttpSessionEvent event) {
 | 
			
		||||
 | 
			
		||||
	log("sessionCreated('" + event.getSession().getId() + "')");
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Record the fact that a session has been destroyed.
 | 
			
		||||
     *
 | 
			
		||||
     * @param event The session event
 | 
			
		||||
     */
 | 
			
		||||
    public void sessionDestroyed(HttpSessionEvent event) {
 | 
			
		||||
 | 
			
		||||
	log("sessionDestroyed('" + event.getSession().getId() + "')");
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // -------------------------------------------------------- Private Methods
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Log a message to the servlet context application log.
 | 
			
		||||
     *
 | 
			
		||||
     * @param message Message to be logged
 | 
			
		||||
     */
 | 
			
		||||
    private void log(String message) {
 | 
			
		||||
 | 
			
		||||
	if (context != null)
 | 
			
		||||
	    context.log("SessionListener: " + message);
 | 
			
		||||
	else
 | 
			
		||||
	    System.out.println("SessionListener: " + message);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,79 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Originally written by Jason Hunter, http://www.servlets.com.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package num;
 | 
			
		||||
 | 
			
		||||
import java.util.*;
 | 
			
		||||
 | 
			
		||||
public class NumberGuessBean {
 | 
			
		||||
 | 
			
		||||
  int answer;
 | 
			
		||||
  boolean success;
 | 
			
		||||
  String hint;
 | 
			
		||||
  int numGuesses;
 | 
			
		||||
 | 
			
		||||
  public NumberGuessBean() {
 | 
			
		||||
    reset();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public void setGuess(String guess) {
 | 
			
		||||
    numGuesses++;
 | 
			
		||||
 | 
			
		||||
    int g;
 | 
			
		||||
    try {
 | 
			
		||||
      g = Integer.parseInt(guess);
 | 
			
		||||
    }
 | 
			
		||||
    catch (NumberFormatException e) {
 | 
			
		||||
      g = -1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (g == answer) {
 | 
			
		||||
      success = true;
 | 
			
		||||
    }
 | 
			
		||||
    else if (g == -1) {
 | 
			
		||||
      hint = "a number next time";
 | 
			
		||||
    }
 | 
			
		||||
    else if (g < answer) {
 | 
			
		||||
      hint = "higher";
 | 
			
		||||
    }
 | 
			
		||||
    else if (g > answer) {
 | 
			
		||||
      hint = "lower";
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public boolean getSuccess() {
 | 
			
		||||
    return success;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public String getHint() {
 | 
			
		||||
    return "" + hint;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public int getNumGuesses() {
 | 
			
		||||
    return numGuesses;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public void reset() {
 | 
			
		||||
    answer = Math.abs(new Random().nextInt() % 100) + 1;
 | 
			
		||||
    success = false;
 | 
			
		||||
    numGuesses = 0;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,32 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
import javax.servlet.http.*;
 | 
			
		||||
 | 
			
		||||
public class servletToJsp extends HttpServlet {
 | 
			
		||||
 | 
			
		||||
    public void doGet (HttpServletRequest request,
 | 
			
		||||
		       HttpServletResponse response) {
 | 
			
		||||
 | 
			
		||||
	try {
 | 
			
		||||
	    // Set the attribute and Forward to hello.jsp
 | 
			
		||||
	    request.setAttribute ("servletName", "servletToJsp");
 | 
			
		||||
	    getServletConfig().getServletContext().getRequestDispatcher("/jsp/jsptoserv/hello.jsp").forward(request, response);
 | 
			
		||||
	} catch (Exception ex) {
 | 
			
		||||
	    ex.printStackTrace ();
 | 
			
		||||
	}
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,69 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
package sessions;
 | 
			
		||||
 | 
			
		||||
import javax.servlet.http.*;
 | 
			
		||||
import java.util.Vector;
 | 
			
		||||
 | 
			
		||||
public class DummyCart {
 | 
			
		||||
    Vector<String> v = new Vector<String>();
 | 
			
		||||
    String submit = null;
 | 
			
		||||
    String item = null;
 | 
			
		||||
    
 | 
			
		||||
    private void addItem(String name) {
 | 
			
		||||
        v.addElement(name);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void removeItem(String name) {
 | 
			
		||||
        v.removeElement(name);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setItem(String name) {
 | 
			
		||||
        item = name;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public void setSubmit(String s) {
 | 
			
		||||
        submit = s;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String[] getItems() {
 | 
			
		||||
        String[] s = new String[v.size()];
 | 
			
		||||
        v.copyInto(s);
 | 
			
		||||
        return s;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    public void processRequest(HttpServletRequest request) {
 | 
			
		||||
        // null value for submit - user hit enter instead of clicking on 
 | 
			
		||||
        // "add" or "remove"
 | 
			
		||||
        if (submit == null) 
 | 
			
		||||
            addItem(item);
 | 
			
		||||
 | 
			
		||||
        if (submit.equals("add"))
 | 
			
		||||
            addItem(item);
 | 
			
		||||
        else if (submit.equals("remove")) 
 | 
			
		||||
            removeItem(item);
 | 
			
		||||
        
 | 
			
		||||
        // reset at the end of the request
 | 
			
		||||
        reset();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // reset
 | 
			
		||||
    private void reset() {
 | 
			
		||||
        submit = null;
 | 
			
		||||
        item = null;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,69 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
package util;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * HTML filter utility.
 | 
			
		||||
 *
 | 
			
		||||
 * @author Craig R. McClanahan
 | 
			
		||||
 * @author Tim Tye
 | 
			
		||||
 * @version $Revision: 467217 $ $Date: 2006-10-24 05:14:34 +0200 (mar., 24 oct. 2006) $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
public final class HTMLFilter {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Filter the specified message string for characters that are sensitive
 | 
			
		||||
     * in HTML.  This avoids potential attacks caused by including JavaScript
 | 
			
		||||
     * codes in the request URL that is often reported in error messages.
 | 
			
		||||
     *
 | 
			
		||||
     * @param message The message string to be filtered
 | 
			
		||||
     */
 | 
			
		||||
    public static String filter(String message) {
 | 
			
		||||
 | 
			
		||||
        if (message == null)
 | 
			
		||||
            return (null);
 | 
			
		||||
 | 
			
		||||
        char content[] = new char[message.length()];
 | 
			
		||||
        message.getChars(0, message.length(), content, 0);
 | 
			
		||||
        StringBuffer result = new StringBuffer(content.length + 50);
 | 
			
		||||
        for (int i = 0; i < content.length; i++) {
 | 
			
		||||
            switch (content[i]) {
 | 
			
		||||
            case '<':
 | 
			
		||||
                result.append("<");
 | 
			
		||||
                break;
 | 
			
		||||
            case '>':
 | 
			
		||||
                result.append(">");
 | 
			
		||||
                break;
 | 
			
		||||
            case '&':
 | 
			
		||||
                result.append("&");
 | 
			
		||||
                break;
 | 
			
		||||
            case '"':
 | 
			
		||||
                result.append(""");
 | 
			
		||||
                break;
 | 
			
		||||
            default:
 | 
			
		||||
                result.append(content[i]);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return (result.toString());
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,84 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
package validators;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import java.io.InputStream;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import javax.servlet.jsp.tagext.PageData;
 | 
			
		||||
import javax.servlet.jsp.tagext.TagLibraryValidator;
 | 
			
		||||
import javax.servlet.jsp.tagext.ValidationMessage;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Example tag library validator that simply dumps the XML version of each
 | 
			
		||||
 * page to standard output (which will typically be sent to the file
 | 
			
		||||
 * <code>$CATALINA_HOME/logs/catalina.out</code>).  To utilize it, simply
 | 
			
		||||
 * include a <code>taglib</code> directive for this tag library at the top
 | 
			
		||||
 * of your JSP page.
 | 
			
		||||
 *
 | 
			
		||||
 * @author Craig McClanahan
 | 
			
		||||
 * @version $Revision: 467217 $ $Date: 2006-10-24 05:14:34 +0200 (mar., 24 oct. 2006) $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
public class DebugValidator extends TagLibraryValidator {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // ----------------------------------------------------- Instance Variables
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // --------------------------------------------------------- Public Methods
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Validate a JSP page.  This will get invoked once per directive in the
 | 
			
		||||
     * JSP page.  This method will return <code>null</code> if the page is
 | 
			
		||||
     * valid; otherwise the method should return an array of
 | 
			
		||||
     * <code>ValidationMessage</code> objects.  An array of length zero is
 | 
			
		||||
     * also interpreted as no errors.
 | 
			
		||||
     *
 | 
			
		||||
     * @param prefix The value of the prefix argument in this directive
 | 
			
		||||
     * @param uri The value of the URI argument in this directive
 | 
			
		||||
     * @param page The page data for this page
 | 
			
		||||
     */
 | 
			
		||||
    public ValidationMessage[] validate(String prefix, String uri,
 | 
			
		||||
                                        PageData page) {
 | 
			
		||||
 | 
			
		||||
        System.out.println("---------- Prefix=" + prefix + " URI=" + uri +
 | 
			
		||||
                           "----------");
 | 
			
		||||
 | 
			
		||||
        InputStream is = page.getInputStream();
 | 
			
		||||
        while (true) {
 | 
			
		||||
            try {
 | 
			
		||||
                int ch = is.read();
 | 
			
		||||
                if (ch < 0)
 | 
			
		||||
                    break;
 | 
			
		||||
                System.out.print((char) ch);
 | 
			
		||||
            } catch (IOException e) {
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        System.out.println();
 | 
			
		||||
        System.out.println("-----------------------------------------------");
 | 
			
		||||
        return (null);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,212 @@
 | 
			
		||||
/*
 | 
			
		||||
* 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.
 | 
			
		||||
*/
 | 
			
		||||
import java.util.*;
 | 
			
		||||
import java.awt.*;
 | 
			
		||||
import java.applet.*;
 | 
			
		||||
import java.text.*;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Time!
 | 
			
		||||
 *
 | 
			
		||||
 * @author Rachel Gollub
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
public class Clock2 extends Applet implements Runnable {
 | 
			
		||||
    Thread timer;                // The thread that displays clock
 | 
			
		||||
    int lastxs, lastys, lastxm,
 | 
			
		||||
        lastym, lastxh, lastyh;  // Dimensions used to draw hands 
 | 
			
		||||
    SimpleDateFormat formatter;  // Formats the date displayed
 | 
			
		||||
    String lastdate;             // String to hold date displayed
 | 
			
		||||
    Font clockFaceFont;          // Font for number display on clock
 | 
			
		||||
    Date currentDate;            // Used to get date to display
 | 
			
		||||
    Color handColor;             // Color of main hands and dial
 | 
			
		||||
    Color numberColor;           // Color of second hand and numbers
 | 
			
		||||
 | 
			
		||||
    public void init() {
 | 
			
		||||
        int x,y;
 | 
			
		||||
        lastxs = lastys = lastxm = lastym = lastxh = lastyh = 0;
 | 
			
		||||
        formatter = new SimpleDateFormat ("EEE MMM dd hh:mm:ss yyyy", Locale.getDefault());
 | 
			
		||||
        currentDate = new Date();
 | 
			
		||||
        lastdate = formatter.format(currentDate);
 | 
			
		||||
        clockFaceFont = new Font("Serif", Font.PLAIN, 14);
 | 
			
		||||
        handColor = Color.blue;
 | 
			
		||||
        numberColor = Color.darkGray;
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            setBackground(new Color(Integer.parseInt(getParameter("bgcolor"),16)));
 | 
			
		||||
        } catch (Exception E) { }
 | 
			
		||||
        try {
 | 
			
		||||
            handColor = new Color(Integer.parseInt(getParameter("fgcolor1"),16));
 | 
			
		||||
        } catch (Exception E) { }
 | 
			
		||||
        try {
 | 
			
		||||
            numberColor = new Color(Integer.parseInt(getParameter("fgcolor2"),16));
 | 
			
		||||
        } catch (Exception E) { }
 | 
			
		||||
        resize(300,300);              // Set clock window size
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Plotpoints allows calculation to only cover 45 degrees of the circle,
 | 
			
		||||
    // and then mirror
 | 
			
		||||
    public void plotpoints(int x0, int y0, int x, int y, Graphics g) {
 | 
			
		||||
        g.drawLine(x0+x,y0+y,x0+x,y0+y);
 | 
			
		||||
        g.drawLine(x0+y,y0+x,x0+y,y0+x);
 | 
			
		||||
        g.drawLine(x0+y,y0-x,x0+y,y0-x);
 | 
			
		||||
        g.drawLine(x0+x,y0-y,x0+x,y0-y);
 | 
			
		||||
        g.drawLine(x0-x,y0-y,x0-x,y0-y);
 | 
			
		||||
        g.drawLine(x0-y,y0-x,x0-y,y0-x);
 | 
			
		||||
        g.drawLine(x0-y,y0+x,x0-y,y0+x);
 | 
			
		||||
        g.drawLine(x0-x,y0+y,x0-x,y0+y);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Circle is just Bresenham's algorithm for a scan converted circle
 | 
			
		||||
    public void circle(int x0, int y0, int r, Graphics g) {
 | 
			
		||||
        int x,y;
 | 
			
		||||
        float d;
 | 
			
		||||
        x=0;
 | 
			
		||||
        y=r;
 | 
			
		||||
        d=5/4-r;
 | 
			
		||||
        plotpoints(x0,y0,x,y,g);
 | 
			
		||||
 | 
			
		||||
        while (y>x){
 | 
			
		||||
            if (d<0) {
 | 
			
		||||
                d=d+2*x+3;
 | 
			
		||||
                x++;
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                d=d+2*(x-y)+5;
 | 
			
		||||
                x++;
 | 
			
		||||
                y--;
 | 
			
		||||
            }
 | 
			
		||||
            plotpoints(x0,y0,x,y,g);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Paint is the main part of the program
 | 
			
		||||
    public void paint(Graphics g) {
 | 
			
		||||
        int xh, yh, xm, ym, xs, ys, s = 0, m = 10, h = 10, xcenter, ycenter;
 | 
			
		||||
        String today;
 | 
			
		||||
 | 
			
		||||
        currentDate = new Date();
 | 
			
		||||
        SimpleDateFormat formatter = new SimpleDateFormat("s",Locale.getDefault());
 | 
			
		||||
        try {
 | 
			
		||||
            s = Integer.parseInt(formatter.format(currentDate));
 | 
			
		||||
        } catch (NumberFormatException n) {
 | 
			
		||||
            s = 0;
 | 
			
		||||
        }
 | 
			
		||||
        formatter.applyPattern("m");
 | 
			
		||||
        try {
 | 
			
		||||
            m = Integer.parseInt(formatter.format(currentDate));
 | 
			
		||||
        } catch (NumberFormatException n) {
 | 
			
		||||
            m = 10;
 | 
			
		||||
        }    
 | 
			
		||||
        formatter.applyPattern("h");
 | 
			
		||||
        try {
 | 
			
		||||
            h = Integer.parseInt(formatter.format(currentDate));
 | 
			
		||||
        } catch (NumberFormatException n) {
 | 
			
		||||
            h = 10;
 | 
			
		||||
        }
 | 
			
		||||
        formatter.applyPattern("EEE MMM dd HH:mm:ss yyyy");
 | 
			
		||||
        today = formatter.format(currentDate);
 | 
			
		||||
        xcenter=80;
 | 
			
		||||
        ycenter=55;
 | 
			
		||||
    
 | 
			
		||||
    // a= s* pi/2 - pi/2 (to switch 0,0 from 3:00 to 12:00)
 | 
			
		||||
    // x = r(cos a) + xcenter, y = r(sin a) + ycenter
 | 
			
		||||
    
 | 
			
		||||
        xs = (int)(Math.cos(s * 3.14f/30 - 3.14f/2) * 45 + xcenter);
 | 
			
		||||
        ys = (int)(Math.sin(s * 3.14f/30 - 3.14f/2) * 45 + ycenter);
 | 
			
		||||
        xm = (int)(Math.cos(m * 3.14f/30 - 3.14f/2) * 40 + xcenter);
 | 
			
		||||
        ym = (int)(Math.sin(m * 3.14f/30 - 3.14f/2) * 40 + ycenter);
 | 
			
		||||
        xh = (int)(Math.cos((h*30 + m/2) * 3.14f/180 - 3.14f/2) * 30 + xcenter);
 | 
			
		||||
        yh = (int)(Math.sin((h*30 + m/2) * 3.14f/180 - 3.14f/2) * 30 + ycenter);
 | 
			
		||||
    
 | 
			
		||||
    // Draw the circle and numbers
 | 
			
		||||
    
 | 
			
		||||
        g.setFont(clockFaceFont);
 | 
			
		||||
        g.setColor(handColor);
 | 
			
		||||
        circle(xcenter,ycenter,50,g);
 | 
			
		||||
        g.setColor(numberColor);
 | 
			
		||||
        g.drawString("9",xcenter-45,ycenter+3); 
 | 
			
		||||
        g.drawString("3",xcenter+40,ycenter+3);
 | 
			
		||||
        g.drawString("12",xcenter-5,ycenter-37);
 | 
			
		||||
        g.drawString("6",xcenter-3,ycenter+45);
 | 
			
		||||
 | 
			
		||||
    // Erase if necessary, and redraw
 | 
			
		||||
    
 | 
			
		||||
        g.setColor(getBackground());
 | 
			
		||||
        if (xs != lastxs || ys != lastys) {
 | 
			
		||||
            g.drawLine(xcenter, ycenter, lastxs, lastys);
 | 
			
		||||
            g.drawString(lastdate, 5, 125);
 | 
			
		||||
        }
 | 
			
		||||
        if (xm != lastxm || ym != lastym) {
 | 
			
		||||
            g.drawLine(xcenter, ycenter-1, lastxm, lastym);
 | 
			
		||||
            g.drawLine(xcenter-1, ycenter, lastxm, lastym); }
 | 
			
		||||
        if (xh != lastxh || yh != lastyh) {
 | 
			
		||||
            g.drawLine(xcenter, ycenter-1, lastxh, lastyh);
 | 
			
		||||
            g.drawLine(xcenter-1, ycenter, lastxh, lastyh); }
 | 
			
		||||
        g.setColor(numberColor);
 | 
			
		||||
        g.drawString("", 5, 125);
 | 
			
		||||
        g.drawString(today, 5, 125);    
 | 
			
		||||
        g.drawLine(xcenter, ycenter, xs, ys);
 | 
			
		||||
        g.setColor(handColor);
 | 
			
		||||
        g.drawLine(xcenter, ycenter-1, xm, ym);
 | 
			
		||||
        g.drawLine(xcenter-1, ycenter, xm, ym);
 | 
			
		||||
        g.drawLine(xcenter, ycenter-1, xh, yh);
 | 
			
		||||
        g.drawLine(xcenter-1, ycenter, xh, yh);
 | 
			
		||||
        lastxs=xs; lastys=ys;
 | 
			
		||||
        lastxm=xm; lastym=ym;
 | 
			
		||||
        lastxh=xh; lastyh=yh;
 | 
			
		||||
        lastdate = today;
 | 
			
		||||
        currentDate=null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void start() {
 | 
			
		||||
        timer = new Thread(this);
 | 
			
		||||
        timer.start();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void stop() {
 | 
			
		||||
        timer = null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void run() {
 | 
			
		||||
        Thread me = Thread.currentThread();
 | 
			
		||||
        while (timer == me) {
 | 
			
		||||
            try {
 | 
			
		||||
                Thread.currentThread().sleep(100);
 | 
			
		||||
            } catch (InterruptedException e) {
 | 
			
		||||
            }
 | 
			
		||||
            repaint();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void update(Graphics g) {
 | 
			
		||||
        paint(g);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getAppletInfo() {
 | 
			
		||||
        return "Title: A Clock \nAuthor: Rachel Gollub, 1995 \nAn analog clock.";
 | 
			
		||||
    }
 | 
			
		||||
  
 | 
			
		||||
    public String[][] getParameterInfo() {
 | 
			
		||||
        String[][] info = {
 | 
			
		||||
            {"bgcolor", "hexadecimal RGB number", "The background color. Default is the color of your browser."},
 | 
			
		||||
            {"fgcolor1", "hexadecimal RGB number", "The color of the hands and dial. Default is blue."},
 | 
			
		||||
            {"fgcolor2", "hexadecimal RGB number", "The color of the seconds hand and numbers. Default is dark gray."}
 | 
			
		||||
        };
 | 
			
		||||
        return info;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,54 @@
 | 
			
		||||
<?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 taglib
 | 
			
		||||
        PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
 | 
			
		||||
	"http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">
 | 
			
		||||
 | 
			
		||||
<!-- a tag library descriptor -->
 | 
			
		||||
 | 
			
		||||
<taglib>
 | 
			
		||||
  <tlib-version>1.0</tlib-version>
 | 
			
		||||
  <jsp-version>1.2</jsp-version>
 | 
			
		||||
  <short-name>debug</short-name>
 | 
			
		||||
  <uri>http://jakarta.apache.org/tomcat/debug-taglib</uri>
 | 
			
		||||
  <description>
 | 
			
		||||
    This tag library defines no tags.  Instead, its purpose is encapsulated
 | 
			
		||||
    in the TagLibraryValidator implementation that simply outputs the XML
 | 
			
		||||
    version of a JSP page to standard output, whenever this tag library is
 | 
			
		||||
    referenced in a "taglib" directive in a JSP page.
 | 
			
		||||
  </description>
 | 
			
		||||
  <validator>
 | 
			
		||||
    <validator-class>validators.DebugValidator</validator-class>
 | 
			
		||||
  </validator>
 | 
			
		||||
 | 
			
		||||
  <!-- This is a dummy tag solely to satisfy DTD requirements -->  
 | 
			
		||||
  <tag>
 | 
			
		||||
    <name>log</name>
 | 
			
		||||
    <tag-class>examples.LogTag</tag-class>
 | 
			
		||||
    <body-content>TAGDEPENDENT</body-content>
 | 
			
		||||
    <description>
 | 
			
		||||
	Perform a server side action; Log the message.
 | 
			
		||||
    </description>
 | 
			
		||||
    <attribute>
 | 
			
		||||
	<name>toBrowser</name>
 | 
			
		||||
	<required>false</required>
 | 
			
		||||
    </attribute>
 | 
			
		||||
  </tag>
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
</taglib>
 | 
			
		||||
@@ -0,0 +1,83 @@
 | 
			
		||||
<?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 taglib
 | 
			
		||||
        PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
 | 
			
		||||
	"http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">
 | 
			
		||||
 | 
			
		||||
<taglib>
 | 
			
		||||
 | 
			
		||||
  <tlib-version>1.0</tlib-version>
 | 
			
		||||
  <jsp-version>1.2</jsp-version>
 | 
			
		||||
  <short-name>simple</short-name>
 | 
			
		||||
  <uri>http://jakarta.apache.org/tomcat/example-taglib</uri>
 | 
			
		||||
  <description>
 | 
			
		||||
	A simple tab library for the examples
 | 
			
		||||
  </description>
 | 
			
		||||
 | 
			
		||||
  <tag>
 | 
			
		||||
    <name>ShowSource</name>
 | 
			
		||||
    <tag-class>examples.ShowSource</tag-class>
 | 
			
		||||
    <description> Display JSP sources </description>
 | 
			
		||||
    <attribute>
 | 
			
		||||
       <name>jspFile</name>
 | 
			
		||||
       <required>true</required>
 | 
			
		||||
       <rtexprvalue>true</rtexprvalue>
 | 
			
		||||
    </attribute>
 | 
			
		||||
  </tag>       
 | 
			
		||||
 | 
			
		||||
  <!-- A simple Tag -->
 | 
			
		||||
  <!-- foo tag -->
 | 
			
		||||
  <tag>
 | 
			
		||||
    <name>foo</name>
 | 
			
		||||
    <tag-class>examples.FooTag</tag-class>
 | 
			
		||||
    <tei-class>examples.FooTagExtraInfo</tei-class>
 | 
			
		||||
    <body-content>JSP</body-content>
 | 
			
		||||
    <description>
 | 
			
		||||
	Perform a server side action; uses 3 mandatory attributes
 | 
			
		||||
    </description>
 | 
			
		||||
 | 
			
		||||
    <attribute>
 | 
			
		||||
      <name>att1</name>
 | 
			
		||||
      <required>true</required>
 | 
			
		||||
    </attribute>
 | 
			
		||||
    <attribute>
 | 
			
		||||
      <name>att2</name>
 | 
			
		||||
      <required>true</required>
 | 
			
		||||
    </attribute>
 | 
			
		||||
    <attribute>
 | 
			
		||||
      <name>att3</name>
 | 
			
		||||
      <required>true</required>
 | 
			
		||||
    </attribute>
 | 
			
		||||
  </tag>
 | 
			
		||||
 | 
			
		||||
  <!-- Another simple tag -->
 | 
			
		||||
  <!-- log tag -->
 | 
			
		||||
  <tag>
 | 
			
		||||
    <name>log</name>
 | 
			
		||||
    <tag-class>examples.LogTag</tag-class>
 | 
			
		||||
    <body-content>TAGDEPENDENT</body-content>
 | 
			
		||||
    <description>
 | 
			
		||||
	Perform a server side action; Log the message.
 | 
			
		||||
    </description>
 | 
			
		||||
    <attribute>
 | 
			
		||||
	<name>toBrowser</name>
 | 
			
		||||
	<required>false</required>
 | 
			
		||||
    </attribute>
 | 
			
		||||
  </tag>
 | 
			
		||||
  
 | 
			
		||||
</taglib>
 | 
			
		||||
@@ -0,0 +1,124 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8" ?>
 | 
			
		||||
<!--
 | 
			
		||||
 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.
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
<taglib 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-jsptaglibrary_2_0.xsd"
 | 
			
		||||
    version="2.0">
 | 
			
		||||
    <description>A tag library exercising SimpleTag handlers.</description>
 | 
			
		||||
    <tlib-version>1.0</tlib-version>
 | 
			
		||||
    <short-name>SimpleTagLibrary</short-name>
 | 
			
		||||
    <uri>/SimpleTagLibrary</uri>
 | 
			
		||||
    <tag>
 | 
			
		||||
	<description>Outputs Hello, World</description>
 | 
			
		||||
        <name>helloWorld</name>
 | 
			
		||||
	<tag-class>jsp2.examples.simpletag.HelloWorldSimpleTag</tag-class>
 | 
			
		||||
	<body-content>empty</body-content>
 | 
			
		||||
    </tag>
 | 
			
		||||
    <tag>
 | 
			
		||||
        <description>Repeats the body of the tag 'num' times</description>
 | 
			
		||||
        <name>repeat</name>
 | 
			
		||||
        <tag-class>jsp2.examples.simpletag.RepeatSimpleTag</tag-class>
 | 
			
		||||
        <body-content>scriptless</body-content>
 | 
			
		||||
        <variable>
 | 
			
		||||
            <description>Current invocation count (1 to num)</description>
 | 
			
		||||
            <name-given>count</name-given>
 | 
			
		||||
        </variable>
 | 
			
		||||
        <attribute>
 | 
			
		||||
            <name>num</name>
 | 
			
		||||
            <required>true</required>
 | 
			
		||||
            <rtexprvalue>true</rtexprvalue>
 | 
			
		||||
        </attribute>
 | 
			
		||||
    </tag>
 | 
			
		||||
    <tag>
 | 
			
		||||
	<description>Populates the page context with a BookBean</description>
 | 
			
		||||
        <name>findBook</name>
 | 
			
		||||
	<tag-class>jsp2.examples.simpletag.FindBookSimpleTag</tag-class>
 | 
			
		||||
	<body-content>empty</body-content>
 | 
			
		||||
	<attribute>
 | 
			
		||||
	    <name>var</name>
 | 
			
		||||
	    <required>true</required>
 | 
			
		||||
	    <rtexprvalue>true</rtexprvalue>
 | 
			
		||||
	</attribute>
 | 
			
		||||
    </tag>
 | 
			
		||||
    <tag>
 | 
			
		||||
        <description>
 | 
			
		||||
            Takes 3 fragments and invokes them in a random order
 | 
			
		||||
        </description>
 | 
			
		||||
        <name>shuffle</name>
 | 
			
		||||
        <tag-class>jsp2.examples.simpletag.ShuffleSimpleTag</tag-class>
 | 
			
		||||
        <body-content>empty</body-content>
 | 
			
		||||
        <attribute>
 | 
			
		||||
            <name>fragment1</name>
 | 
			
		||||
            <required>true</required>
 | 
			
		||||
	    <fragment>true</fragment>
 | 
			
		||||
        </attribute>
 | 
			
		||||
        <attribute>
 | 
			
		||||
            <name>fragment2</name>
 | 
			
		||||
            <required>true</required>
 | 
			
		||||
	    <fragment>true</fragment>
 | 
			
		||||
        </attribute>
 | 
			
		||||
        <attribute>
 | 
			
		||||
            <name>fragment3</name>
 | 
			
		||||
            <required>true</required>
 | 
			
		||||
	    <fragment>true</fragment>
 | 
			
		||||
        </attribute>
 | 
			
		||||
    </tag>
 | 
			
		||||
    <tag>
 | 
			
		||||
        <description>Outputs a colored tile</description>
 | 
			
		||||
        <name>tile</name>
 | 
			
		||||
        <tag-class>jsp2.examples.simpletag.TileSimpleTag</tag-class>
 | 
			
		||||
        <body-content>empty</body-content>
 | 
			
		||||
        <attribute>
 | 
			
		||||
            <name>color</name>
 | 
			
		||||
            <required>true</required>
 | 
			
		||||
        </attribute>
 | 
			
		||||
        <attribute>
 | 
			
		||||
            <name>label</name>
 | 
			
		||||
            <required>true</required>
 | 
			
		||||
        </attribute>
 | 
			
		||||
    </tag>
 | 
			
		||||
    <tag>
 | 
			
		||||
	<description>
 | 
			
		||||
	  Tag that echoes all its attributes and body content
 | 
			
		||||
	</description>
 | 
			
		||||
	<name>echoAttributes</name>
 | 
			
		||||
	<tag-class>jsp2.examples.simpletag.EchoAttributesTag</tag-class>
 | 
			
		||||
	<body-content>empty</body-content>
 | 
			
		||||
	<dynamic-attributes>true</dynamic-attributes>
 | 
			
		||||
    </tag>
 | 
			
		||||
    <function>
 | 
			
		||||
        <description>Reverses the characters in the given String</description>
 | 
			
		||||
        <name>reverse</name>
 | 
			
		||||
	<function-class>jsp2.examples.el.Functions</function-class>
 | 
			
		||||
	<function-signature>java.lang.String reverse( java.lang.String )</function-signature>
 | 
			
		||||
    </function>
 | 
			
		||||
    <function>
 | 
			
		||||
        <description>Counts the number of vowels (a,e,i,o,u) in the given String</description>
 | 
			
		||||
        <name>countVowels</name>
 | 
			
		||||
	<function-class>jsp2.examples.el.Functions</function-class>
 | 
			
		||||
	<function-signature>java.lang.String numVowels( java.lang.String )</function-signature>
 | 
			
		||||
    </function>
 | 
			
		||||
    <function>
 | 
			
		||||
	<description>Converts the string to all caps</description>
 | 
			
		||||
        <name>caps</name>
 | 
			
		||||
	<function-class>jsp2.examples.el.Functions</function-class>
 | 
			
		||||
	<function-signature>java.lang.String caps( java.lang.String )</function-signature>
 | 
			
		||||
    </function>
 | 
			
		||||
</taglib>
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								P51/apache-tomcat-6.0.14/webapps/examples/WEB-INF/lib/jstl.jar
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								P51/apache-tomcat-6.0.14/webapps/examples/WEB-INF/lib/jstl.jar
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,55 @@
 | 
			
		||||
<!--
 | 
			
		||||
 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.
 | 
			
		||||
-->
 | 
			
		||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 | 
			
		||||
<%@ attribute name="normalPrice" fragment="true" %>
 | 
			
		||||
<%@ attribute name="onSale" fragment="true" %>
 | 
			
		||||
<%@ variable name-given="name" %>
 | 
			
		||||
<%@ variable name-given="price" %>
 | 
			
		||||
<%@ variable name-given="origPrice" %>
 | 
			
		||||
<%@ variable name-given="salePrice" %>
 | 
			
		||||
 | 
			
		||||
<table border="1">
 | 
			
		||||
  <tr>
 | 
			
		||||
    <td> 
 | 
			
		||||
      <c:set var="name" value="Hand-held Color PDA"/>
 | 
			
		||||
      <c:set var="price" value="$298.86"/>
 | 
			
		||||
      <jsp:invoke fragment="normalPrice"/>
 | 
			
		||||
    </td>
 | 
			
		||||
    <td> 
 | 
			
		||||
      <c:set var="name" value="4-Pack 150 Watt Light Bulbs"/>
 | 
			
		||||
      <c:set var="origPrice" value="$2.98"/>
 | 
			
		||||
      <c:set var="salePrice" value="$2.32"/>
 | 
			
		||||
      <jsp:invoke fragment="onSale"/>
 | 
			
		||||
    </td>
 | 
			
		||||
    <td> 
 | 
			
		||||
      <c:set var="name" value="Digital Cellular Phone"/>
 | 
			
		||||
      <c:set var="price" value="$68.74"/>
 | 
			
		||||
      <jsp:invoke fragment="normalPrice"/>
 | 
			
		||||
    </td>
 | 
			
		||||
    <td> 
 | 
			
		||||
      <c:set var="name" value="Baby Grand Piano"/>
 | 
			
		||||
      <c:set var="price" value="$10,800.00"/>
 | 
			
		||||
      <jsp:invoke fragment="normalPrice"/>
 | 
			
		||||
    </td>
 | 
			
		||||
    <td> 
 | 
			
		||||
      <c:set var="name" value="Luxury Car w/ Leather Seats"/>
 | 
			
		||||
      <c:set var="origPrice" value="$23,980.00"/>
 | 
			
		||||
      <c:set var="salePrice" value="$21,070.00"/>
 | 
			
		||||
      <jsp:invoke fragment="onSale"/>
 | 
			
		||||
    </td>
 | 
			
		||||
  </tr>
 | 
			
		||||
</table>
 | 
			
		||||
@@ -0,0 +1,17 @@
 | 
			
		||||
<!--
 | 
			
		||||
 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.
 | 
			
		||||
-->
 | 
			
		||||
Hello, world!
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user