是这样的,一个页面有几个URL链接,地址都是类似
“http://www.xxxx.com/test/action?par1=123&par2=0058&par3=123456789012”类似这样的URL,也就是区别在于参数不一样!
我想实现一个servlet的filter,目的很简单,拦截用户的URL访问,同时对当前的session以及url带的参数进行判断或者修改,请问这样的思路没问题吧??
因为我注意到servlet提供对servlet或者jsp页面的过滤,不知道对于这种“http://www.xxxx.com/test/action?par1=123&par2=0058&par3=123456789012”形式的能否进行过滤呢??

解决方案 »

  1.   

    简单的说就是先拦截用户的访问,通过request.getRequestURL()获得用户点击的链接的地址URL,然后我要处理分析一下,最后再定向到一个页面,或者利用httpclient发出一个post!
      

  2.   

    思路正确.在web.xml的<filter-mapping>的<url-pattern>中设置你的Servlet路径,
    如:<url-pattern>/test/action</url-pattern>
      

  3.   

    request.getServletPath()得到Servlet的路径即/test/action
    或者用request.getRequestURL()得到字符串http://www.xxxx.com/test/action用request.getQueryString()可得到参数,如:par1=123&par2=0058&par3=123456789012
      

  4.   

    恩,楼上的兄弟,顺便再问你一下,是不是filter只能对post请求进行过滤??
    而对于get方式的就不成?我认为的post方式无非就是通过form中提交!是不是其它方式的传参就属于get了?因为我上面的举例“http://www.xxxx.com/test/action?par1=123&par2=0058&par3=123456789012”后面的参数联接是人为加上去的,而不是通过form得到的!另外还有一小问题,当我处理完并重定向时候,我是否应该利用“HttpServletReponse的sendRedirect()方法”重新定向提交服务呢?这样做没问题吧?我还考虑利用httpclient的包new一个post的动作呢!哪种合适呢?最后一个问题,因为这个filter可能同时会有多个用户触发,请问如何做到安全的多线程呢?以上问题如果能给出示例代码最好,本人会另外开贴加100分!
      

  5.   

    因为如果filter只能通过post方式的话,那么兄弟你说的“用request.getQueryString()可得到参数,如:par1=123&par2=0058&par3=123456789012”就不正确了,因为request.getQueryString()得到的是客户端get方式的参数!
    还请诸位高手指教!
      

  6.   

    “http://www.xxxx.com/test/action?par1=123&par2=0058&par3=123456789012”形式的能否进行过滤呢??可过虑的,所有的URL它都能过滤.只要在web.xml配置一下即可,具体代码网上很多.
      

  7.   

    Servlet过滤器是根据在web.xml文件中所配置的情况进行过滤的:
    <filter>
        <filter-name>FilterAlias</filter-name>
        <filter-class>com.yaray.tools.filter.UserAuthenticationFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>FilterAlias</filter-name>
        <url-pattern>/*</url-pattern><!-- 这里配置被过滤的拦截路径 -->
    </filter-mapping>
      

  8.   

    过滤器不仅仅可以过滤POST和GET,甚至可以通过wrap将post请求转变为get,当然楼主所有的需求都是可以满足的,只是熟悉SERVLET和过滤器就可以了。另外,过滤器本身不只一种,一般是所熟悉的Request,还有针对forward和include,error的。建议详细学习一下过滤器的相关知识.google一下相关文档,或者找一些相关书籍,会认识比较彻底.
      

  9.   

    filter是对你所有的请求都有效,无论是get还是post只要是用户发出的请求,都要经过过滤器的处理!前提是你的filter起作用。