URL:http://www.test.com/aaa#abc我想在request中获取#后面的参数,但是无论是通过request.getQueryString,还是inputstream都无法获取,请教高手,应该怎么获取啊。

解决方案 »

  1.   

    用request.getServletPath();这个方法试一试
      

  2.   

    用API获取参数的话#好像没法获取吧 你看试试获取到URL自己解析吧
      

  3.   

    #后面是锚点信息,通常是用来告知浏览器滚动到页面的某个位置的。
    getRequestURL能得到这个值么?
    手边没有工具测试不了
      

  4.   


    (request.getHeader("referer")).substring((request.getHeader("referer")).indexOf("#")+1,???)
      

  5.   

    直接用String indexOf得到#后面的字符串
      

  6.   

    这个需要自己去解析的  标准的只支持 ?
    (request.getHeader("referer")).substring((request.getHeader("referer")).indexOf("#")+1,???)
    这个试试
      

  7.   


    我要获取的是自己的URL中的#,不是referer。或者我修改一下问题,URL是http://localhost/aaa?a=1#123
    如何能获取到这个123。
      

  8.   

    你可以得到request.getParameter("a");这个就是"1#123",然后根据字符串解析好了啊..........
      

  9.   

    +1 你通过request.getParameter("a");得到字符串"1#123",然后通过得到的变量.substring(变量.indexOf("#")+1,变量.length()),就ok了。
      

  10.   

    你通过request.getParameter("a");得到字符串"1#123",然后通过得到的变量.substring(变量.indexOf("#")+1,变量.length()),就ok了。正解
      

  11.   

    +1 你通过request.getParameter("a");得到字符串"1#123",然后通过得到的变量.substring(变量.indexOf("#")+1,变量.length()),就ok了。正解
      

  12.   

    大哥们,你们是不是都测试过啊,我刚刚写了一个servlet,通过request.getparameter无法获取到#之后的东西。
      

  13.   

    request.getServletPath().split("#")[1]
      

  14.   

    大哥们啊,麻烦你们写个servlet测试一下,如果能获取到的话告诉我吧。
    谢谢了。
      

  15.   

    request应该获取不到,请求地址中为:
    http://www.test.com/aaa#abc
    #在浏览器地址中用于页面的内链接使用的,在servlet中,#后面的值拿不到
    System.out.println(request.getRequestURI());
    System.out.println(request.getRequestURL());
    System.out.println(request.getHeader("referer"));
    System.out.println(request.getServletPath());
    这些都拿不到
      

  16.   

    可以用 js 拿到这个值,这个请求换成ajax的方式来请求,用js获取请求的地址,然后再用 indexOf("#"),获取,如下:<script type="text/javascript">
        alert(document.URL);
    </script>在servlet中这样获取PrintWriter out = resp.getWriter();
    out.println("<script type='text/javascript'>alert(document.URL);</script>");
    out.close();
      

  17.   

    String uri = request.getRequestURI();
    String path = uri.substring(uri.lastIndexOf("#")+1);
      

  18.   


    servlet如果不能直接获取的话就算了。
    多谢了。
      

  19.   

    刚才测试了一下楼上的所有方法,确实取不到#后面的值,所以对这个仔细baidu了下,发现在url中"#"是个特殊字符,表示书签,那说明“而是某个开放平台将错误消息用#来传递”不对,人家传给你的是一个url和书签,而不是一个参数,所以楼主,你要从这里去思考,而不是非要在request里去取这个值,这样恐怕只能自寻烦恼,换个思路去解决你的问题吧。
      

  20.   

    #号是HTML页面定义中的锚点,不作为query string向服务器端传递
      

  21.   

    这样一个想法
    1、先用JS去获得该参数
    2、用Jquery 里的AJAX去推到后台Servlet
      

  22.   


    人人开放平台,返回的东西,为什么你要用servlet来接收?很奇怪你的需求,是不是这里就有问题?..........
      

  23.   


    人人的前台API,直接浏览器跳转