vida sintaxis sentencias libros jsps for dummies documentacion ciclo basico jsp jstl el web.xml

sintaxis - servlets y jsps



Expresiones EL no evaluadas en JSP (2)

Sí, tengo doctype en web.xml <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "java.sun.com/dtd/web-app_2_3.dtd"; > <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "java.sun.com/dtd/web-app_2_3.dtd"; >

Elimine ese <!DOCTYPE> de web.xml y asegúrese de que <web-app> se declare conforme Servlet 2.4 o posterior y que todo esté bien. Un Servlet 3.0 válido (Tomcat 7, JBoss AS 6/7, GlassFish 3, etc.) compatible con web.xml ve a continuación en su totalidad , sin ningún <!DOCTYPE> :

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <!-- Config here. --> </web-app>

Para Servlet 3.1 (Tomcat 8, WildFly 8/9/10/11, GlassFish / Payara 4, etc.) se ve a continuación:

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <!-- Config here. --> </web-app>

Para Servlet 4.0 (Tomcat 9, WildFly 12, GlassFish / Payara 5, etc.) se ve a continuación:

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!-- Config here. --> </web-app>

Al usar JSTL 1.1 o más reciente, debe asegurarse de que su web.xml se declare de tal manera que la aplicación web se ejecute al menos en el modo Servlet 2.4, de lo contrario, las expresiones EL no funcionarán en la aplicación web.

Cuando todavía tenga un Servlet 2.3 o anterior <!DOCTYPE> o <web-app> en web.xml , aunque ya tenga un Servlet 2.4 o una XSD más reciente, aún se vería obligado a ejecutarse en el modo Servlet 2.3 o anterior, haciendo que las expresiones EL fallen.

La razón técnica es que EL originalmente era parte de JSTL 1.0 y no estaba disponible en Servlet 2.3 / JSP 1.2 y versiones anteriores. En JSTL 1.1, EL se eliminó de JSTL y se integró en JSP 2.0, que acompaña a Servlet 2.4. Entonces, si se declara que su web.xml ejecuta la aplicación web en el modo Servlet 2.3 o anterior, entonces JSP esperaría encontrar EL en la biblioteca JSTL, pero esto a su vez fallaría si se trata de una versión JSTL más nueva, que carece de EL.

Ver también:

Hay un pequeño problema con mi aplicación web servlets / jsp. Estoy tratando de usar jstl en la página jsp. Cuando uso cualquier etiqueta, por ejemplo:

<c:out value="${command}"/>

me muestra

${command}

en mi navegador en lugar del valor del parámetro ''comando''. Estoy usando maven (y supongo que el problema está aquí). Aquí están las dependencias pom xml:

<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>

mi etiqueta de declaración web.xml:

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

y parte jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <html> <head> <title>Parsing results</title> <link type="text/css" rel="stylesheet" href="css/page.css"/> <link type="text/css" rel="stylesheet" href="css/table.css"/> </head> <body> <h2 align="center">Results of parsing. Parsing method = <c:out value="${command}"/></h2>.......

EDITAR: El código, que establece el valor del comando, es simple:

request.setAttribute("command", parser.getName());

luego va

request.getRequestDispatcher(redir).forward(request, response);

¡Dime por favor, qué estoy haciendo mal! ¡Gracias!


En mi caso para el archivo web.xml (versión = "3.0") tuve que ejecutar la aplicación en el servidor Tomcat v.8 en lugar de v.7, de lo contrario tuve el mismo problema que usted. Espero que esto ayude a alguien...

<?xml version="1.0" encoding="ISO-8859-1" ?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">