Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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 Spring MVC-找不到请求URI的映射?_Java_Spring_Spring Mvc - Fatal编程技术网

Java Spring MVC-找不到请求URI的映射?

Java Spring MVC-找不到请求URI的映射?,java,spring,spring-mvc,Java,Spring,Spring Mvc,我在使用SpringMVC时遇到了一些问题 这是我的web.xml配置 <!-- config spring --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/applicationContext.xml, /WEB-INF/classes/xfi

我在使用SpringMVC时遇到了一些问题 这是我的web.xml配置

<!-- config spring -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/classes/applicationContext.xml,
                /WEB-INF/classes/xfire-servlet.xml,
                /WEB-INF/classes/mvc-servlet.xml,
                classpath:org/codehaus/xfire/spring/xfire.xml
    </param-value>
</context-param>
<listener>
   <listener-class>
            org.springframework.web.context.ContextLoaderListener
   </listener-class>
</listener>
 <listener> 
   <listener-class>
            org.springframework.web.util.IntrospectorCleanupListener
   </listener-class>
</listener>
<!-- spring mvc -->
<servlet>
    <servlet-name>mvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>mvc</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>
我的mvc配置是

<!--auto scan annotation -->
<context:component-scan base-package="com.thunisoft.shxt.webservice.model.searchCase.logic" />

<bean id="viewResolver"
    class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass"
        value="org.springframework.web.servlet.view.JstlView" />
    <property name="prefix" value="/WEB-INF/jsp/case" />
    <property name="suffix" value=".jsp" />
</bean>
我的SpringMVC版本是2.5.6
我在等你的问题来帮我解决这个问题,谢谢

人们在评论中提出的建议就是作者所描述的

在初始化DispatcherServlet时,Spring MVC会查找 文件的WEB-INF目录中名为[servlet name]-servlet.xml的文件 web应用程序并创建其中定义的bean,覆盖 在全局域中使用相同名称定义的任何bean的定义 范围

但是,通过使用配置

<init-param>
    <param-name>namespace</param-name>
    <param-value>mvc</param-value>
</init-param>
所以在你的例子中,它将是

/WEB-INF/mvc.xml
根据您的评论,我看到您最初拥有正确的名称(对应于您的配置)。所以要么你没有把它放在WEB-INF下,要么你的问题在别处

这是说,请考虑替代配置(在我的意见中更明确),基于<代码> CONTEXTCONSTATION/<代码> PARAM,例如

<servlet>
    <servlet-name>springMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>springMVC</servlet-name>
        <url-pattern>*.do</url-pattern>
  </servlet-mapping>

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

springMVC
org.springframework.web.servlet.DispatcherServlet
1.
springMVC
*.做
上下文配置位置
/WEB-INF/mvc-servlet.xml

希望对您有所帮助

请更改我在下面提到的控制器URL模式

.do将自动附加到所有控制器请求映射,因为您在web.xml中进行了配置

@Controller
@RequestMapping("/searchCase")
public class SearchCaseController {

      public String getCaseDetailInfo() {
           return "forward:caseDetail";
      }

}
JSP代码:

<a href="/searchCase.do">Click</a>

尝试添加如下方法级注释:

@Controller
@RequestMapping("/searchCase")
public class SearchCaseController {

    @RequestMapping(method = RequestMethod.GET)
    public String getCaseDetailInfo() {
        return "forward:caseDetail";
    }

}
@RequestMapping(value="/searchCase", method = RequestMethod.GET)
public ModelAndView helloWorld() { 
就像文档中描述的那样:

17.3.2将请求映射到@RequestMapping

您可以使用
@RequestMapping
注释来映射URL,例如
/appoints
添加到整个类或特定处理程序方法上。 通常,类级注释映射特定的请求路径(或 路径模式)添加到窗体控制器上,并具有附加的方法级别 注释缩小特定HTTP方法的主映射范围 请求方法(“GET”、“POST”等)或HTTP请求参数 条件


我在我的计算机上设置了你的项目。首先,我使用maven jetty插件运行该项目。然后没有发现映射错误。经过大量的修改,我终于尝试了maven-tomcat7-plugin,然后成功了

将tomcat插件添加到pom.xml中

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
            </plugin>
        </plugins>
    </build>

我也犯了同样的错误。在尝试了在stack overflow上找到的所有内容后,我意识到我的控制器位于文件夹
src/main/resources/com/controllers
,其中
com.controllers
是一个包


创建另一个源文件夹
src/main/java
,并将
com/controllers
文件夹移到那里,成功了。(它检测到
com/controller
文件夹是一个包,而在
src/main/resources
中,它被视为一个普通目录。)

您的配置xml文件的名称是什么?xml文件的配置名称是mvc.xml使其成为springMVC-servlet.xml,然后再试一次。我已经这样做了,但它不起作用!我觉得框架可以找到配置xml!组件扫描中使用的基本包与控制器的包相匹配?我猜你的意思是我按照你的建议进行操作,但我没有使用以太网,我在控制器中添加了一个
init()
方法,以查看它是否已被找到并初始化,以及服务器启动时调用的
init()
,我找不到,问题在哪里!您实际遇到了什么错误?。请发布错误。您好,这是在名为“mvc”的DispatcherServlet中发现的错误
未找到URI为[/{application name}/searchCase.do]的HTTP请求的映射。请在DispatcherServlet中使用上述代码片段,如果您有任何问题,请告诉我。首先,感谢您的回答,我是按照你的建议做的,但我没有解决它,我已经编辑了我的
web.xml
,请帮我看看它是否有问题。另外,别忘了添加到servlet xml文件,否则它不会检测到控制器。
@Controller
@RequestMapping("/searchCase")
public class SearchCaseController {

    @RequestMapping(method = RequestMethod.GET)
    public String getCaseDetailInfo() {
        return "forward:caseDetail";
    }

}
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
            </plugin>
        </plugins>
    </build>
@RequestMapping(value="/searchCase", method = RequestMethod.GET)
public ModelAndView helloWorld() {