gpt4 book ai didi

java - 无法让 Spring MVC 3.2.4 使用 UrlBasedViewResolver 为 jsp 提供服务

转载 作者:搜寻专家 更新时间:2023-11-01 02:27:03 25 4
gpt4 key购买 nike

当我将 System.out.println 放在我的 @Controller 上时,我在 Tomcat 控制台中看到消息,但是网络浏览器给了我 The requested resource ()不可用。

我的 Controller :

@Controller
public class IndexPageController {
@RequestMapping("/hello")
public String homePage(Model model) {
System.out.println("Controller method called"); // gets printed
return "hello";
}
}

我的 View 解析器(在与此 URL 调度程序相关的 XML 中):

<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/" />
<property name="suffix" value=".jsp" />
</bean>

肯定会创建 ViewResolver,因为如果我删除此必需属性,它会抛出有关 viewClass 的异常。

当然,存在/WEB-INF/jsp/hello.jsp文件。此文件也已正确部署(已检查 tomcat 运行时目录)。

tomcat_working_dir/logs 中没有看到任何异常,仅访问日志:

127.0.0.1 - - [01/Nov/2013:13:59:01 +0100] "GET/mvctest/hello HTTP/1.1"404 952

从 Controller 返回“hello.jsp”不会改变任何内容。

调用 /hello 以外的其他 URL 会给出完全相同的输出 `The requested resource () is not available.

看起来 JSTLView 再次通过 DispatcherServlet 转发到 JSP,当然调度程序不知道此类 URL 的映射

Spring 日志:

14:20:43.049 ["http-bio-8080"-exec-16] DEBUG org.springframework.web.servlet.DispatcherServlet - Rendering view [org.springframework.web.servlet.view.JstlView: name 'hello'; URL [/WEB-INF/jsp/hello.jsp]] in DispatcherServlet with name 'SpringDispatcher'
14:20:43.049 ["http-bio-8080"-exec-16] DEBUG org.springframework.web.servlet.view.JstlView - Forwarding to resource [/WEB-INF/jsp/hello.jsp] in InternalResourceView 'hello'
14:20:43.049 ["http-bio-8080"-exec-16] DEBUG org.springframework.web.servlet.DispatcherServlet - DispatcherServlet with name 'SpringDispatcher' processing GET request for [/mvctest/WEB-INF/jsp/hello.jsp]
14:20:43.050 ["http-bio-8080"-exec-16] DEBUG org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Looking up handler method for path /WEB-INF/jsp/hello.jsp
14:20:43.050 ["http-bio-8080"-exec-16] DEBUG org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Did not find handler method for [/WEB-INF/jsp/hello.jsp]
14:20:43.050 ["http-bio-8080"-exec-16] WARN org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/mvctest/WEB-INF/jsp/hello.jsp] in DispatcherServlet with name 'SpringDispatcher'

TRACE 级别的日志在这里:pastebin raw file .

web.xml 调度程序配置:

<servlet>
<servlet-name>SpringDispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>SpringDispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>

没有其他 servlet 也没有 servlet-mapping,只有 welcome-file-list

最佳答案

问题出在您的调度程序 servlet 映射上。由于“/*”映射,它还会拦截对您的 jsp 的请求。应该是:

<servlet-mapping>
<servlet-name>SpringDispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

关于java - 无法让 Spring MVC 3.2.4 使用 UrlBasedViewResolver 为 jsp 提供服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19727310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com