【问题标题】:Spring MVC has status 404Spring MVC 的状态为 404
【发布时间】:2016-04-16 04:55:08
【问题描述】:

对不起,我的英语很差,下面是我的代码。

web.xml

当输入“http://localhost:8080/mvc/hello”时

我刚刚得到请求的资源不可用。 http状态404

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springmvc-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

springmvc-servlet.xml

 <context:component-scan base-package="hello.*"/>

<!-- don't handle the static resource -->
<mvc:default-servlet-handler/>

<!-- if you use annotation you must configure following setting -->
<mvc:annotation-driven />

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

mycontrol here is my simple control 

package hello;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/mvc")
public class mvcControl {

    @RequestMapping("/hello")
    public String sayhello() {
        System.out.println("show_hello");
        return "hello";
    }
}

还有一些:

代码结构体

http://i.stack.imgur.com/6HBxq.png

登录 intellij

/Users/fushenshen/Desktop/Collection/apache-tomcat-8.0.33/bin/catalina.sh run
[2016-04-16 05:36:31,547] Artifact HelloWeb:war exploded: Server is not connected. Deploy is not available.
16-Apr-2016 17:36:32.860 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/8.0.33
16-Apr-2016 17:36:32.865 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Mar 18 2016 20:31:49 UTC
16-Apr-2016 17:36:32.865 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:         8.0.33.0
16-Apr-2016 17:36:32.865 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Mac OS X
16-Apr-2016 17:36:32.865 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            10.11.4
16-Apr-2016 17:36:32.865 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          x86_64
16-Apr-2016 17:36:32.866 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/jre
16-Apr-2016 17:36:32.867 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           1.8.0_40-b27
16-Apr-2016 17:36:32.867 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
16-Apr-2016 17:36:32.867 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /Users/fushenshen/Library/Caches/IntelliJIdea2016.1/tomcat/Unnamed_HelloWeb
16-Apr-2016 17:36:32.868 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /Users/fushenshen/Desktop/Collection/apache-tomcat-8.0.33
16-Apr-2016 17:36:32.871 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/Users/fushenshen/Library/Caches/IntelliJIdea2016.1/tomcat/Unnamed_HelloWeb/conf/logging.properties
16-Apr-2016 17:36:32.872 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
16-Apr-2016 17:36:32.872 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote=
16-Apr-2016 17:36:32.875 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.port=1099
16-Apr-2016 17:36:32.875 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.ssl=false
16-Apr-2016 17:36:32.875 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.authenticate=false
16-Apr-2016 17:36:32.876 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.rmi.server.hostname=127.0.0.1
16-Apr-2016 17:36:32.876 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.endorsed.dirs=/Users/fushenshen/Desktop/Collection/apache-tomcat-8.0.33/endorsed
16-Apr-2016 17:36:32.876 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/Users/fushenshen/Library/Caches/IntelliJIdea2016.1/tomcat/Unnamed_HelloWeb
16-Apr-2016 17:36:32.876 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/Users/fushenshen/Desktop/Collection/apache-tomcat-8.0.33
16-Apr-2016 17:36:32.877 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/Users/fushenshen/Desktop/Collection/apache-tomcat-8.0.33/temp
16-Apr-2016 17:36:32.877 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /Users/fushenshen/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.
16-Apr-2016 17:36:33.216 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
16-Apr-2016 17:36:33.282 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
16-Apr-2016 17:36:33.288 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"]
16-Apr-2016 17:36:33.298 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
16-Apr-2016 17:36:33.299 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 1103 ms
16-Apr-2016 17:36:33.366 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service Catalina
16-Apr-2016 17:36:33.367 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.0.33
16-Apr-2016 17:36:33.381 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
16-Apr-2016 17:36:33.414 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-nio-8009"]
16-Apr-2016 17:36:33.416 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 116 ms 
Connected to server
[2016-04-16 05:36:33,777] Artifact HelloWeb:war exploded: Artifact is being deployed, please wait...
[2016-04-16 05:36:34,190] Artifact HelloWeb:war exploded: Artifact is deployed successfully
[2016-04-16 05:36:34,191] Artifact HelloWeb:war exploded: Deploy took 414 milliseconds
16-Apr-2016 17:36:43.386 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /Users/fushenshen/Desktop/Collection/apache-tomcat-8.0.33/webapps/manager
16-Apr-2016 17:36:43.423 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /Users/fushenshen/Desktop/Collection/apache-tomcat-8.0.33/webapps/manager has finished in 36 ms

【问题讨论】:

  • 您是在 Tomcat 中运行它还是直接从 Eclipse 或其他 IDE 运行它?您的应用程序是否可能位于 localhost:8080/myapp/mvc/hello 之类的位置?
  • 你能分享你在启动过程中看到的任何日志吗?
  • 我在 intellij 中运行,我的应用程序是 localhost:8080/HelloWeb/mvc/hello,我在我的问题中编辑日志,你能帮帮我吗
  • 埃里克。看我的回答。如果这不起作用,请告诉我。
  • *我把我的应用放到本地tomcat,然后问题就解决了

标签: spring spring-mvc tomcat intellij-idea


【解决方案1】:

你说:

当输入“http://localhost:8080/mvc/hello”时。我刚刚得到请求的资源不可用。 http 状态 404。

在您的评论中,您说您的网络应用程序名称是 HelloWeb,并且它在 tomcat 中部署为 localhost:8080/HelloWeb/。尝试访问以下 URL:

http://localhost:8080/HelloWeb/mvc/hello

如果可行,那么您可以在 IntelliJ 中将 Web 应用程序的应用程序上下文配置为 / 并访问原始 URL:

http://localhost:8080/mvc/hello

您在构建配置中更改 IntelliJ 中的应用程序上下文:

  1. 选择Tomcat
  2. 单击“部署”选项卡
  3. 您应该会在右侧看到一个名为“应用程序上下文”的字段
  4. 将“应用程序上下文”设置为 / 并重新启动

【讨论】:

    猜你喜欢
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 2015-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多