在推荐的struct2的url-pattern是:
/*
我们知道,struct2的中心控制器是一个过滤器,
它这样配置,就是所有的后缀名的文件(包括不带后缀名)都进入了这个过滤器:
StrutsPrepareAndExecuteFilter
我们看它的doFilter方法: HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;        try {
            prepare.setEncodingAndLocale(request, response);
            prepare.createActionContext(request, response);
            prepare.assignDispatcherToThread();
if ( excludedPatterns != null && prepare.isUrlExcluded(request, excludedPatterns)) {
chain.doFilter(request, response);
} else {
request = prepare.wrapRequest(request);
ActionMapping mapping = prepare.findActionMapping(request, response, true);
if (mapping == null) {
boolean handled = execute.executeStaticResourceRequest(request, response);
if (!handled) {
chain.doFilter(request, response);
}
} else {
execute.executeAction(request, response, mapping);
}
}
        } finally {
            prepare.cleanupRequest(request);
        }也就是,不管是什么图像、js、css之类的,都要进行这个过滤器的大部分操作,那样是不是很浪费时间?而且毫无必要.
只让action后缀名的东西进入这个doFilter,也就是struct2只捕捉action结尾的文件,因为这样是减少时间呀
我试过,在web.xml把struct2的url-pattern写为 *.action,是不行的
如果它默认为必须写/*,那太恐怖了
你们是怎么解决的

解决方案 »

  1.   

    问题不在这里,配置成/*的原因是,Struts2需要提供一些静态信息给客户,如一些特殊的js、css和gif
    如果要把/*改成.action,则必需定义struts.serve.static=false,同时把一些.jar包中org.apache.struts2.static package目录下的文件copy到WebContent的struts的目录下
      

  2.   

    呃  佩服楼主的求知精神url-pattern也可以理解为处理过滤不过它仅仅处理请求