ServletRequest对象用于向Servlet提供客户端请求信息,例如内容类型,内容长度,参数名称和值,标头信息,属性等。

1. ServletRequest接口的方法

ServletRequest接口中定义了许多方法。 其中常用一些如下:

方法 描述
public String getParameter(String name) 用于通过名称获取参数的值。
public String[] getParameterValues(String name) 返回一个String数组,其中包含给定参数名称的所有值。它主要用于获取“多选”列表框的值。
java.util.Enumeration getParameterNames() 返回所有请求参数名称的枚举。
public int getContentLength() 返回请求实体数据的大小;如果未知则返回-1
public String getCharacterEncoding() 返回此请求输入的字符集编码。
public String getContentType() 返回请求实体数据的Internet媒体类型;如果未知则返回null
public ServletInputStream getInputStream() throws IOException 返回用于读取请求正文中的二进制数据的输入流。
public abstract String getServerName() 返回接收请求的服务器的主机名。
public int getServerPort() 返回接收到此请求的端口号。

2. ServletRequest示例

在此示例中,我们在servlet中显示提交的用户名称。这里使用了getParameter方法,该方法返回给定请求参数名称的值。
启动Eclipse,创建一个动态web项目:ServletRequest,完整的项目结构如下所示:

如果不知道如何在Eclipse中创建一个动态web项目,请参考:

创建文件:index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ServletRequest示例</title>
</head>
<body>
    <form action="login" method="get">
        用户名:<input type="text" name="name"><br> <input
            type="submit" value="登录">
    </form>
</body>
</html>

Servlet类文件:LoginServlet.java

package com.xntutor.servlet;

import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;

public class LoginServlet extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        res.setContentType("text/html");
        PrintWriter pw = res.getWriter();

        String name = req.getParameter("name");// will return value
        pw.println("Welcome <b>" + name+"</b>");

        pw.close();
    }
}

配置文件:web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
    <display-name>ServletRequestDemo</display-name>
    <servlet>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>com.xntutor.servlet.LoginServlet</servlet-class>
    </servlet>
    <!-- Defines the path to access this Servlet -->
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/login</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
</web-app>

运行上面示例代码,得到以下结果:

结果

3. ServletRequest其他示例

这是一个显示所有标头信息的ServletRequest示例。在此示例中将显示servlet的标头信息,例如内容类型,内容长度,用户代理等。