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