在Java中获取请求地址是一个常见的需求,无论是用于日志记录、用户追踪还是其他业务逻辑处理,以下是如何在Java中获取请求地址的详细步骤和示例。

使用HttpServletRequest对象
在Java Web开发中,获取请求地址的最直接方式是通过HttpServletRequest对象,这个对象是Servlet规范的一部分,它提供了获取请求信息的方法。
1 获取完整的URL
要获取完整的请求URL,可以使用以下方法:
String requestURL = request.getRequestURL().toString();
2 获取请求URI
如果只需要请求的URI(即URL中从协议名开始到查询字符串之前的部分),可以使用:
String requestURI = request.getRequestURI();
3 获取请求的上下文路径
请求的上下文路径是指URL中从协议名和域名开始到第一个“/”之间的部分,可以通过以下方式获取:

String contextPath = request.getContextPath();
4 获取请求的Servlet路径
Servlet路径是指URL中从上下文路径开始到查询字符串之前的部分,可以通过以下方式获取:
String servletPath = request.getServletPath();
获取请求参数
我们可能需要获取请求中的参数值,以下是如何获取请求参数的方法:
1 获取所有参数
Enumeration<String> paramNames = request.getParameterNames();
while (paramNames.hasMoreElements()) {
String paramName = paramNames.nextElement();
String paramValue = request.getParameter(paramName);
// 处理参数
}
2 获取单个参数
String paramValue = request.getParameter("paramName");
获取请求头信息
请求头信息可以提供更多的请求细节,以下是如何获取请求头信息的方法:
1 获取所有请求头
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String headerName = headerNames.nextElement();
String headerValue = request.getHeader(headerName);
// 处理请求头
}
2 获取单个请求头
String headerValue = request.getHeader("headerName");
示例代码
以下是一个简单的示例,展示如何在Servlet中获取请求地址和参数:

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
public class RequestAddressExample extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取完整的请求URL
String requestURL = request.getRequestURL().toString();
// 获取请求URI
String requestURI = request.getRequestURI();
// 获取请求的上下文路径
String contextPath = request.getContextPath();
// 获取请求的Servlet路径
String servletPath = request.getServletPath();
// 获取请求参数
String paramValue = request.getParameter("paramName");
// 设置响应内容类型
response.setContentType("text/html;charset=UTF-8");
// 实际的逻辑是在这里
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Request Address Example</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Request URL: " + requestURL + "</h1>");
out.println("<h1>Request URI: " + requestURI + "</h1>");
out.println("<h1>Context Path: " + contextPath + "</h1>");
out.println("<h1>Servlet Path: " + servletPath + "</h1>");
out.println("<h1>Parameter Value: " + paramValue + "</h1>");
out.println("</body>");
out.println("</html>");
}
}
通过以上步骤和示例,你可以轻松地在Java中获取请求地址和相关参数,这些信息对于Web开发中的各种场景都是非常有用的。


















