项目重做了,构架改了,但是原先搜索引擎登录的地址没办法变
现在的构架是这样的
http://www.text.com/123.html
那像这样的地址
可以在servlet里动手脚<servlet>
<servlet-name>Index</servlet-name>
<servlet-class>com.hisupplier.servlets.Index</servlet-class>
</servlet><servlet-mapping>
<servlet-name>Index</servlet-name>
<url-pattern>/123.html</url-pattern>
</servlet-mapping>然后我可以在index 这个类里判断,做出分析,然后执行动作但是以前收录的地址不是这样
是如下的
http://www.text.com/a-pen
a-是不变的,pen是活动的
那事实麻烦点
因为servlet里,
对url-pattern判定的就三种
一个是完全匹配

<url-pattern>/123.html</url-pattern>
这样,但由于a-不动,pen是活动的,所以这个没办法
一个是目录匹配
<url-pattern>/123/<url-pattern>
这样也没办法,因为后面确实没点
一个是扩展名匹配
<url-pattern>/123*.html<url-pattern>
但是a-pen没扩展名现在唯一想得到的办法就是
<url-pattern>/*<url-pattern>但是这样涉及的东西太广,很多东西要进入这个servlet各位帮帮我,这个应该怎么办,谢谢,百分相候

解决方案 »

  1.   

    有点乱,不是太清楚,一个servlet可以对应多个访问路径啊
    <servlet>
    <servlet-name>Index</servlet-name>
    <servlet-class>com.hisupplier.servlets.Index</servlet-class>
    </servlet><servlet-mapping>
    <servlet-name>Index</servlet-name>
    <url-pattern>/123.html</url-pattern>
    </servlet-mapping><servlet-mapping>
    <servlet-name>Index</servlet-name>
    <url-pattern>/a-*</url-pattern>
    </servlet-mapping>
      

  2.   

    <url-pattern>/a-*</url-pattern>
      

  3.   

    <url-pattern>/a-*</url-pattern>
    这样应该不行吧,他不认的
      

  4.   

    嗯,我的意思再洁简地说一下,刚才说得不简洁不好意思
    就是说
    我要
    http://www.text.com/a-xxx
    这种类型的地址(注XXX是随时可以变的)
    能跳到一个
    一个servlet里去
    这个在web.xml里没办法实现
    但事实上如果我用
    <url-pattern>/a-*</url-pattern>
    这样格式去配置,resin他是不认的,为什么不认我已清楚了。
    麻烦楼上的帮帮我。谢谢
      

  5.   

    1.使用过滤器Filter,把你不关心的url过滤掉
    2.如果都是同一个servlet类处理逻辑,就在servlet里面,自己实现根据url来分发页面
      

  6.   

    filter的话,怎么弄,filter也要建xml的吧.就直接/*,然后在那里配置/
    怎么弄不清楚,楼上的麻烦给个小例子,谢谢
      

  7.   

    就在web.xml里面配
    <filter>
     <filter-name>filter</filter-name>
     <filter-class>com.test.MyFilter</filter-class>
    </filter>
    <filter-mapping>
     <filter-name>filter</filter-name>
     <url-pattern>/*</url-pattern>
    </filter-mapping>
      

  8.   

    filter那个类怎么写呢,有没有例子,麻烦一下
      

  9.   

    1.使用过滤器Filter,把你不关心的url过滤掉
    2.如果都是同一个servlet类处理逻辑,就在servlet里面,自己实现根据url来分发页面
    ------------------------------------------------------------
    2这个我也想过,可是,会跳地来的请求地址太多了,一个个分析,可能问题有点麻烦
      

  10.   

    我给你写了个filter方法实现,
    public void doFilter(ServletRequest arg0, ServletResponse arg1,
    FilterChain arg2) throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest)arg0;
    HttpServletResponse response = (HttpServletResponse)arg1;
    String uri = request.getRequestURI();
    if(uri.indexOf("a-") > -1)
    arg2.doFilter(arg0, arg1);
    else
    response.sendError(404);
    }
    另外servlet映射也要改为/*
      

  11.   

    其实要紧的问题还是在于
    现在现在项目也算庞大点,
    如果我设的是/*的话
    无形之中,一些非a-*的东西也会跳到这个servlet里来.
    而这些是我没办法预料的,东西多且繁。
    那么OK,那些地址也跳到servlet里来,或者跳到filter里,然后怎么办,难道我真的一个个去判断,这跳进来的地址,应该跳到哪里去。项目也非我一个人做。
    但如果我查觉到
    a-*的东西跳入某个类,那和别的没涉及,就好办多了,事实上在一个类里,分析url我之前就是这样做的,怎么说呢/*实在太广了。
      

  12.   

    还是没有解决吗?
    现在加了filter了,每个请求必须先经过这个filter处理,经过处理后,能够到达servlet的请求就只有没有被filter过滤的请求了;这里servlet还是配置成/*,就是处理所有没有被过滤掉的请求
      

  13.   

    这个可能还是没从根本上解决问题,因为非/a-*的东西也会跳进filter里去
    /*包含的范围太大了,/a-*的东西是进了servlet,那别的比如说/aaa之类的,不就不会被请求到了啊
      

  14.   

    我以为你只处理a-*的请求,这样吧,把servlet改为/xxx映射,另外把filter改为:
    if(uri.indexOf("a-") > -1) //不建议用indexOf
     response.sendRedirect("/xxx");//只要是a-*请求,进入servlet
    else
     arg2.doFilter(arg0, arg1);//其他不便
      

  15.   

    噢,有道理有道理,我试试,那filter的映射是/*了吧,我试试,