如何获得一个简单的Spring MVC视图(JSP)解决方案?

Jon*_*nik 2 spring jsp spring-mvc java-ee

我的应用程序使用Spring MVC(最新版本; 3.2.2)创建一个返回JSON的RESTful API,到目前为止我根本不需要视图层.但是现在,除了API之外,我还需要一个简单的实用程序页面(纯动态HTML),并希望使用JSP.

我希望请求http://localhost:8080/foo/<id>通过控制器(Java)并最终在JSP中.应该简单吧?但我得到了404; 在解决视图方面有些不对劲.

HTTP ERROR 404
Problem accessing /jsp/foo.jsp. Reason:

    Not Found
Run Code Online (Sandbox Code Playgroud)

控制器:

 @RequestMapping(value = "/foo/{id}")
 public String testing(@PathVariable String id, ModelMap model) {
    model.addAttribute("id", id);
    return "foo";
 }
Run Code Online (Sandbox Code Playgroud)

定义控制器和映射请求有效; 这个方法被调用就好了.

Spring配置:

<mvc:annotation-driven/>

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:prefix="/jsp/" p:suffix=".jsp"/>
Run Code Online (Sandbox Code Playgroud)

问题可能在这里.我尝试了稍微不同的前缀并将JSP放在下面WEB-INF,以及类似<mvc:view-controller path="/*" />但没有运气的东西.

(我是否需要指定InternalResourceViewResolver,或者默认视图解析器应该处理这个?)

JSP文件.在src/main/webapp/jsp(该项目使用Maven约定)下,我显然有JSP.

这个位置有问题吗?

web.xml:

<servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

我浏览过Spring MVC文档,但是我的问题可能太简单了,很容易在那里找到帮助.:-P

谁能让我知道我做错了什么?

lun*_*unr 6

我认为你需要做的就是改变

<servlet-mapping>
  <servlet-name>mvc-dispatcher</servlet-name>
  <url-pattern>/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

<servlet-mapping>
  <servlet-name>mvc-dispatcher</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

/*如果路径中有另一个文件夹,则不匹配/jsp/foo.jsp.另一方面,/将匹配一切.