2010-11-01 41 views
8

Tôi đang sử dụng:HTTP - 500 org.springframework.web.util.NestedServletException: Xử lý trình xử lý không thành công;

  1. Apache Tomcat 6.0.20
  2. Xuân 3.x

Tôi muốn tạo đơn giản "Hello World !!!" trên trang chỉ mục của tôi. Thật không may, tôi nhận được lỗi sau:

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) 

đây là bộ điều khiển của tôi gọi 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); 
    } 
} 

web.xml của tôi

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

tôi phối-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> 
    ... 

redirect.jsp tôi

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

tôi index.jsp

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

Tôi đã thêm tất cả các lọ bao gồm jstl.jar & standard.jar vì Tôi cho rằng điều này sẽ cần thiết cho java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Cấu hình lỗi. Tuy nhiên, nó vẫn hiển thị HTTP 500 cho http://localhost:8080/passion/index.php và HTTP 404 cho http://localhost:8080/passion/.

Trả lời

15

JAR phải ở trong WEB-INF/lib, không phải thư mục phụ.

Nếu bạn đang triển khai trên Tomcat, bạn có thể thử đặt các JAR JAR đó trong Tomcat/lib để trình nạp lớp máy chủ có thể tìm thấy chúng.

+0

nó hoạt động trơn tru khi tôi đặt jstl.jar tại thư mục "lib" Tomcat của tôi, cảm ơn duffymo. –

0

, Tại sao bạn chuyển hướng trang này bằng cách sử dụng?

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

bạn có thể ánh xạ chỉ mục php dưới dạng tệp chào mừng. Tôi đã làm nó theo cách sau:

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

và sau đó:

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

nó sẽ hiển thị index.dlp của bạn như tập tin chỉ mục. Danny.

+0

Xin chào Danny, cảm ơn bạn đã phản hồi, như tôi đã đề cập trước đây, tôi đã thêm jstl.jar & standard.jar dưới WEB-INF/lib/jstl11 là bất kỳ hiệu ứng nào nếu tôi đã thêm các lọ ở đây WEB- INF/lib/jstl11 không có trong WEB-INF/lib? –

+0

Xin lỗi tôi đã bỏ lỡ phần cuối cùng. vui lòng xem đề xuất cập nhật của tôi. Hy vọng nó sẽ giúp –

+0

Có nó làm cho một dereference bạn nên đặt nó trong thư mục lib. –

2

Tôi nghĩ rằng bạn phải sử dụng tomcat và pom.xml của bạn cũng giống như:

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

xóa nút phạm vi, hoặc thay đổi "cung cấp" để "biên dịch" bản sao sau đó maven JSTL-api-1.2 .jar vào WEB-INF/lib.

rồi OK.

+1

cảm ơn bạn đã trả lời câu hỏi của tôi, có lẽ tôi đã quên nói với bạn rằng im sử dụng kiến ​​khi đối mặt với vấn đề này. nhưng bây giờ tôi thích dùng maven hơn. –

+0

phạm vi biên dịch, đã giúp tôi –

Các vấn đề liên quan