我的处理程序转发到internalresourceview'apiForm',但后来我得到错误404 RequestURI =/WEB-INF/pages/apiForm.jsp.我确定apiForm.jsp位于/ WEB-INF/pages /
13:45:02034 DEBUG [org.springframework.web.servlet.view.JstlView] -转发到资源[/WEB-INF/pages/apiForm.jsp]在InternalResourceView 'apiForm'
13:45:02035 DEBUG [org.springframework .web.servlet.DispatcherServlet] - 名为'testapp2'的DispatcherServlet确定[/WEB-INF/pages/apiForm.jsp]的最后修改值
13:45:02,038 DEBUG [org.springframework.web.servlet.DispatcherServlet] -在getLastModified
13:45:02,038中找不到处理程序DEBUG [org.springframework.web.servlet.DispatcherServlet] - 名为'testapp2'的DispatcherServlet处理请求[/WEB-INF/pages/apiForm.jsp]
13:45:02,038 WARN [org.springframework.web.servlet.PageNotFound] - 在DispatcherServlet中找不到带有URI [/WEB-INF/pages/apiForm.jsp]的HTTP请求的映射,名称为'testapp2'13
:45:02,045 DEBUG [org.springframework. web.servlet.DispatcherServlet] - 已成功完成请求
13:45:02,048 DEBUG [org.springframework.web.servlet.DispatcherServlet] - 已成功完成请求
这就是我的dispatcher.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/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
Run Code Online (Sandbox Code Playgroud) 我制作了一个实现ApplicationListener<AuthenticationSuccessEvent>并应该记录 IP 地址的组件,IP 地址可以从HttpServletRequest. 显然这个组件在子线程中运行,因此我需要ThreadContextInheritable在DispatcherServlet组件上将属性设置为 true才能访问HttpServletRequest. (我尝试使用 RequestContextListener 但没有效果)。
在此处可以找到的 spring 文档中,当您设置ThreadContextInheritable为true.
警告:如果您访问的线程池被配置为潜在地按需添加新线程(例如 JDK ThreadPoolExecutor),请不要对子线程使用继承,因为这会将继承的上下文暴露给这样的池线程。
我的问题是:为什么将继承的上下文暴露给池线程是一件坏事?在这种情况下会出现什么问题?此外,它们是指使用ThreadPoolExecutor实例的子线程还是指使用ThreadPoolExecutor?创建的子线程?