当前位置: 首页 > 面试题库 >

在Spring 3上通过ContextLoaderListener而不是DispatcherServlet进行DefaultAnnotationHandlerMapping

籍昱
2023-03-14
问题内容

使用 DispatcherServlet时 ,出现
java.lang.IllegalStateException:未找到WebApplicationContext:未注册ContextLoaderListener吗?
使用 DelegatingFilterProxy 过滤器时出错。因此,我删除了 DispatcherServlet ,现在改用
ContextLoaderListener ,并且Spring应用程序可以正常加载。但是,我对一个非常重要的bean有问题:

   <context:component-scan base-package="com.mydomain"/>  
   <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
      <property name="interceptors">
         <list>
            <ref bean="openSessionInViewInterceptor" />
         </list>
      </property>
   </bean>

这个bean不再起作用,我的@Controller都没有URL映射了。如果我切换回使用 DispatcherServlet
,则没有问题(除了我的过滤器再次无效)。如何才能从 ContextLoaderListener 内正确加载此bean ?

干杯

尼克


问题答案:

同时需要ContextLoaderListener DispatcherServlet-错误消息没有告诉你删除的servlet。

为了弄清楚Spring在这里做什么,DispatcherServlet创建了自己的ApplicationContext(通常使用xxx- servlet.xml),但是您在web.xml中配置的任何Spring过滤器都无法访问Servlet的ApplicationContext

ContextLoaderListener创建第二个ApplicationContext与servlet的(与整个Web应用程序相关联),并链接本身ApplicationContext,使过滤器和servlet来通过Spring沟通。



 类似资料:
  • 我在这里有很多问题要解决。一直试图将上述3项技术集成到我们的WebApp中…我们要使用 null web.xml: 我的servlet-context.xml: My manager-context.xml: 编辑2 我认为主要的问题是SpringSecurity需要webapp上下文(ContextLoaderListener)才能工作,但web应用程序是在servlet上下文中运行的。控制器方

  • 问题内容: 以上是我的html。我想改为通过Vue呈现代码。 上面是我的Vue代码,Jinja提出了一个例外,即“任务”未定义,我希望的是Vue而不是Jinja呈现的html代码,我知道可以在Laravel中使用以下代码来完成: 由于我是Jinja的新手,所以有人可以帮助我吗? 问题答案: 另一个选择是重新定义Vue.js使用的分隔符。如果你有很多现有的模板代码,并且希望开始将Vue.js功能添加

  • 问题内容: 在SQL(MSSQL,Oracle等)中,在联接表时,向JOIN语句添加过滤器而不是在WHERE子句中添加过滤器有什么好处? IE 相对 我意识到这并非在所有情况下都有效,但是我注意到在某些情况下,通过将过滤器条件放在JOIN语句中似乎可以提高性能。但是,由于它是JOIN语句的一部分,因此也会使它的行为有些奇怪。 有什么想法吗? 问题答案: 对于查询,这些过滤器的性能特征将取决于许多因

  • 本文向大家介绍Spring中DispatcherServlet和ContextLoaderListener之间的区别,包括了Spring中DispatcherServlet和ContextLoaderListener之间的区别的使用技巧和注意事项,需要的朋友参考一下 ContextLoaderListener为Web应用程序创建根Web应用程序上下文,并将其放在ServletContext中。无论

  • 问题内容: 我有以下代码可以SSH到节点并从其他设备中找到RSSI。 bot_ipv6是ssh到的ipv6地址的列表,脚本使用pexpect来ssh。 数据现在包含该设备的输出。 我想浏览数据并仅获取地址及其对应的RSSI。当命令可以在本地运行并输出到文件时,此代码有效: 匹配和匹配行是在其中定义的函数,在其他地方则在文件中查找以将字符与所要查找的字符进行匹配。 我的问题是我不知道如何将数据输出到

  • 在Hazelcast中,是否可以基于键的属性而不是值来查询IMap?所有Hazelcast示例都显示了按值查询。E、 例如,对于具有字符串键的员工地图: 然后,典型的搜索谓词根据员工属性(姓名、薪资等)进行搜索。但我的案例使用了更复杂的密钥,例如: 因此,如果数据属性具有以下字段: 我想编写一个可以通过键进行查询的谓词,以返回适当的DataValue对象。这不起作用: 我可以按照这个答案中的建议推