如何使用 Stripes 框架删除文件后缀/扩展名(.jsp 和 .action)?
题
我希望在我的网络应用程序中使用漂亮/干净的 URL。
我想要以下网址:
http://mydomain.com/myapp/calculator
..决心:
com.mydomain.myapp.action.CalculatorActionBean
我尝试用以下内容覆盖 NameBasedActionResolver:
public class CustomActionResolver extends NameBasedActionResolver {
public static final String DEFAULT_BINDING_SUFFIX = ".";
@Override
protected String getBindingSuffix() {
return DEFAULT_BINDING_SUFFIX;
}
@Override
protected List<String> getActionBeanSuffixes() {
List<String> suffixes = new ArrayList<String>(super.getActionBeanSuffixes());
suffixes.add(DEFAULT_BINDING_SUFFIX);
return suffixes;
}
}
并将其添加到 web.xml
:
<servlet-mapping>
<servlet-name>StripesDispatcher</servlet-name>
<url-pattern>*.</url-pattern>
</servlet-mapping>
这让我:
http://mydomain.com/myapp/Calculator.
但:
- 一个流浪”。仍然既不漂亮也不干净。
- URL 中的类名仍然大写..?
- 这仍然让我
*.jsp
..?是否有可能同时摆脱两者.action
和.jsp
?
解决方案
我认为您正在寻找 @URLBinding 注释。看着 @URLBinding 在你的豆子上。
@UrlBinding("/计算器")
其他提示
我试图做同样的事情,并且有同样的问题,尽管我希望我的 URL 使用尾部斜杠 http://mydomain.com/myapp/calculator/
答案是使用 @UrlBinding 和 DynamicMappingFilter
我将示例修改为:
@UrlBinding("/calculator/")
public class CalculatorActionBean implements ActionBean {
.
.
.
return new ForwardResolution("/WEB-INF/view/calculator.jsp");
然后我将 DMF 添加到 web.xml 中:
<filter>
<display-name>Stripes Dynamic Mapping Filter</display-name>
<filter-name>DynamicMappingFilter</filter-name>
<filter-class>net.sourceforge.stripes.controller.DynamicMappingFilter</filter-class>
<init-param>
<param-name>ActionResolver.Packages</param-name>
<param-value>com.example.stripes</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>DynamicMappingFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
现在,干净的 URL 可以按预期工作,并且在与表单交互后我永远不会重定向到 *.action URL。
不隶属于 StackOverflow