Servlet的请求处理

1.Request对象

下面的方法可用在 Servlet 程序中读取 HTTP 头。这些方法通过 HttpServletRequest 对象可用。

方法 & 描述:

Cookie[] getCookies()

返回一个数组,包含客户端发送该请求的所有的 Cookie 对象。

Object getAttribute(String name)

以对象形式返回已命名属性的值,如果没有给定名称的属性存在,则返回 null。

String getCharacterEncoding()

返回请求主体中使用的字符编码的名称。

String getContextPath()

返回指示请求上下文的请求 URI 部分。

String getHeader(String name)

以字符串形式返回指定的请求头的值。

String getMethod()

返回请求的 HTTP 方法的名称,例如,GET、POST 或 PUT。

String getParameter(String name)

以字符串形式返回请求参数的值,或者如果参数不存在则返回 null。

String getPathInfo()

当请求发出时,返回与客户端发送的 URL 相关的任何额外的路径信息。

String getProtocol()

返回请求协议的名称和版本

String getQueryString()

返回包含在路径后的请求 URL 中的查询字符串。

String getRemoteAddr()

返回发送请求的客户端的互联网协议(IP)地址。

String getRequestURI()

从协议名称直到 HTTP 请求的第一行的查询字符串中,返回该请求的 URL 的一部分。

String getServletPath()

返回调用 JSP 的请求的 URL 的一部分。

String[] getParameterValues(String name)

返回一个字符串对象的数组,包含所有给定的请求参数的值,如果参数不存在则返回 null。

int getIntHeader(String name)

返回指定的请求头的值为一个 int 值。

int getServerPort()

返回接收到这个请求的端口号。

int getParameterMap()

将参数封装成 Map 类型。

2.Response对象

下面的方法可用于在 Servlet 程序中设置 HTTP 响应报头。这些方法通过 HttpServletResponse 对象可用。

方法 & 描述

void addCookie(Cookie cookie)

把指定的 cookie 添加到响应。

void addHeader(String name, String value)

添加一个带有给定的名称和值的响应报头。

void sendRedirect(String location)

使用指定的重定向位置 URL 发送临时重定向响应到客户端。

void setCharacterEncoding(String charset)

设置被发送到客户端的响应的字符编码(MIME 字符集)例如,UTF-8。

void setContentType(String type)

如果响应还未被提交,设置被发送到客户端的响应的内容类型。

void setHeader(String name, String value)

设置一个带有给定的名称和值的响应报头。

void setIntHeader(String name, int value)

设置一个带有给定的名称和整数值的响应报头。

void setStatus(int sc)

为该响应设置状态码。

3.Servlet表单数据获取的方法

3.1Get方法

GET 方法向页面请求发送已编码的用户信息。页面和已编码的信息中间用字符分隔,如下所示:

http://www.test.comhellokey1=value1&key2=value2

GET 方法是默认的从浏览器向 Web 服务器传递信息的方法,它会产生一个很长的字符串,出现在浏览器的地址栏中。

如果您要向服务器传递的是密码或其他的敏感信息,请不要使用 GET 方法。

GET 方法有大小限制:请求字符串中最多只能有 1024 个字符。

3.2Post方法

另一个向后台程序传递信息的比较可靠的方法是 POST 方法。POST 方法打包信息的方式与 GET 方法基本相同,但是 POST 方法不是把信息作为 URL 中字符后的文本字符串进行发送,而是把这些信息作为一个单独的消息。消息以标准输出的形式传到后台程序,您可以解析和使用这些标准输出。

Servlet 使用 doPost() 方法处理这种类型的请求。

Servlet 读取表单数据

Servlet 处理表单数据,这些数据会根据不同的情况使用不同的方法自动解析:

getParameter():您可以调用 request.getParameter() 方法来获取表单参数的值。

getParameterValues():如果参数出现一次以上,则调用该方法,并返回多个值,例如复选框。

getParameterNames():如果您想要得到当前请求中的所有参数的完整列表,则调用该方法。

4.Ajax运行跨域请求

//允许所有IP地址和端口请求

response.setHeader("Access-Control-Allow-Origin", "*");

//允许所有的文档类型请求

response.setHeader("Access-Control-Content-Type", "*"); 

5.Cookie

Cookie 技术其实是浏览器端的数据存储技术,解决了不同请求需要使用相同的请求数据的问题。我们把请求需要共享的请求数据,存储在浏览器端,避免用户进行重复的书写请求数据。但是哪些数据需要使用Cookie 技术存储起来是一个主观问题,需要在后台进行响应的时候来告诉浏览器,有些数据其他请求还会使用,需要存储起来。

5.1Servlet Cookie 方法:

public void setMaxAge(int expiry)

该方法设置 cookie 过期的时间(以秒为单位)。如果不这样设置,cookie 只会在当前 session 会话中持续有效。

public int getMaxAge()

该方法返回 cookie 的最大生存周期(以秒为单位),默认情况下,-1 表示,没有设定值。

public String getName()

该方法返回 cookie 的名称。名称在创建后不能改变。

public void setValue(String newValue)

该方法设置与 cookie 关联的值。

public String getValue()

该方法获取与 cookie 关联的值。

public void setSecure(boolean flag)

该方法设置布尔值,表示 cookie 是否应该只在加密的(即 SSL)连接上发送。

public void setComment(String purpose)

设置cookie的注释。该注释在浏览器向用户呈现 cookie 时非常有用。

public String getComment()

获取 cookie 的注释,如果 cookie 没有注释则返回 null。

5.2通过 Servlet 设置 Cookie

通过 Servlet 设置 Cookie 包括三个步骤:

(1) 创建一个 Cookie 对象:您可以调用带有 cookie 名称和 cookie 值的 Cookie 构造函数,cookie 名称和 cookie 值都是字符串。

Cookie cookie = new Cookie("key","value");

(2) 设置最大生存周期:您可以使用 setMaxAge 方法来指定 cookie 能够保持有效的时间(以秒为单位)。下面将设置一个最长有效期为 24 小时的 cookie。

cookie.setMaxAge(60*60*24);

(3) 发送 Cookie 到 HTTP 响应头:您可以使用 response.addCookie 来添加 HTTP 响应头中的 Cookie,如下所示:

response.addCookie(cookie);

5.3通过 Servlet 读取 Cookie

要读取 Cookie,您需要通过调用 HttpServletRequest 的 getCookies( ) 方法创建一个 javax.servlet.http.Cookie 对象的数组。然后循环遍历数组,并使用 getName() 和 getValue() 方法来访问每个 cookie 和关联的值。

5.4通过 Servlet 删除 Cookie

删除 Cookie 是非常简单的。如果您想删除一个 cookie,那么您只需要按照以下三个步骤进行:

1、读取一个现有的 cookie,并把它存储在 Cookie 对象中。

2、使用 setMaxAge() 方法设置 cookie 的年龄为零,来删除现有的 cookie。

3、把这个 cookie 添加到响应头。

 

原文地址:https://www.cnblogs.com/WhiperHong/p/11019850.html