当前位置: 首页 > 知识库问答 >
问题:

为什么在我的项目JBoss Tomcat7+Spring MVC中出现HTTP状态404?

姬银龙
2023-03-14

我正在用JBoss7+spring mvc做一些测试,它在本地运行,但当我放在云中时,它的HTTP状态为404。

/pswebproj/src/main/java/pswebproj/control/hellocontroller.java

package pswebproj.control;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping("/hello")
// URL Controlador 
// - http://localhost:8080/pswebproj/spring/hello
public class HelloController
{
    @RequestMapping("/simple") // .../pswebproj/spring/hello/simple
    public ModelAndView helloRequest()
    {
        String model = "Message from helloRequest(), UAU!";

        ModelAndView mv = new ModelAndView("/hellospring.jsp");
        mv.addObject("msg", model);
        return mv;
    }

    @RequestMapping("/param") // .../pswebproj/spring/hello/param?prm=sbrubbles
    public ModelAndView helloRequestParam(@RequestParam String prm)
    {
        String model = "Message from helloRequestParam() "+prm;

        ModelAndView mv = new ModelAndView("/hellospring.jsp");
        mv.addObject("msg", model);
        return mv;
    }

    @RequestMapping(value="/pathvar/{var}") 
    //.../pswebproj/spring/hello/pathvar/sbrubbles
    public ModelAndView helloRequestPath(@PathVariable String var)
    {
        String model = "Message from helloRequestPath() "+var;

        ModelAndView mv = new ModelAndView("/hellospring.jsp");
        mv.addObject("msg",model);
        return mv;
    }   
}

/pswebproj/pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>pswebproj</groupId>
    <artifactId>pswebproj</artifactId>
    <packaging>war</packaging>
    <version>1.0</version>
    <name>pswebproj</name>
    <repositories>
        <repository>
            <id>eap</id>
            <url>http://maven.repository.redhat.com/techpreview/all</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>eap</id>
            <url>http://maven.repository.redhat.com/techpreview/all</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.6</maven.compiler.source>
        <maven.compiler.target>1.6</maven.compiler.target>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>9.2-1003-jdbc4</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.25</version>
        </dependency>     
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.0.1</version>
            <scope>provided</scope>
        </dependency>
        <!-- SERVLET -->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>2.3.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>               
        <!-- // SERVLET -->
        <!-- SPRING -->        
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.3.7.RELEASE</version>
        </dependency>       
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>4.3.7.RELEASE</version>
        </dependency>      
        <!-- // SPRING -->  
    </dependencies>
    <profiles>
        <profile>
            <!-- When built in OpenShift the 'openshift' profile will be used when 
                invoking mvn. -->
            <!-- Use this profile for any OpenShift specific customization your app 
                will need. -->
            <!-- By default that is to put the resulting archive into the 'webapps' 
                folder. -->
            <!-- http://maven.apache.org/guides/mini/guide-building-for-different-environments.html -->
            <id>openshift</id>
            <build>
                <finalName>pswebproj</finalName>
                <plugins>
                    <plugin>
                        <artifactId>maven-war-plugin</artifactId>
                        <version>2.1.1</version>
                        <configuration>
                            <outputDirectory>webapps</outputDirectory>
                            <warName>ROOT</warName>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
    <build>
        <pluginManagement>
            <plugins>
                <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
                <plugin>
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>
                                            org.apache.maven.plugins
                                        </groupId>
                                        <artifactId>
                                            maven-compiler-plugin
                                        </artifactId>
                                        <versionRange>
                                            [3.1,)
                                        </versionRange>
                                        <goals>
                                            <goal>testCompile</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore></ignore>
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

/pswebproj/src/main/webapp/WEB-INF/web.xml

<web-app version="3.0"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         metadata-complete="false">
  <display-name>PsWeb Example Project</display-name>

  <servlet>
        <servlet-name>springweb</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>  
    <servlet-mapping>
        <servlet-name>springweb</servlet-name>
        <url-pattern>/spring/*</url-pattern>
    </servlet-mapping>  
</web-app>

/pswebproj/src/main/webapp/WEB-INF/springWEB-servlet.xml

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

    <!-- Pacotes a serem escaneados -->
    <context:component-scan base-package="pswebproj.control" />

    <!--  Define quais anotações estão habilitadas -->
    <mvc:annotation-driven />

</beans>

Java Puro:来自helloRequest()的消息,UAU!
JSTL:来自helloRequest()的消息,UAU!
el:来自helloRequest()的消息,UAU!

但是如果我在云中运行HTTP://pswebproj-drinith.rhcloud.com/spring/hello/simple,我会得到HTTP Status 404的答案。

共有1个答案

西门建安
2023-03-14

Spring容器没有检测到Controller类,因为您错过了ContextConfigLocation路径,该路径应该指向DispatcherServletWEB-INF/springWEB-servlet.xml,您需要在web.xml文件中如下所示添加它:

<servlet>
   <servlet-name>dispatcher</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>WEB-INF/springweb-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
 类似资料:
  • 好的,我在运行我的应用程序时遇到了这个问题,我相信这是因为版本控制。 秋季开始,我使用Tomcat 9.0.4。我使用最新的JavaSDK。 现在,我使用的是Spring版本5.0.2。 这是我的pom。xml: 这是我的web.xml: 这是我的调度器servlet。xml: 现在,我想提一件事:看看那些?我不确定这是否正确。为什么?这就是我在输出中得到的错误: 现在,我知道这是一大段文字,你可

  • 我在Mac 10.9.5上使用以下版本的Eclipse(实际上是SpringSource Tool Suite): 我试图安装颠覆性的插件,用于我的Maven项目(使用SVN)。我从他们的网站下载了zip文件,然后创建了以下目录: 我将插件解压缩到这个目录中。然后我重新启动了Eclipse实例。然而,在包资源管理器中右键单击我的项目时,我看不到“团队”下的任何签入选项。在命令行上,这些项目确实有“

  • 我在EclipseKeppler中通过选择文件为JavaEE开发人员创建了一个项目- 资源“/test/src/main/webapp/WEB-INF/WEB。“xml”不存在。 和: 生命周期配置未涵盖插件执行:org。阿帕奇。专家插件:maven依赖插件:2.6:复制(执行:默认,阶段:验证)pom。xml/test line 53 Maven项目构建生命周期映射问题 为什么是网络。没有创建x

  • 我的MySQL表出现死锁。只涉及一个表,我可以始终如一地复制它。只有当我有多个线程运行代码时才会发生这种情况。 下面是表格: 然后,我在每个线程中运行这2个查询,每个线程具有不同的user_id值。 需要注意的是,当调用DELETE语句时,数据库中从不存在user_id X。正在使用运行这些查询的代码位创建新用户。然而,该函数允许我修改用户的帐户,因此,从旧用户的团队中删除现有的角色。 所以,当足

  • HTTP有HTTP cookie。Cookie允许服务器跟踪用户状态、连接数、上次连接等。 HTTP具有持久连接(Keep-Alive),其中可以从同一个TCP连接发送多个请求。

  • 我正在尝试设置React组件中的状态,以便它在子组件的输入值发生变化时进行更改。我可以console.log和并获得预期的字符串,但是我不能编译这个函数: 我很困惑,因为我在我的。 我的getInitialState是: