【问题标题】:How can two urls with single dispatcher servlet and servlet config be mapped to different packages and a package should allow only one URL out of two?如何将具有单个调度程序 servlet 和 servlet 配置的两个 url 映射到不同的包,并且一个包应该只允许两个 URL 中的一个?
【发布时间】:2016-12-06 19:33:49
【问题描述】:

我有一个应用程序,其中我使用两个 url 映射到单个 Dispatcher servlet。

    <servlet>
        <servlet-name>Default Webservice</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value> 
                /WEB-INF/spring-servlet.xml
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Default Webservice</servlet-name>
        <url-pattern>/abc/*</url-pattern>
        <url-pattern>/xyz/*</url-pattern>
    </servlet-mapping>

Spring-servlet.xml 有组件扫描器。我想要一些方法,以便我可以允许带有模式 /abc/* 的 url 只能访问特定的包,而不是调度程序 servlet 正在扫描的所有包。

PS:我无法更改现有的 url 映射或创建新的调度程序 servlet。

【问题讨论】:

  • 如果您对答案满意,请采纳

标签: spring-mvc servlets controller dispatcher


【解决方案1】:

这不可能发生,因为组件扫描是在 spring 初始化调度程序 servlet 时运行的,并且您对 url 的请求是在初始化之后进行的。所以 spring 对包的扫描发生在请求之前。所以你不能把组件扫描条件。

如果两个url不能一起工作(意味着一次只有一个url是活动的请求)。然后可以看到使用

  1. @条件注解

  2. @Profile 注释

【讨论】:

  • 感谢阿什瓦尼的回答。我将尝试使用这些注释。我认为除了在控制器级别过滤请求之外别无他法。
  • 是的,对于在控制器级别之前过滤请求,您可以使用 Spring Security。如果我猜对了您需要
猜你喜欢
  • 2011-12-14
  • 2017-08-26
  • 1970-01-01
  • 2013-02-18
  • 2019-08-29
  • 2016-07-21
  • 2013-12-03
  • 2015-01-26
  • 2012-02-18
相关资源
最近更新 更多