本帖最后由 bruce_w 于 2010-11-30 14:57:41 编辑

解决方案 »

  1.   

    不知道你的规则是什么,如果只是GET的话可以用Filter。如果是post的话会有问题。Filter
    package test;import java.io.IOException;
    import java.util.Enumeration;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    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;/**
     *
     * @author oushuuryuu
     */
    public class TestRedirectFilter implements Filter {    @Override
        public void init(FilterConfig filterConfig) throws ServletException {
        }    @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            redirect((HttpServletRequest)request, (HttpServletResponse)response);
        }    @Override
        public void destroy() {
        }    private void redirect(HttpServletRequest request, HttpServletResponse response) {
            String uri = request.getRequestURI();        String newURL = uri.replaceAll(".do", ".html");        Enumeration<String> paramNms = request.getParameterNames();
            while (paramNms.hasMoreElements()) {
                String paramName = paramNms.nextElement();
                newURL = newURL.concat("_").concat(paramName).concat(request.getParameter(paramName));
            }
            try {
                response.sendRedirect(newURL);
            } catch (IOException ex) {
                Logger.getLogger(TestRedirectFilter.class.getName()).log(Level.SEVERE, null, ex);
            }
            
        }}
    web.xml    <filter>
            <filter-name>RedirectFilter</filter-name>
            <filter-class>test.TestRedirectFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>RedirectFilter</filter-name>
            <url-pattern>*.do</url-pattern>
        </filter-mapping>
      

  2.   

    查询下 urlrewrite 方面资料 里面有提到 urlrewrite.jar   把它添加到项目中  然后再WEB-INF下配置下 urlrewrite重写规则 之后就可以访问了  
      

  3.   

    类似
    <urlrewrite>
        <rule>
            <from>XXXX.html_XX([0-9]+)</from>
            <to type="redirect">/XXXX.do\?XX=$1</to>
        </rule>
    </urlrewrite>