2010-11-01 14 views
8

sto usando:HTTP - 500 org.springframework.web.util.NestedServletException: elaborazione Handler non è riuscita;

  1. Apache Tomcat 6.0.20
  2. Primavera 3.x

voglio creare semplice "Ciao Mondo !!!" sulla mia pagina indice. Purtroppo, ottengo il seguente errore:

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) 

questo è il mio controller chiamato 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); 
    } 
} 

mia 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> 

mia dispatcher-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> 
    ... 

mia redirect.jsp

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

mia index.jsp

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

ho aggiunto tutti i JAR tra cui jstl.jar & standard.jar perchè Presumo che ciò sia necessario per lo java.lang.NoClassDefFoundError: javax/servlet/jsp/JSTL/core/Config errore. Tuttavia, visualizza ancora HTTP 500 per il http://localhost:8080/passion/index.php e HTTP 404 per http://localhost:8080/passion/.

risposta

15

JAR devono essere in WEB-INF/lib, non le sottodirectory.

Se si distribuisce su Tomcat, si potrebbe provare a mettere quei vasi JSTL nel Tomcat/lib in modo che il caricatore di classe server li può trovare.

+0

funziona senza intoppi quando metto jstl.jar nella mia directory "lib" di Tomcat, grazie duffymo. –

0

, Perché reindirizzare questa pagina utilizzando?

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

è possibile mappare indice php come file di benvenuto. L'ho fatto nel modo seguente:

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

e poi:

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

mostrerà il tuo index.dlp come file di indice. Danny.

+0

Ciao Danny, grazie per la tua risposta, come ho detto prima, ho aggiunto jstl.jar e standard.jar sotto WEB-INF/lib/jstl11 è che qualsiasi effetto se ho aggiunto i vasi qui WEB- INF/lib/jstl11 non in WEB-INF/lib? –

+0

Mi dispiace, ho perso l'ultima parte. per favore vedi il mio suggerimento aggiornato Spero che sia d'aiuto –

+0

Sì, fa un dereferenziamento dovresti metterlo nella directory lib. –

2

penso che si deve essere l'uso Tomcat e la tua pom.xml è come:

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

eliminare il nodo di ambito, o il cambiamento "forniti" a "compilare" allora Maven copia JSTL-API-1.2 .jar al WEB-INF/lib.

quindi OK.

+1

grazie per aver risposto alla mia domanda, forse ho dimenticato di dirti che sto usando formica quando si affronta questo problema. ma ora preferisco usare Maven. –

+0

scope-compile, mi ha aiutato –

Problemi correlati