0

尝试将名为“new”的 URL 路径映射到执行某些逻辑的 Controller 方法时出现以下错误,然后显示视图“index.jsp”:

警告:在名称为“springguestbook”的 DispatcherServlet 中找不到具有 URI [/springguestbook/index.jsp] 的 HTTP 请求的映射

这是我的控制器方法:

@RequestMapping(value = "/list", method = RequestMethod.GET)
public String showGuestbookEntries(HttpServletRequest request, Model model) {
    HttpSession session = request.getSession(true);
    this.guestbookService = GuestbookService.getInstance(session);
    model.addAttribute("guestbookEntries",
            guestbookService.getGuestbookEntries());

    return "index";

}

这些是我的 web.xml 文件的内容:

<display-name>Spring Guestbook</display-name>

<servlet>
    <servlet-name>springguestbook</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>springguestbook</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

这是我的 ViewResolver 的配置:

<bean id="viewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

在我看来,该方法并没有实际读取 index.jsp 的内容并显示它们,而是重定向到 index.jsp。我该如何解决?

4

1 回答 1

1

两件事情:

  1. 尝试将您的 servlet 映射更改为此(更改/*/):

    <servlet-mapping>
        <servlet-name>springguestbook</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    
  2. 确保您使用的是可以找到您的 JSP 的视图解析器,例如InternalResourceViewResolver

    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver b = new InternalResourceViewResolver();
        b.setPrefix("/WEB-INF/jsp/");
        b.setSuffix(".jsp");
        return b;
    }
    

或者

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>
于 2013-06-10T19:53:12.350 回答