HttpServletRequest对象是Java Servlet API中的一个重要接口,它代表了客户端(如Web浏览器)向服务器发送的HTTP请求。当Servlet容器(如Tomcat)接收到一个HTTP请求时,它会创建一个HttpServletRequest对象,并将其传递给Servlet的service()方法或相应的doGet()、doPost()等方法,以便Servlet能够处理该请求
package com.testServletRequest;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/s3")
public class ServletRequest extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
StringBuffer url = req.getRequestURL();
System.out.println("url:" + url);
String uri = req.getRequestURI();
System.out.println("uri:" + uri);
String queryString = req.getQueryString();
System.out.println("queryString:" + queryString);
String method = req.getMethod();
System.out.println("method:" + method);
String protocol = req.getProtocol();
System.out.println("protocol:"+protocol);
String contextPath = req.getContextPath();
System.out.println("contextPath:"+contextPath);
}
}
getParameter(String name)
:
此方法用于获取指定名称的请求参数值。这是最常见的方法之一,因为大多数Web应用都需要处理用户提交的表单数据。
例如,如果客户端请求的地址是http://www.example.com/search?keyword=java,那么request.getParameter("keyword")将返回java。
getRequestURI()
:
此方法返回请求行中的URI部分,即URL中协议和主机名之后的部分。它不包括查询字符串。
例如,对于URLhttp://www.example.com/search?keyword=java,此方法将返回/search。
getQueryString()
:
此方法返回URL中的查询字符串部分,即“?”后面的内容。如果请求URL中没有查询字符串,则返回null。
在上面的例子中,此方法将返回keyword=java。
getRemoteAddr()
:
此方法返回发出HTTP请求的客户端的IP地址。这对于跟踪用户来源、安全审计等场景非常有用。
getMethod()
:
此方法返回请求使用的HTTP方法,如GET、POST、PUT、DELETE等。这有助于服务器根据请求方法执行相应的操作。
getServletContext()
:
此方法返回与当前请求关联的ServletContext对象,它提供了对Web应用上下文信息的访问,如初始化参数、资源路径等。
getSession(boolean create)
:
此方法返回与当前请求关联的HttpSession对象,用于跟踪用户的会话状态。如果当前没有会话并且create参数为true,则创建一个新的会话。
getHeader(String name)
:
此方法返回指定请求头的值。通过此方法,可以获取客户端发送的各种HTTP头信息,如User-Agent、Accept-Language等,以进行内容协商、日志记录等操作。
getAttribute(String name)
和 setAttribute(String name, Object o)
:
这两个方法用于在HttpServletRequest对象中存储和检索属性。这对于在请求处理过程中传递数据非常有用,例如在过滤器中设置数据,然后在Servlet中检索这些数据。