【问题标题】:HTTP Status 500 - Error instantiating servlet class org.springframework.web.servlet.DispatcherServlet: Error Log while runningHTTP 状态 500 - 实例化 servlet 类 org.springframework.web.servlet.DispatcherServlet 时出错:运行时出现错误日志
【发布时间】:2017-12-21 04:25:45
【问题描述】:

我已经编写了一个基本的 SpringMVC 代码,但是当我应该运行该项目时,我遇到了一些服务器错误(我使用的是 Tomcat 8.0 服务器),下面是我的代码

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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>SpringDemo</display-name>

<servlet>
<servlet-name>spring-dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet  <!-- redirect to front controller -->
</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>spring-dispatcher</servlet-name>
<url-pattern>/</url-pattern>                       <!-- maps incoming URL into DispatcherServlet -->
</servlet-mapping>

</web-app>

spring-dispatcher-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans"            
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
                                                                                  <!-- FrontController:it's job is to response back to client -->
    <bean id="HandlerMapping"
        class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />   <!-- HandlerMapping:Scans incoming URL pattern and maps into respective Controller -->

    <bean name="/welcome.html"
        class="com.pack1.hellocontroller.HelloController" />

      <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
        <property name="prefix">
            <value>/WEB-INF/</value>
        </property>
        <property name="suffix">
            <value>.jsp</value>               <!-- sends back responses to the client -->
        </property>
    </bean>

</beans>

HelloController.java

package com.pack1.hellocontroller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;  //AbstractController:basic controller class from springmvc

public class HelloController extends AbstractController{

    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest request,
        HttpServletResponse response) throws Exception {

        ModelAndView modelandview = new ModelAndView("HelloPage");          //viewresolver name:HelloPage
        modelandview.addObject("msg", "hello, it's my first springmvc application");

        return modelandview;               //returns java object to the FrontController
    }
}

HelloPage.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>SpringMVC</h1>
<h2>${msg}</h2>

</body>
</html>

【问题讨论】:

  • 请发布完整的堆栈跟踪。
  • 如果这是你第一次接触spring,为什么不使用spring-boot,更注重注解,更少配置?会更容易理解和更快地开始开发:)
  • 好的,谢谢你的建议,我试试看:)

标签: java spring-mvc tomcat servlets server


【解决方案1】:

像这样更改您的 spring-dispatcher-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans"            
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
                                                                                  <!-- FrontController:it's job is to response back to client -->
    <context:component-scan base-package = "com.pack1" />

    <bean class = "org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name = "prefix" value = "/WEB-INF/" />
      <property name = "suffix" value = ".jsp" />
    </bean>

</beans>

确保您的 jsp 文件位于 WEB-INF 文件夹中

现在在您的控制器中:

@Controller
@RequestMapping("/welcome")
public class HelloController{

    @RequestMapping(method=RequestMethod.GET)
    public ModelAndView welcome(){
        return new ModelAndView("HelloPage", "msg", "Hello Spring MVC Framework");
    }

}

问候,

【讨论】:

  • 为什么你认为load-on-startup 是必要的?他们已经有一个ViewResolver,并且他们正在使用 Spring 2 Controller 机制,没有注释。您还没有解决他们的问题,只是一个潜在的解决方法。
  • 是的,对不起,是我的错。
猜你喜欢
  • 2017-03-08
  • 2017-08-02
  • 2017-02-20
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多