最好有案例 原来的URL:http://localhost:8080/wst/goodsShow.do?flag=goodsinfo&goodsId=G121105140423540
现在我想改为:http://localhost:8080/wst/goodsShow

解决方案 »

  1.   


    Web.xml  加入过滤器-----------------------------------     <filter>       <filter-name>urlFilter</filter-name>       <filter-class>com.url.filter.URLFilter</filter-class>       </filter>       <filter-mapping>       <filter-name>urlFilter</filter-name>       <url-pattern>*.shtml</url-pattern>    </filter-mapping> urlrewrite.xml   解析规则配置文件---------------------------- <?xml version="1.0" encoding="utf-8"?><urlrewrite><rule>    <from>^/(\w+)_(\w+)_(\d+)\.shtml$</from>  匹配表达式    <to type="forward">/$1.do?$2=$3</to>  解析后URL</rule> </urlrewrite> URLFilter.java   过滤器处理类---------------------- public class URLFilter implements Filter {     public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {        HttpServletRequest request = (HttpServletRequest) servletRequest;       HttpServletResponse response = (HttpServletResponse) servletResponse;        String realPath = request.getSession().getServletContext().getRealPath("/");       String fileName = realPath + "WEB-INF\\urlrewrite.xml";       String uri = request.getServletPath();       String rewriteUrl = getRewriteUrl(uri, fileName);        if (null != rewriteUrl) {           request.getRequestDispatcher(rewriteUrl).forward(request, response);           return;       }       filterChain.doFilter(servletRequest, servletResponse);    }        private String getRewriteUrl(String url, String fileName) {        DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();       try {           DocumentBuilder builder = f.newDocumentBuilder();           Document document = builder.parse(fileName);           NodeList list = document.getElementsByTagName_r("rule");            for (int i = 0; i < list.getLength(); i++) {              Element elemnt = (Element) list.item(i);               NodeList list2 = elemnt.getElementsByTagName_r("from");              Element element = (Element) list2.item(0);              String formValue = element.getFirstChild().getNodeValue();               NodeList list3 = elemnt.getElementsByTagName_r("to");              Element element2 = (Element) list3.item(0);              String type = element2.getAttribute("type");              String toValue = element2.getFirstChild().getNodeValue();               String rewriteUrl = url.replaceAll(formValue, toValue);              if (url != null && !"".equals(url.trim()) && !url.equals(rewriteUrl)) {                  return rewriteUrl;              }           }       } catch (Exception ex) {           ex.printStackTrace();       }       return null;    }}
    找找 网上都有,这个是转的
      

  2.   

    struts1 urlRewrite 最好有案例
      

  3.   

    直接这样配置就可以了,至于参数,你可以通过form的"post"方式去提交: <filter-mapping>
           <filter-name>urlFilter</filter-name>
           <url-pattern>/goodsShow</url-pattern>
    </filter-mapping>
      

  4.   

    那我想问下 http://localhost:8080/wst/goodsShow.do?flag=goodsinfo&goodsId=G121105140423540这些我不确定 goodsId=G121105140423540  而且我是a标签传 肯定要get方式噢 
      

  5.   

    a标签传 也可以post方式,只不过是个单击事件,在js里用post
      

  6.   

    动态页面转成伪静态页面URL REWRITE
    <rule>
    <from>^/login$</from> 我要显示的路径
        <to type="forward">/goodsShow.xz?jsgjz="+keyword</to>真实路径
    </rule>
    keyword是不确定的 那么我应该怎么写吖 
      

  7.   

    有个包好像叫urlRewrite 你去看下 ,这个就可以简单配置
      

  8.   

    urlRewrite那个我做了出来拉,但是就在
    动态参数哪里 http://localhost:8080/wst/goodsShow.do?goodsId=?
    goodsId=未知值 那个不确定的值 这个我就不知道应该怎么搞
      

  9.   

    对吖 问题是在配置文件哪里怎么写吖 <to type="forward">/goodsShow.xz?jsgjz="+keyword</to>要真实路径吖 那我的值是传进来拿怎么写吖
      

  10.   


    <rule>
        <from>/blog/articlelist_([0-9]+).html$</from>
        <to type="forward">/blog/queryBlogTitleList\?blogUserid=$1</to>
        </rule>
    我用的urlrewrite的jar包 在urlrewrite.xml可以配置这个的,用通配符
    例如
    浏览器地址栏显示:/blog/articlelist_1.html
    实际后台访问地址:/blog/queryBlogTitleList?blogUserid=1