情况:我正在尝试使用spring webapp。应用名称为spring-mvc-jquery-file-upload
我的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"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>Archetype Created Web Application</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>rest</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-
class>
</servlet>
<servlet-mapping>
<servlet-name>rest</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
rest-servlet.xml如下:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<context:component-scan base-package="com.hmkcode.spring.mvc.controllers" />
<mvc:annotation-driven />
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
现在,当运行应用程序时,index.html
会成功显示。它有一个以下锚标记:
<a href="rest/controller/next">Next</a>
处理此请求并返回form.jsp的方法Next()
如下:
@Controller
@RequestMapping("/controller")
public class FileController {
@RequestMapping(value="/next", method = RequestMethod.GET)
public ModelAndView Next() {
return new ModelAndView("C:\\Users\\Varrox\\Desktop\\"
+ "spring-mvc-jquery-file-upload\\src\\main\\"
+ "webapp\\form.jsp","wl-entity",new Sample());
}
}
问题:我遇到的问题是当我点击位于next
的{{1}}链接时,我收到错误消息“找不到映射带有URI的HTTP请求[/spring-mvc-jquery-file-upload/rest/controller/C:/Users/Varrox/Desktop/spring-mvc-jquery-file-upload/src/main/webapp/form.jsp] in DispatcherServlet,名称为“rest”“。
正如您所看到的,控制器中的index.html
方法返回Next()
实例以及视图名称时,应用程序在视图名前加前缀ModelAndView
,这就是找不到映射的原因。
如何删除此前缀,以便正确进行映射并显示我的form.jsp。
答案 0 :(得分:0)
您希望Java应用程序能够加载不在类路径中的资源。这不行。
您需要一个viewResolver,它将用于按名称查找视图。
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/pages/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
在此示例中,请注意处理根路径的前缀,并添加文件扩展名的后缀
然后你简单地使用文件名:
return new ModelAndView("form","wl-entity",new Sample());