如题,不是获取请求的地址,request的都不是,我是要获取当前浏览器地址栏的全部字符串,注意不是用js获取。求解啊,网上全部没答案,我就不信csdn没人能帮我解决。谢谢

解决方案 »

  1.   

    http://my.oschina.net/lovedreamland/blog/16161
      

  2.   

    哥们儿,spring mvc 的requestmapping听说过么,比如说我访问的时index.do?...它可能映射的是任意的jsp页面,但是浏览器地址栏当然显示的时index.do?,...,你这是用jsp内置对象request.getContextURL()得到的是真正的request请求(就是jsp页面的那个),但是我需要的是获取浏览器的地址,不知道你懂了没?ps:js获取很简单,我想知道java怎样获取。谢谢
      

  3.   


    //比如地址为:http://localhost:8080/project/index.jsp
    String uri = request.getRequestURI();获取//http://localhost:8080/project/index.jspString contextPath = request.getContextPath();//获取出http://localhost:8080/project
    String actionPath = uri.substring(contextPath.length());// 获取/index.jsp
    String ac = actionPath.substring(1,actionPath.lastIndexOf("."));//获取出index
      

  4.   

    就是请求xx.action,然后浏览器的url是....xx.action?你要这个??
      

  5.   


    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
      

  6.   

    其实我遇到的问题已经通过其他办法解决了,我就是想知道到底jsp怎样获取这个地址。
      

  7.   

    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
      

  8.   


    这个url其实就是document.forms[0].action
    不知道jsp如何获取呢。
    顶。
      

  9.   

    String uri = request.getRequestURI();
      

  10.   

    我就郁闷了,有的朋友要是真想帮忙,为什么不仔细看看问题的描述呢??如果哪一天,你也遇到了这个问题,去google搜索,得到的都是这样的帖子,都是你们对别人没有帮助的回答,到那时候,朋友你是不是才觉得应该仔细回答每一个帖子呢?
      

  11.   

    request.getServletPath(); 试试这个 反正还是不太了解楼主怎么会有这种需求
      

  12.   


    LS正解……LS可以多多的测试一番,就知道了……
      

  13.   


    可以这样,在项目中增加一个过滤器,使其先用struts的过滤器工作,这个过滤器只做一件事,就是把客户端发出的请求URL记录一下,如: public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request;
    String guestRequest = req.getRequestURL().toString()+ "?" +  req.getQueryString();
    request.setAttribute("guestRequest", guestRequest);//如实记录客户端请求URL
    System.out.println(guestRequest);
    在项目中,不确切知道客户端请求的URL的原因就在于struts的转发(foward ,不是resend)。在JSP页面,或者具体处理的action中,获取上面存放的变量guestRequest,<%
     out.println("<br/>客户端请求");
     String guestRequest = request.getAttribute("guestRequest").toString();
     out.println(guestRequest);
     
     out.println("<br/>处理的请求请求");
     String URL = request.getRequestURL().toString() + "?" +  request.getQueryString();
     out.println(URL);
    %>
    如果两个变量guestRequest 与URL相等,说明客户端直接请求的这个地址。否则,是经过转发的
      

  14.   

    request.getRequestURL()是获取请求的URL,不包括参数。request.getQueryString()用于获取参数信息。
      

  15.   

    地址和html代码都在客户端,如果客户端不向你的服务器发送请求,你的JSP在你服务器上是不可能获得客户端本地的内容的.用JS异步将地址发回服务器
      

  16.   

    <%
    ActionContext ac = ActionContext.getContext();                             //获取当前action的上下文
    RequestMap reqMap = (RequestMap)ac.get("request");               //获取请求Map
    String acPath = (String)reqMap.get("javax.servlet.forward.servlet_path");  //获取跳转的action路径
    String queryString = (String)reqMap.get("javax.servlet.forward.query_string"); //获取跳转的action请求参数
    System.out.println(acPath);
    System.out.println(queryString);
    %>
      

  17.   

    虽然结帖了,但还是要留下一个记号.
    使用Spring的org.springframework.web.util.UrlPathHelper类如下
    <%@ page import="org.springframework.web.util.UrlPathHelper" %>
    <%= new UrlPathHelper().getOriginatingRequestUri(request) %>
      

  18.   

    假设我当前的url为 http://localhost:8080/LDCity1/DiaryWallServlet?maxRowNumber=1   
    我说下我的思路:
    ①通过request.getRequestURL().toString()得到一个上面的真实的地址对应的真实地址,即http://localhost:8080/LDCity1/diaryWall.jsp
    ②有了http://localhost:8080/LDCity1/diaryWall.jsp 就好办了,一个地址中总有不变的地方,于是我就想到用字符串分割的方式将http://localhost:8080/LDCity1/diaryWall.jsp 按照 / 分割,并将结果存储在一个String[] data中,以下是打印出的数组结果:
    http:localhost:8080
    LDCity1
    diaryWall.jsp
    ③再由request.getQueryString()可以获取到目标地址?后面的内容,即maxRowNumber=1
    ④最后,我用一个String url=data[0]+"//"+data[2]+"/"+data[3]+"/DiaryWallServlet?"+request.getQueryString();
    这样就可以在需要的时候自由组合出当前的浏览器地址了.本人新手一枚,以上是本人愚见,希望可以帮到大家.....