org.springframework.web.servlet.PageNotFound因为Controller类不包含在war中

时间:2017-02-25 08:53:21

标签: spring jsp spring-mvc

(请参阅下面的更新)

我多年来一直在努力解决这个问题。 我正在关注John Purcival的Spring MVC框架教程。 我完全按照教程系列中的说明设置了DispatcherServletControllerViewResolver,但是当我运行应用程序时,它会给我以下错误:< / p>

  

org.springframework.web.servlet.PageNotFound noHandlerFound

我已经经历了无数的StackOverflow问题,这些问题与同一个问题有关,但到目前为止,这些问题都没有对我有用。我现在在我的智慧结束了。

的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_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>spring-tutorial-50</display-name>
  <servlet>
    <description></description>
    <display-name>offers</display-name>
    <servlet-name>offers</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>offers</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

提供-servlet.xml中

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">


    <context:component-scan base-package="com.me.spring.web.controllers">
    </context:component-scan>
    <mvc:annotation-driven></mvc:annotation-driven>

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

OffersController.java

package com.me.spring.web.controllers;

import javax.servlet.http.HttpSession;

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

@Controller
public class OffersController {

    @RequestMapping("/")
    public String showHome(HttpSession session) {
        session.setAttribute("name", "Borris");
        return "home";
    }
}

/WebContent/WEB-INF/jsps/home.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>
Hi there!

Session: <%= session.getAttribute("name") %> <p/>

</body>
</html>

更新

我按照these步骤更改了服务器的deploy path

  

在Eclipse中,您可以将该部署文件夹更改为其他内容。

     
      
  • 删除分配给tomcat的所有项目,或者您无法更改设置(右键单击服务器/添加和删除...)。
  •   
  • 执行清理(右键单击服务器/清除...)。
  •   
  • 双击服务器以打开配置页。
  •   
  • 在服务器位置部分,选择&#34;使用自定义位置&#34;并指定您选择的文件夹作为服务器路径。你可以走了   &#34; wtpwebapps&#34;作为部署文件夹。我通常设置类似的东西   &#34; C:\ virtualTomcat&#34;作为服务器路径。
  •   
  • 保存文件,另外清理并将项目添加回服务器(右键单击服务器/添加和删除...)。
  •   

我现在发现OfferController没有被编译;换句话说:

${serverDeploymentDirectory}/wtpwebapps/${projectName}/WEB-INF/classes/com/me/spring/web/controllers/

为空

1 个答案:

答案 0 :(得分:0)

我可以通过完成以下步骤来解决此问题:

  1. 右键单击项目。点击Properties -> Deployment Assembly。从Deployment Assembly
  2. 中删除带圆圈的条目

    Remove entry target/m2e-wtp/web-resources

    1. 点击Servers标签。单击服务器名称左侧的小箭头。这将显示已部署项目的列表。右键单击相关项目,然后选择Clean Module Work Directory

    2. 选择项目的根目录。在工具栏中,选择Project-Clean

    3. 右键单击项目的根目录。 Run As -> Run on server