Java Spring MVC-找不到请求URI的映射?
我在使用SpringMVC时遇到了一些问题 这是我的web.xml配置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
<!-- 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() {