request.getRequestURL()和request.getRequestURI()

阅读更多

先申明,我是自己琢磨出来的,不知道对不对!!
但是,我想应该不会有太大的出入的!
getRequestURI()就相当于你在写一个JSP页面的时候会有这样的东西"action='/WebRoot/xxx'"这个方法就是获得'/WebRoot/xxx',也就是说它会得到一个相对地址
而getRequestURL()会得到一个完整的URL地址,也就是绝对的绝对地址

 

 

Request.getRequestURL返回的是请求的全部,包括Http协议,端口号,servlet名字和映射路径,但它不包含请求参数。
request.getRequestURI得到的是request URL的部分值,并且web容器没有decode过的

Java code
   
   
   
   
getRequestURL: public java.lang.StringBuffer getRequestURL() Reconstructs the URL the client used to make the request. The returned URL contains a protocol, server name, port number, and server path, but it does not include query string parameters. Because this method returns a StringBuffer, not a string, you can modify the URL easily, for example, to append query parameters. This method is useful for creating redirect messages and for reporting errors. Returns: a StringBuffer object containing the reconstructed URL getRequestURI: public java.lang.String getRequestURI() Returns the part of this request ' s URL from the protocol name up to the query string in the first line of the HTTP request. The web container does not decode this String. For example: First line of HTTP request Returned Value POST / some / path.html HTTP / 1.1 / some / path.html GET http: // foo.bar/a.html HTTP/1.0 /a.html HEAD / xyz ? a = b HTTP / 1.1 / xyz To reconstruct an URL with a scheme and host, use HttpUtils.getRequestURL(javax.servlet.http.HttpServletRequest). Returns: a String containing the part of the URL from the protocol name up to the query string See Also: HttpUtils.getRequestURL(javax.servlet.http.HttpServletRequest)

request.getRequestURI() /jqueryWeb/resources/request.jsp
request.getRequestURL() http://localhost:8080/jqueryWeb/resources/request.jsp
request.getContextPath()/jqueryWeb
request.getServletPath()/resources/request.jsp


注: resources为WebContext下的目录名
      jqueryWeb 为工程名

你可能感兴趣的:(JSP,Servlet,Scheme,Web,UP)