【问题标题】:Struts exclude pattern with spring支柱排除模式与弹簧
【发布时间】:2015-08-24 16:55:58
【问题描述】:

在来这里找专家之前我做了很多功课,感谢任何关于我问题的指点

我需要运行一个合并(未集成)的应用程序,该应用程序基本上是 struts2 和 Spring 以及一些基本 servlet 的组合版本。能够在tomcat中毫无错误地获取组合的war文件。我的意图是基于 url 模式路由到适当的框架(一个很好的问题:)

我们将单个上下文称为 myctx

我的情况:

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<constant name="struts.action.excludePattern" value="/myctx/springurl1/.*?"/>

如果我在过滤器映射中将 url 模式保留为 /*,则所有原始 struts2 操作都可以访问,但 spring 相关的任何内容都无法访问

如果我将 struts 过滤器 url-pattern 设置为 /myctx/.*?,则可以从原始 struts 组件访问注释,但可以访问 spring url。

在这里感谢任何指针

如果使用 struts 2.3.16 和 spring 3 很重要

还有其他方法吗?在 springframework 上要枚举的 url 模式较少

先谢谢了

-CJ

【问题讨论】:

  • 我的原始帖子中缺少一些代码 in struts.xml

标签: java spring spring-mvc servlets struts2


【解决方案1】:

要将 spring servlet 与 Struts 2 框架分开使用,您应该使用 struts.xml 中的配置设置将 servlet 从过滤器映射中排除。

<constant name="struts.action.excludePattern" value="/myctx/?.*"/>

web.xml(The DispatcherServlet)中的servlet映射:

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

<servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>/myctx/*</url-pattern>
</servlet-mapping>

【讨论】:

  • 感谢罗曼的回答。绝对有帮助。但是,'具有以下内容:a)/myctx/struts_actions 应由 struts2 处理 b)/myctx/spring_rqsts 应由 springservlet 和 rest 处理 c)/myctx/rest_srvlts 应由具有这些映射的基本 servlet 处理。在这种情况下, excludePattern 将如何工作? --sorry '尝试并尝试所有组合,仍然没有结果.. 我可以根据需要枚举所有 url 模式(spring 和 base servlet 很少,因此希望在排除模式中枚举)任何指针都非常感谢!跨度>
  • 无法相信'因为 lib 中有一个格式错误的 jar,其中包括一个旧的 struts.xml,它很高兴地优先于主 struts.xml,后者'正在编辑并重新运行以进行调试。一旦纠正了格式错误的库,事情就到位了:)再次感谢 Roman。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-21
  • 2012-10-06
  • 2014-09-23
  • 2020-03-30
  • 1970-01-01
  • 2016-08-30
  • 2015-06-15
相关资源
最近更新 更多