HttpServletRequest对象

发布时间:2024-01-11 00:20:34 来源:君肯网

HttpServletRequest对象:主要作用是用来接收客户端发送过来的请求信息,例如:请求的参数,发送的头信息等都属于客户端发来的信息,service()方法中形参接收的是HttpServletRequest接口的实例化对象,表示该对象主要应用在好TP协议上,该对象是由Tomcat封装好传递过来。

HttpServletRequest是ServletRequest的子接口,ServletRequest只有一个子接口,就是HttpServletRequest。既然只有一个子接口为什么不将两个接口合并为一个?

从长远上讲:现在主要用的协议是HTTP协议,但以后可能出现更多新的协议。若以后想要支持这种新协议,只需要直接继承ServletRequest 接口就行了。

在HttpServletRequest接口中,定义的方法很多,但都是围绕接收客户端参数的。但是怎么拿到该对象呢?不需要,直接在Service方法中由容器传入过来,而我们需要做的就是取出对象中的数据,进行分析、处理。

常用方法

运行结果:

方法

浏览器地址栏输入:

则控制台输出:

由于现在的request属于接收客户端的参数,所以必然有其默认的语言编码,主要是由于在解析过程中默认使用的编码方式为ISO-8859-1(此编码不支持中文),所以解析时一定会出现乱码。要想解决这种乱码问题,需要设置request 中的编码方式,告诉服务器以何种方式来解析数据。或者在接收到乱码数据以后,再通过相应的编码格式还原。

方式一(只针对POST有效,必须在接收所有的数据之前设定):

方式二(借助了String 对象的方法,该种方式对任何请求有效,是通用的):

Tomcat8起,以后的GET方式请求是不会出现乱码的。

请求转发,是一种 服务器的行为 ,当客户端请求到达后,服务器进行转发,此时会将请求对象进行保存,地址栏中的 URL地址不会改变 ,得到响应后,服务器端再将响应发送给客户端,从始至终 只有一个请求发出 。实现方式如下,达到多个资源协同响应的效果。

通过该对象可以在一个请求中传递数据,作用范围:在一次请求中有效,即服务器跳转有效。

使用作用域时需要设置请求转发,否则没有效果。

request域对象中的数据在一次请求中有效,则经过请求转发,request域中的数据依然存在,则在请求转发的过程中可以通过request来传输/共享数据。

请求转发到Servlet

请求转发到jsp。 此时需要修改:

req.getRequestDispatcher("test.jsp").forward(req, resp)

怎么获取httpservletrequest

Web服务器收到客户端的http请求,会针对每一次请求,创建一个用于代表请求的HttpServletRequest类型的request对象,并将"HTTP请求协议"的完整内容封装到该对象中。开发者获拿到request对象后就可以获取客户端发送给服务器的请求数据了。

当客户端浏览器向服务器发送请求后,服务器会根据HTTP请求协议的格式对请求进行解析。同时,服务器会创建 HttpServletRequest类型的对象,即请求对象,然后将解析出的数据封装到该请求对象中。此时HttpServletRequest实例就创建并初始化完毕了,也就是说,请求对象是由服务器创建。当服务器向客户端发送响应结束后,HttpServletRequest 实例对象被服务器销毁,HttpServletRequest对象的生命周期很短暂。

一次请求对应一个请求对象, 另外一次请求对应另外一个请求对象,即每次请求都会创建一个HttpServletRequest类型的对象,这些对象之间没有关系。

Map getParameterMap()

获取包含所有请求参数及值的 Map 对象。需要注意,该 Map 的 value 为 String[],即一个参数所对应的值为一个数组。说明一个参数可以对应多个值。

Enumeration getParameterNames()

获取请求参数 Map 的所有 key,即获取所有请求参数名。

String[] getParameterValues(String name)

根据指定的请求参数名称,获取其对应的所有值。这个方法一般用于获取复选框(checkbox)数据。

String getParameter(String name)

根据指定的请求参数名称,获取其对应的值。若该参数名称对应的是多个值,则该方法获取到的是第一个值。这个方法是最常用的方法。

getRequestURL 方法返回客户端发出请求时的完整URL。

getRequestURI 方法返回请求行中的资源名部分。

getQueryString 方法返回请求行中的参数部分。

getRemoteAddr 方法返回发出请求的客户机的IP地址

getRemoteHost 方法返回发出请求的客户机的完整主机名

getRemotePort 方法返回客户机所使用的网络端口号

getLocalAddr 方法返回WEB服务器的IP地址。

getLocalName 方法返回WEB服务器的主机名

getMethod 得到客户机请求方式

创建一个html里面写一些表单信息:

HttpServletRequest对象

创建一个servlet来接收用户提交的数据:

如何在一个类中获取HttpServletRequest 对象

1、request.getRequestURL()

返回的是完整的url,包括Http协议,端口号,servlet名字和映射路径,但它不包含请求参数。

2、request.getRequestURI()

得到的是request URL的部分值,并且web容器没有decode过的

3、request.getContextPath() 

返回 the context of the request.

4、request.getServletPath() 

返回调用servlet的部分url.

5、request.getQueryString() 

返回url路径后面的查询字符串

示例:

当前url:http://localhost:8080/CarsiLogCenter_new/idpstat.jsp?action=idp.sptopn

request.getRequestURL() http://localhost:8080/CarsiLogCenter_new/idpstat.jsp

request.getRequestURI() /CarsiLogCenter_new/idpstat.jsp

request.getContextPath()/CarsiLogCenter_newrequest.getServletPath() /idpstat.jsp

request.getQueryString()action=idp.sptopn

HttpRequest与HttpservletRequest有什么区别

通过ServletActionContext直接获取:

import javax.servlet.http.HttpServletRequest

import javax.servlet.http.HttpServletResponse

import com.opensymphony.xwork2.ActionSupport

import org.apache.struts2.ServletActionContext

import java.util.Map

public class UserAction extends ActionSupport {

private HttpServletRequest request

private HttpServletResponse response

public String addUser() throws Exception {

/*

采用ActionContext则为

&ltMap&gtrequest =(Map)ActionContext().getContext().get(“request”);

*/

request = ServletActionContext().getRequest()

String name = request.getParameter("name")

}

}

Java中HttpServletRequest接口是ServletRequest子接口,HttpServletRequest接口遵循http协议。 相比于HttpServletRequest接口,ServletRequest的应用范围更加广泛,HttpServletRequest只适合在web开发中的http协议的请求,而ServletRequest则没有具体要求。

以上就是关于HttpServletRequest对象全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

更多相关资讯

HttpServletRequest对象:主要作用是用来接收客户端发送过来的请求信息,例如:请求的参数,发送的头信息等都属于客户端发来的信息…
查看详情
HttpServletRequest对象:主要作用是用来接收客户端发送过来的请求信息,例如:请求的参数,发送的头信息等都属于客户端发来的信息…
查看详情
HttpServletRequest对象:主要作用是用来接收客户端发送过来的请求信息,例如:请求的参数,发送的头信息等都属于客户端发来的信息…
查看详情
相关文章
推荐游戏
风之谷
风之谷
游戏资讯 10.5M
下载
斗罗大陆3
斗罗大陆3
游戏资讯 566.9M
下载
冠军网球
冠军网球
游戏资讯 148.1M
下载
最佳炮手
最佳炮手
游戏资讯 68.1M
下载
如梦下弦月
如梦下弦月
游戏资讯 840.1M
下载
富甲封神传
富甲封神传
游戏资讯 263.0M
下载