Gmx*_*Gmx 5 java spring spring-mvc
我使用spring MVC遇到了一些问题这是我的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>
Run Code Online (Sandbox Code Playgroud)
我的控制器正在关注
@Controller
@RequestMapping("/searchCase.do")
public class SearchCaseController {
public String getCaseDetailInfo() {
return "forward:caseDetail";
}
}
Run Code Online (Sandbox Code Playgroud)
我的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>
Run Code Online (Sandbox Code Playgroud)
然后我通过url请求:http:// {address:port}/{application-name} /searchCase.do,但它无法找到控制器来解决我的请求
No handler found in getLastModified
DispatcherServlet with name 'mvc' processing request for [/{application-name}/searchCase.do]
No mapping found for HTTP request with URI [/{application-name}/searchCase.do] in DispatcherServlet with name 'mvc'
Successfully completed request
Run Code Online (Sandbox Code Playgroud)
我的春季MVC版本是2.5.6我在等你的问题来帮我解决这个问题,谢谢!
人们在评论中建议的内容就是文档所描述的内容
初始化 DispatcherServlet 后,Spring MVC 会在 Web 应用程序的 WEB-INF 目录中查找名为 [servlet-name]-servlet.xml 的文件,并创建其中定义的 bean,覆盖使用相同名称定义的任何 bean 的定义在全球范围内。
但是,通过使用配置
<init-param>
<param-name>namespace</param-name>
<param-value>mvc</param-value>
</init-param>
Run Code Online (Sandbox Code Playgroud)
您已覆盖此设置,因此 DispatherServlet 文件将查看以下位置
DEFAULT_CONFIG_LOCATION_PREFIX + getNamespace() + DEFAULT_CONFIG_LOCATION_SUFFIX
Run Code Online (Sandbox Code Playgroud)
所以在你的例子中,它将是
/WEB-INF/mvc.xml
Run Code Online (Sandbox Code Playgroud)
我根据您的评论看到您最初拥有正确的名称(对应于您的配置)。因此,要么您没有将其放在WEB-INF下,要么您的问题在其他地方。
话虽这么说,请考虑基于contextConfigLocation参数的替代配置(我认为更明确),例如
<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>
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你