Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 404带弹簧3_Java_Spring_Spring Mvc - Fatal编程技术网

Java 404带弹簧3

Java 404带弹簧3,java,spring,spring-mvc,Java,Spring,Spring Mvc,嗨 我将学习Spring3的第一堂课。我在eclipse中用以下结构创建了一个动态web应用程序 spring3mvc \src\my.spring.HelloWorldController.java \WebContent | |-----WEB-INF\jsp\hello.jsp |-----index.j

嗨 我将学习Spring3的第一堂课。我在eclipse中用以下结构创建了一个动态web应用程序

spring3mvc \src\my.spring.HelloWorldController.java
                \WebContent
                   |
                   |-----WEB-INF\jsp\hello.jsp                     
                   |-----index.jsp
                   |-----WEB-INF\web.xml
                   |-----WEB-INF\spring-servlet.xml
                   |-----WEB-INF\lib\...*.jar files
我创建了spring-servlet.xml,如下所示

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

        <context:component-scan base-package="my.spring" />
        <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
            p:prefix="/WEB-INF/jsp/"
        p:suffix=".jsp">

          <property name="contentType" value="text/html; charset=utf-8" />
        </bean>
      </beans>
jsp有一个指向hello视图的链接

<html>
<body>
<a href="hello.html">Say Hello</a>

</body>
</html>
你知道我怎么解决这个问题吗

谢谢


标记。

您需要配置
viewsolver

以下是示例配置:

<bean id="viewResolver"
    class=" org.springframework.web.servlet.view. InternalResourceViewResolver" >
  <property name="prefix">
    <value>/WEB-INF/jsp/</value>
  </property>
  <property name="suffix">
    <value>.jsp</value>
  </property>
</bean>
这将是jsp所必需的

您还需要按照以下方式将servlet映射到web.xml中

<servlet-mapping>
  <servlet-name>dispatcher</servlet-name>
  <url-pattern>*.htm</url-pattern>
</servlet-mapping>

调度员
*.htm

我相信问题不在于视图解析器(它会打印其他异常)

仔细阅读错误消息,它会告诉您问题所在:

message /Spring3MVC/hello.html description 
The requested resource (/Spring3MVC/hello.html) is not available.
这是因为找不到hello.html(处理程序),而不是jsp。-但我不知道到底是什么问题我试图重现错误,但没有得到完全相同的错误消息

添加--查找问题

启动服务器时,它会将所有映射打印到日志文件中的控制器。在你的情况下,一定有

INFO : org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - Mapped URL path [/hallo] onto handler 'halloController'
如果您没有这样的语句,那么您的上下文扫描有问题,或者您忘记启用注释驱动的MVC@Controller编程模型。这可以通过添加以下内容来启用:

<!-- Enables the Spring MVC @Controller programming model -->
<annotation-driven />

我也有同样的问题

重新创建的步骤

  • 在Spring工具套件中打开仪表板
  • 单击“弹簧模板”
  • 在仪表板上的“创建”区域中的“项目”
  • 右键单击STS的PackageExplorer窗格中新创建的项目
  • 选择运行方式>在服务器上运行
  • 选择Tomcat作为服务器并单击Finish
  • 预期结果
    浏览器应启动并显示由HomeController>home操作和home.jsp视图页面定义的Hello World主页

    实际结果
    404错误

    解决方案
    1.打开HomeController.java
    2.在文件中的任意位置添加一个空格。是 啊空间。点击空格键。这就是解决办法。LOL
    3.像以前一样再次运行项目

    这将为您提供预期的结果

    我的假设
    HomeController类最初没有编译,因此组件扫描方法找不到它;需要对文件进行更改并保存。这将强制编译该类,因此可以发现主控制器和/home操作


    我把配置文件弄得乱七八糟,直到把头发拔出来。我甚至不能告诉你是什么让我想到要试试这个不过很高兴我弄明白了。希望Spring MVC 3团队能够对此进行研究,因为这可能会很容易地为进入一个非常酷的框架制造严重障碍。

    我使用class=“org.springframework.web.servlet.view.UrlBasedViewResolver”以及InternalResourceViewResolver尝试了这一点,我为viewresolver设置了viewClass,因为我的web.xml具有servlet映射spring*.html。但我仍然得到了404。无法理解原因。如果您向控制器方法添加了一些system.out.println消息,您可以检查这一点。我添加了system.out.println(“message=“+message”);在controller的helloWorld()方法中。但是,我在运行应用程序时找不到该输出。我已将eclipse的控制台输出粘贴到此url上,因此问题分析是正确的——您在将请求映射到控制器时遇到了问题。请原谅我的无知。但这是正确的还是错误的?我尝试了后者。但错误仍然存在。(我已经更新了有问题的spring-servlet.xml)…我知道,mvc是xml语言前缀。如果您是xml文档的“默认”命名空间,则可以跳过前缀。但在您的情况下,“默认值”是“”--因此您必须编写。我有一个idee,请检查我的增强答案。添加后映射消息是否仍然存在?感谢Ralph的一贯帮助。我能够让应用程序运行..xsi:schemaLocation中的条目顺序有一些问题,但是我还是能够把事情做好。非常感谢org.life.java提供了详细的配置信息和建议。主要的错误是web.xml位于WebContent文件夹中,而不是WebContent/web-INF。这太愚蠢了。在学习教程时应该更加小心
    prefix value + view name + suffix value  
    
    <servlet-mapping>
      <servlet-name>dispatcher</servlet-name>
      <url-pattern>*.htm</url-pattern>
    </servlet-mapping>
    
    message /Spring3MVC/hello.html description 
    The requested resource (/Spring3MVC/hello.html) is not available.
    
    INFO : org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping - Mapped URL path [/hallo] onto handler 'halloController'
    
    <!-- Enables the Spring MVC @Controller programming model -->
    <annotation-driven />