【问题标题】:HTTP - 500 org.springframework.web.util.NestedServletException: Handler processing failed;HTTP - 500 org.springframework.web.util.NestedServletException:处理程序处理失败;
【发布时间】:2010-11-01 23:02:49
【问题描述】:

我正在使用:

  1. Apache Tomcat 6.0.20
  2. 春季 3.x

我想创建简单的“Hello World !!!”在我的索引页面上。不幸的是,我收到以下错误:

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)

这是我的控制器,名为 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

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

我的 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> 
    ...

我的 redirect.jsp

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

我的index.jsp

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

我已经添加了所有 JAR,包括 jstl.jarstandard.jar 因为我认为 java.lang.NoClassDefFoundError: javax/servlet 需要这样做/jsp/jstl/core/Config 错误。但是,它仍然为 http://localhost:8080/passion/index.php 显示 HTTP 500,为 http://localhost:8080/passion/ 显示 HTTP 404。

【问题讨论】:

    标签: java spring-mvc


    【解决方案1】:

    JAR 应该在 WEB-INF/lib 中,而不是子目录中。

    如果您在 Tomcat 上进行部署,您可以尝试将这些 JSTL JAR 放在 Tomcat /lib 中,以便服务器类加载器可以找到它们。

    【讨论】:

    • 当我将 jstl.jar 放在我的 Tomcat "lib" 目录中时,它可以顺利运行,谢谢 duffymo。
    【解决方案2】:

    我认为你必须使用 tomcat 并且你的 pom.xml 是这样的:

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

    删除范围节点,或将“提供”改为“编译” 然后maven将jstl-api-1.2.jar复制到WEB-INF/lib中。

    然后确定。

    【讨论】:

    • 感谢您回答我的问题,也许我忘记告诉您我在遇到此问题时使用的是 ant。但现在我更喜欢使用 maven。
    • scope-编译,帮了我
    【解决方案3】:

    ,你为什么使用重定向这个页面?

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

    您可以将索引 php 映射为欢迎文件。我是这样做的:

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

    然后:

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

    它会将您的 index.dlp 显示为索引文件。 丹尼。

    【讨论】:

    • 嗨 Danny,谢谢您的回复,正如我之前提到的,我已经在 WEB-INF/lib/jstl11 下添加了 jstl.jar 和 standard.jar,如果我添加了任何效果这里的罐子 WEB-INF/lib/jstl11 不在 WEB-INF/lib 中?
    • 对不起,我错过了最后一部分。请参阅我的更新建议。希望对你有帮助
    • 是的,它会取消引用,你应该把它放在 lib 目录中。
    • 我正在使用 将 localhost:8080/passion 重定向到 localhost:8080/passion/index.php ,不幸的是我仍然得到 java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config 错误,因为你建议我改变 web.xml,我已经改变了你建议的 jstl.jar 目录...
    • 我已经尝试过您上次编辑的答案...仍然错误...我想,我会继续尝试丹尼,如果您对我的问题有其他线索,请告诉我,我仍然谷歌它, 提前谢谢你...
    猜你喜欢
    • 2011-07-15
    • 2021-07-13
    • 2012-12-29
    • 1970-01-01
    • 2017-11-30
    • 2015-03-08
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多