优秀的手机游戏下载!
首页 HttpServletRequest对象

HttpServletRequest对象

发布时间:2024-01-11 00:20:34 编辑:手游帝 浏览:628

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对象:主要作用是用来接收客户端发送过来的请求信息,例如:请求的参数,发送的头信息等都属于客户端发来的信息,service()…
查看详情
HttpServletRequest对象:主要作用是用来接收客户端发送过来的请求信息,例如:请求的参数,发送的头信息等都属于客户端发来的信息,service()…
查看详情
HttpServletRequest对象:主要作用是用来接收客户端发送过来的请求信息,例如:请求的参数,发送的头信息等都属于客户端发来的信息,service()…
查看详情
相关资讯
猜你喜欢