Java 将Stripes应用程序转换为使用友好URL

Java 将Stripes应用程序转换为使用友好URL,java,stripes,Java,Stripes,我正在阅读Fred Daoud的Stripes书籍,并试图将Hello World应用程序转换为使用友好的URL,因为我不太喜欢这种基于后缀的映射 这是之前的 index.jsp: <jsp:forward page="/Hello.action"/> <jsp:forward page="/hello"/> 但是,当我尝试通过加载应用程序时,我看到: net.sourceforge.stripes.exception.ActionBeanNotFoundExcept

我正在阅读Fred Daoud的Stripes书籍,并试图将Hello World应用程序转换为使用友好的URL,因为我不太喜欢这种基于后缀的映射

这是之前的

index.jsp:

<jsp:forward page="/Hello.action"/>
<jsp:forward page="/hello"/>
但是,当我尝试通过加载应用程序时,我看到:

net.sourceforge.stripes.exception.ActionBeanNotFoundException: Could not locate an ActionBean that is bound to the URL [/]. Commons reasons for this include mis-matched URLs and forgetting to implement ActionBean in your class. Registered ActionBeans are: {/hello=class stripesbook.action.HelloActionBean, /controller/DefaultView.action=class net.sourceforge.stripes.controller.DefaultViewActionBean, /hello/=class stripesbook.action.HelloActionBean, /controller/DefaultView.action/=class net.sourceforge.stripes.controller.DefaultViewActionBean}
    at net.sourceforge.stripes.controller.AnnotatedClassActionResolver.getActionBean(AnnotatedClassActionResolver.java:341)
如果我通过服务器访问它,似乎会进入一个循环,抛出一个又一个异常


感谢您的任何建议。

我一直在尝试其他一些方法,并使其发挥作用

我删除了web.xml中现有的DispatcherServlet servlet和servlet映射定义,并替换为DynamicMappingFilter

作为奖励,更改链接事件的传递方式,以便

http://localhost:8080/getting_started/hello?randomDate=
变成

http://localhost:8080/getting_started/hello/randomDate
将ActionBean上的UrlBinding更改为:

@UrlBinding("/hello/{$event}")

用DynamicMappingFilter替换Dispatcher servlet对我来说不起作用(我收到一条关于DynamicMappingFilter只与StripesFilter一起工作的错误消息)。因此,我现在在我的web.xml中配置了两个过滤器和一个过滤器映射:

<filter>
    <display-name>Stripes Filter</display-name>
    <filter-name>StripesFilter</filter-name>
    <filter-class>net.sourceforge.stripes.controller.StripesFilter</filter-class>
    <init-param>
        <param-name>ActionResolver.Packages</param-name>
        <param-value>com.package.myactions.package</param-value>
    </init-param>
</filter>

<filter>
    <description>Dynamically maps URLs to ActionBeans.</description>
    <display-name>Stripes Dynamic Mapping Filter</display-name>
    <filter-name>DynamicMappingFilter</filter-name>
    <filter-class>
        net.sourceforge.stripes.controller.DynamicMappingFilter
    </filter-class>
</filter>

<filter-mapping>
    <filter-name>DynamicMappingFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
</filter-mapping>

条纹滤光片
条纹滤光片
net.sourceforge.stripes.controller.StripesFilter
ActionResolver.Packages
com.package.myactions.package
动态地将URL映射到ActionBeans。
条纹动态映射滤波器
动态匹配滤波器
net.sourceforge.stripes.controller.DynamicMappingFilter
动态匹配滤波器
/*
要求
向前地
包括
http://localhost:8080/getting_started/hello/randomDate
@UrlBinding("/hello/{$event}")
<filter>
    <display-name>Stripes Filter</display-name>
    <filter-name>StripesFilter</filter-name>
    <filter-class>net.sourceforge.stripes.controller.StripesFilter</filter-class>
    <init-param>
        <param-name>ActionResolver.Packages</param-name>
        <param-value>com.package.myactions.package</param-value>
    </init-param>
</filter>

<filter>
    <description>Dynamically maps URLs to ActionBeans.</description>
    <display-name>Stripes Dynamic Mapping Filter</display-name>
    <filter-name>DynamicMappingFilter</filter-name>
    <filter-class>
        net.sourceforge.stripes.controller.DynamicMappingFilter
    </filter-class>
</filter>

<filter-mapping>
    <filter-name>DynamicMappingFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
</filter-mapping>