SSM 返回静态页面HTML Controller 被递归调用引起的StackOverflowError

最近在做工程实践,想实现这么一个效果:

前端url请求地址:localhost:8080/idevtools/search

后端返回一个静态页面HTML:search.html

按照网上说的,进行了一些配置,然后运行项目,出现了错误:javax.servlet.ServletException: org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.StackOverflowError;

二 原因

去网上各种查阅资料,都没找到与该问题相关的文章(这也是我发博客的原因),可能是遇到这类问题的人只有少部分。事实上,确实也只有“机缘巧合”的人会遇到这个问题。

Controller中处理/idevtools/search请求的方法被递归调用了;

Controller中searchHtml()方法返回的字符串"search"(对应search.html文件)经过视图解析器处理(请求转发)后刚好又变成了url:/idevtools/search,所以searchHtml()又一次被调用;

三 重现

1.在webapp/目录下存2个html文件:isearch.html,view.html,目录如下:

SSM 返回静态页面HTML Controller 被递归调用引起的StackOverflowError

2.配置spring-mvc.xml,视图解析器:

<!-- 配置视图解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="http://www.likecs.com/"/> <property name="suffix" value=".html"/> </bean>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgzjfd.html