繁体   English   中英

Spring MVC - Web流量控制器

[英]Spring MVC - Web Flow Controller

我有一个使用spring框架和spring webflow开发的j2ee应用程序。 目前,我的所有网址请求都通过网络流量传输。 我想要的是能够选择是将它引导到Web Flow还是普通的spring mvc控制器。 我不知道如何将它指向自定义控制器。 我该怎么做呢?

我尝试在我的web.xml中使用它,但我不能将它指向mytest2-servlet.xml中指定的bean控制器

<servlet>
    <servlet-name>mytest</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value></param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>

<servlet>
    <servlet-name>mytest2</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <init-param>
        <param-name>contextConfigLocation2</param-name>
        <param-value></param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>


<servlet-mapping>
    <servlet-name>mytest</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

<servlet-mapping>
    <servlet-name>mytest2</servlet-name>
    <url-pattern>*.htm</url-pattern>
</servlet-mapping>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/web-application-config.xml
</param-value>
</context-param>

<context-param>
    <param-name>contextConfigLocation2</param-name>
    <param-value>
        /WEB-INF/mytest2-servlet.xml
</param-value>
</context-param>

在最终状态下尝试这个

<end-state id="exit" view="externalRedirect:controllerURL" />

其中'controllerURL'是控制器监听的URL /

混合Web Flow和普通Spring MVC控制器的最简单方法是在任何流路径之外的URL路径上简单地注册普通控制器。

例如,以下是我们的配置文件的一些摘录,由DispatchServlet的单个实例从web.xml加载:

<!-- Simple URL-view mapping without controller (or flow) -->
<mvc:view-controller path="/selectLanguage" view-name="selectLanguage"/>

<!-- Maps request paths to flows in the flowRegistry;
     e.g. a path of /hotels/booking looks for a flow with id "hotels/booking". -->
<bean class="org.springframework.webflow.mvc.servlet.FlowHandlerMapping" p:order="-1">
    <property name="flowRegistry" ref="flowRegistry" />
    <property name="interceptors">
        <list>
            <!-- for each flow, if a param lang=xx is added, switch locales -->
            <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"
                  p:paramName="lang"/>
        </list>
    </property>
</bean>

<!-- The registry of executable flow definitions -->
<webflow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices" base-path="/WEB-INF">
    <!-- Flows created from all -flow.xml files, with the flow ID being the path name -->
    <webflow:flow-location-pattern value="/**/*-flow.xml" />
</webflow:flow-registry>

因此,WebFlow将注册与WEB-INF / ** / something-flow.xml文件对应的所有URL路径,并且所有其他URL路径(如/selectLanguage above )可以由常规Controller处理。

编写一个dispatcher-sevlet.xml或配置文件,为Spring Flows编写一个单独的配置文件(为方便起见),只需在dispatcher-servlet.xml中导入文件即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM