现在有个servlet
我希望它去匹配类似这样的地址/user1      /user2       /user3        /user4.
但是类似这样的就不要匹配/asdf/asdf    /asdf/wf/234/4/sdf  等这样多级目录的. ..让它只匹配一级目录
另外有个servlet匹配/atme
还有个匹配/comments
这该怎么弄呢.

解决方案 »

  1.   

    依新浪微博做的.
    也就是说 怎么样让servlet只匹配一级目录 .
    我想过写个servlet(匹配2级以上目录)去匹配/*/*     但这样不行.
      

  2.   

    url-pattern 的配置是有一定规则的,做不到你想要的那种,详见下面这个帖子 9 楼和 11 楼的回复,我在那里已经说明白了。http://topic.csdn.net/u/20100525/12/41569c26-350b-45f9-abc0-2019cbb4641b.html
      

  3.   

    我现在写的是
    <servlet-name>UserHome</>
    <url>/*</>这样拦截下所有的路径   然后requesturi截取字符串进行判断.
    如果用户访问的是/user1则会显示user1的主页.但现在有个问题 
    如果用户访问的是/  我希望用户看到默认主页.
    我写的
    <servlet-name>default</>
    <url>/</>
    这样不能生效啊   
    访问/  还是会定位到UserHome这个servlet.
      

  4.   

    现在又有个新问题.
    <serlvet-name>UserHome</>
    <url>/*</>这样写以后
    网站下所有的页面都访问不了了
    都被UserHome拦截了...
    怎么解决 ?..
      

  5.   

    那就配置多个urlpattern吧, 通配有的时候是头痛的事情
      

  6.   


    我现在是希望
    AtmeServlet  去匹配 /atme
    CommentsServlet  去匹配 /comments
    然后 UserHomepage  去匹配 /*  剩余所有的. 但是不匹配类似/asdf/asdf3这样的多级目录.现在有个问题
    我这样写以后
    <servletname>userhomepage</>
    <url>/*</>
    导致站点下所有的页面(html,jsp)都无法访问..全被userhomepage拦截.
      

  7.   

    URL匹配分精确匹配和模糊匹配
    模糊匹配又分前置匹配和后置匹配
    一个匹配配置项一次仅能配置一个匹配符
    如需多重匹配,需要配置多次
      

  8.   

    把你要匹配的URL,依次配置进去,除此之外,我没有发现其他更好的方法来实现你的需求
      

  9.   

    举个例子吧例如 /student_*.jsp就会匹配所有已student_开头的.jsp页面
      

  10.   


    我现在弄的就是过滤器
    但现在问题又出去了.
    因为像atme  comments  login..等等这些都需要转到特定的servlet进行处理
    然后其实的就会转到同一个servlet进行处理.
    就像这样
    /login  登录 
    /logout  退出 
    /atme  关于我的
    /comments  评论...
    ....等等  有好多..
    然后剩下 
    比如 
    /user1   /user2   /user3  ...这些 都是用户的页面  这些都是用一个servlet进行处理....
    这些名称都是不可预测的.所以我现在弄的是  
    如果是login 则跳到LoinServlet
    如果是logout 则跳到LogoutServlet....
    如果都不是  则跳到UserServlet..
    但问题是    这些的特殊路径太多了  不可能一个个去判断 ....
      

  11.   

    OK,给你提供一个解决方案吧
    你也不必为匹配符纠结了,我们转换一个思维
    理由welcome-file来做,在每个要匹配的目录下面放置一个index.jsp,里面什么都不做,就做一个请求的转发,具体转发到哪个servlet由你自己决定吧,这样的话,每增加一个,就在对应目录下复制一份