2010-11-01 19 views
8

que estoy usando:HTTP - 500 org.springframework.web.util.NestedServletException: Error al procesar el controlador;

  1. Apache Tomcat 6.0.20
  2. 3.x primavera

quiero crear simple "Hola Mundo !!!" en mi página de índice. Por desgracia, me sale el siguiente error:

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config 
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:820) 
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716) 
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) 
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 

esta es mi controlador llamado IndexController.java

package com.dprima.controller; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.servlet.ModelAndView; 

@Controller 
public class IndexController { 
    @RequestMapping("/index") 
    public ModelAndView index(){ 
     String message = "Hello World !!!"; 
     return new ModelAndView("index","hello",message); 
    } 
} 

mi Web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
    <display-name>passion</display-name> 
    <servlet> 
     <servlet-name>dispatcher</servlet-name> 
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

     <servlet-mapping> 
     <servlet-name>dispatcher</servlet-name> 
     <url-pattern>*.php</url-pattern> 
     </servlet-mapping> 

     <welcome-file-list> 
     <welcome-file>redirect.jsp</welcome-file> 
     </welcome-file-list> 
</web-app> 

mi despachador-servlet .xml

... 
     <context:component-scan base-package="com.dprima.controller" /> 

     <bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
      <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> 
      <property name="prefix" value="/WEB-INF/jsp/" /> 
      <property name="suffix" value=".jsp" /> 
     </bean> 
    ... 

mi redirect.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<% response.sendRedirect("index.php"); %> 

mi index.jsp

<html> 
<head> 
    <title>Spring 3</title> 
</head> 
<body> 
    ${hello} 
</body> 
</html> 

me han añadido todos los archivos JAR incluyendo jstl.jar & standard.jar PORQUE Supongo que esto será necesario para el java.lang.NoClassDefFoundError: javax// Config error servlet/JSP/jstl/núcleo. Sin embargo, todavía muestra HTTP 500 para http://localhost:8080/passion/index.php y HTTP 404 para http://localhost:8080/passion/.

Respuesta

15

JAR deben estar en WEB-INF/lib, no subdirectorios.

Si está implementando en Tomcat, puede intentar colocar esos JAR JSTL en Tomcat/lib para que el cargador de clases del servidor pueda encontrarlos.

+0

funciona sin problemas cuando puse jstl.jar en mi directorio "lib" de Tomcat, gracias duffymo. –

0

, ¿Por qué redirigir esta página usando?

<% response.sendRedirect("index.php"); %> 

puede asignar el índice php como archivo de bienvenida. Lo hice de la siguiente manera:

<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>/index.php</url-pattern> 
    </servlet-mapping> 

y luego:

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

que mostrará su index.dlp como archivo de índice. Danny.

+0

Hola Danny, gracias por tu respuesta, como he mencionado antes, he añadido jstl.jar y standard.jar en WEB-INF/lib/jstl11 es ese el efecto si he agregado los archivos aquí WEB- INF/lib/jstl11 no en WEB-INF/lib? –

+0

Lo siento, me perdí la última parte. por favor mira mi sugerencia actualizada. Espero que ayude –

+0

Sí, hace una desreferencia, debe ponerlo en el directorio lib. –

2

creo que debe ser Tomcat uso y su pom.xml es como:

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

suprimir el nodo alcance, o el cambio "proporcionada" a "compilar" copia a continuación experto jstl-API-1.2 .jar a la WEB-INF/lib.

y luego OK.

+1

gracias por responder mi pregunta, tal vez me olvidé de decirte que estoy usando hormiga al enfrentar este problema. pero ahora prefiero usar maven. –

+0

scope-compile, me ayudó –

Cuestiones relacionadas