java - 如何修复 Http 状态 404 未找到?

标签 java spring

我刚刚开始使用Spring框架,目前正在学习spring MVC,配置太复杂了xD,无论如何,每次我尝试在服务器上运行应用程序时,它都会给我这个页面而不是main-menu.jsp页面。

我尝试将 @RequestMapping("/") 添加到我的 Controller 类中的方法中,该方法应该返回一个字符串,如下面的代码所示

Project Tree The result HomePage.java

@Controller
public class HomePage {

    @RequestMapping("/")
    public String showPage() {
        return "main-menu";
    }

main-menu.jsp页面

<!DOCTYPE html>
<html>
<body>
<h2>Spring MVC Demo - Home Page</h2>
</body>
</html>

spring-mvc-demo-servelet.xml

<?xml version="1.0" encoding="UTF-8"?>
<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"
    xsi:schemaLocation="
        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.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!-- Step 3: Add support for component scanning -->
    <context:component-scan base-package="com.Ayoub.springdemo.mvc" />

    <!-- Step 4: Add support for conversion, formatting and validation support -->
    <mvc:annotation-driven/>

    <!-- Step 5: Define Spring MVC view resolver -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/" />
        <property name="suffix" value=".jsp" />
    </bean>

</beans>

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>SpringMVC</display-name>  
   <servlet>    
    <servlet-name>spring</servlet-name>    
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    
    <load-on-startup>1</load-on-startup>      
</servlet>    
<servlet-mapping>    
    <servlet-name>spring</servlet-name>    
    <url-pattern>/</url-pattern>    
</servlet-mapping>    
</web-app>

我收到 Http 状态 404 - 未找到

日志

Sep 05, 2019 3:37:32 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version name:   Apache Tomcat/9.0.24
Sep 05, 2019 3:37:32 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built:          Aug 14 2019 21:16:42 UTC
Sep 05, 2019 3:37:32 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version number: 9.0.24.0
Sep 05, 2019 3:37:32 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Name:               Linux
Sep 05, 2019 3:37:32 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Version:            4.18.0-25-generic
Sep 05, 2019 3:37:32 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Architecture:          amd64
Sep 05, 2019 3:37:32 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Java Home:             /usr/lib/jvm/java-12-oracle
Sep 05, 2019 3:37:32 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Version:           12.0.1+12
Sep 05, 2019 3:37:32 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Vendor:            Oracle Corporation
Sep 05, 2019 3:37:32 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_BASE:         /home/ayoub/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0
Sep 05, 2019 3:37:32 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_HOME:         /home/ayoub/Desktop/apache-tomcat-9.0.24
Sep 05, 2019 3:37:32 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.base=/home/ayoub/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0
Sep 05, 2019 3:37:32 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.home=/home/ayoub/Desktop/apache-tomcat-9.0.24
Sep 05, 2019 3:37:32 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dwtp.deploy=/home/ayoub/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps
Sep 05, 2019 3:37:32 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dfile.encoding=UTF-8
Sep 05, 2019 3:37:32 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib]
Sep 05, 2019 3:37:34 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-nio-8080"]
Sep 05, 2019 3:37:34 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-nio-8009"]
Sep 05, 2019 3:37:34 PM org.apache.catalina.startup.Catalina load
INFO: Server initialization in [3,226] milliseconds
Sep 05, 2019 3:37:34 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service [Catalina]
Sep 05, 2019 3:37:34 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet engine: [Apache Tomcat/9.0.24]
Sep 05, 2019 3:37:35 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-nio-8080"]
Sep 05, 2019 3:37:35 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-nio-8009"]
Sep 05, 2019 3:37:35 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in [1,524] milliseconds

最佳答案

你的 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>SpringMVC</display-name>  
   <servlet>    
    <servlet-name>spring</servlet-name>    
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    
    <load-on-startup>1</load-on-startup>      
</servlet>    
<servlet-mapping>    
    <servlet-name>spring</servlet-name>    
    <url-pattern>/</url-pattern>    
</servlet-mapping>    
</web-app>



@Controller
public class HomePage {
    @RequestMapping("/main-menu")
    public String showPage() {
        return "main-menu";
    }

关于java - 如何修复 Http 状态 404 未找到?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57789407/

相关文章:

java - 在 Amazon Lambda 上运行 Spring Boot

java - 如何在 JFreeChart ChartFactory.createLineChart 中从 X - Y 轴 o 处开始绘制线

java - 输出显示空值。如何解决

java - Java 和 C/C++ 应用程序可以共享信号量吗?

java - Spring 与 BlazeDS 全局方法安全性不起作用

spring - 在 3.0.x 版本中禁用 Spring 方法安全性

Java SpringMVC 在哪里放置 RepositoryRestMvcConfiguration (@Configuration) 文件

java spring bean注册

java - Display.getDefault.syncExec() 在 headless 模式下无法正确运行

java - 保存 boolean 值并在 Activity 中使用它