Pio*_*ler 4 java spring tomcat spring-mvc url-routing
当我穿上System.out.println我的时候@Controller,我在Tomcat控制台中看到了消息,但是网页浏览器给了我The requested resource () is not available.
我的控制器:
@Controller
public class IndexPageController {
@RequestMapping("/hello")
public String homePage(Model model) {
System.out.println("Controller method called"); // gets printed
return "hello";
}
}
Run Code Online (Sandbox Code Playgroud)
我的视图解析器(与此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>
Run Code Online (Sandbox Code Playgroud)
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
从控制器返回"hello.jsp"不会改变任何.
调用其他URL而不是/hello给出相同的输出`The requested resource () is not available.
它看起来JstlView通过DispatcherServletAGAIN 转发到JSP ,当然调度程序不知道这种URL的映射
春天日志:
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'
Run Code Online (Sandbox Code Playgroud)
TRACE-leveled log here:pastebin原始文件.
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>
Run Code Online (Sandbox Code Playgroud)
没有别人servlets也没有servlet-mapping,只有welcome-file-list.
小智 5
问题来自您的调度程序servlet映射.它也会因为'/*'映射而拦截对你的jsp的请求.它应该是:
<servlet-mapping>
<servlet-name>SpringDispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4017 次 |
| 最近记录: |