有时候为了调试dwr,进入/dwr/很方便调式,所以我不想让struts2将它过滤。。

解决方案 »

  1.   

    <filter> 
    <filter-name>struts2 </filter-name> 
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher </filter-class> 
    </filter> 
    <filter-mapping> 
    <filter-name>struts2 </filter-name> 
    <url-pattern>/*.do</url-pattern> 
    </filter-mapping> 
      

  2.   

    楼上的朋友,struts2默认的结尾是*.action
    如果用*.action是可以,但是所以用的地方都要用*.action去访问,否则struts2不处理。。
      

  3.   

    设置struts2的过虑为“/temp/*”
    不知道能不能解决你的问题。
      

  4.   

    在struts.xml中配置<constant name="struts.action.extension" value="do,action" />
      

  5.   

    把你的struts2的提交方式全都加上.action 即可,我以前出遇到过这样的问题。
      

  6.   

    自己写个类来判断,让这个类来替代原来struts2的拦截器
    package com.mxqqing.base;import java.io.IOException;
    import java.util.List;
    import java.util.regex.Pattern;import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import org.apache.struts2.StrutsStatics;
    import org.apache.struts2.dispatcher.Dispatcher;
    import org.apache.struts2.dispatcher.mapper.ActionMapping;
    import org.apache.struts2.dispatcher.ng.ExecuteOperations;
    import org.apache.struts2.dispatcher.ng.InitOperations;
    import org.apache.struts2.dispatcher.ng.PrepareOperations;
    import org.apache.struts2.dispatcher.ng.filter.FilterHostConfig;/**
     * Handles both the preparation and execution phases of the Struts dispatching process.  This filter is better to use
     * when you don't have another filter that needs access to action context information, such as Sitemesh.
     */
    public class StrutsPrepareAndExecuteFilterEx implements StrutsStatics, Filter {
        protected PrepareOperations prepare;
        protected ExecuteOperations execute;
    protected List<Pattern> excludedPatterns = null;    public void init(FilterConfig filterConfig) throws ServletException {
            InitOperations init = new InitOperations();
            try {
                FilterHostConfig config = new FilterHostConfig(filterConfig);
                init.initLogging(config);
                Dispatcher dispatcher = init.initDispatcher(config);
                init.initStaticContentLoader(config, dispatcher);            prepare = new PrepareOperations(filterConfig.getServletContext(), dispatcher);
                execute = new ExecuteOperations(filterConfig.getServletContext(), dispatcher);
    this.excludedPatterns = init.buildExcludedPatternsList(dispatcher);            postInit(dispatcher, filterConfig);
            } finally {
                init.cleanup();
            }    }    /**
         * Callback for post initialization
         */
        protected void postInit(Dispatcher dispatcher, FilterConfig filterConfig) {
        }    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {        HttpServletRequest request = (HttpServletRequest) req;
            HttpServletResponse response = (HttpServletResponse) res;        if(request.getServletPath().equals("/dwr/")) //直接通过
            {
                chain.doFilter(request, response);
            }else{
            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);
            }
            }
        }    public void destroy() {
            prepare.cleanupDispatcher();
        }
    }web.xml配置
    <!-- 启动struts2的配置-->
    <filter>
    <filter-name>struts2</filter-name>
    <filter-class>com.mxqqing.base.StrutsPrepareAndExecuteFilterEx</filter-class>
    </filter> <filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- DWR的配置-->
    <servlet>
    <servlet-name>dwr-invoker</servlet-name>
    <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
    <init-param>
    <param-name>debug</param-name>
    <param-value>true</param-value>
    </init-param>
    </servlet>
    <servlet-mapping>
    <servlet-name>dwr-invoker</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>