JSP的9个内置对象之request对象

request对象是JSP中重要的对象,每个request对象封装着一次用户请求,并且所有的请求参数都被封装在request对象中,因此request对象是获取请求参数的重要途径。
除此之外,request可代表本次请求范围,所以还可用于操作request范围的属性。

1.获取请求头/请求参数
Web应用是请求/响应架构的应用,浏览器发送请求时通常总会附带一些请求头,还可能包含一些请求参数发送给服务器,服务器端负责解析请求头/请求参数的就是JSP或Servlet,而JSP和Servlet取得请求参数的途径就是request。request是HttpServletRequest接口的实例。

(1)request对象提供了哪几个方法来获取请求参数?
1.String getParameter(String paramName):获取paramName请求参数的值。
2.Map getParameterMap():获取所有请求参数名和参数值所组成的Map对象。
3.Enumeration(详表) getParameterNames():获取所有请求参数名组成的Enumeration对象。
4.String[] getParameterValues(String name):paramName请求参数的值,当该请求参数有多个值时,该方法将返回多个值所组成的数组。

(2)request对象提供了哪几个方法来访问请求头的值?
1.String getHeader(String name):根据指定请求头的值。
这里写图片描述
3.
这里写图片描述
4.int getIntHeader(String name):获取指定请求头的值,并将该值转为整数值。

(3)请求参数和请求头的区别?
对于开发人员来说,请求头和请求参数都是由用户发送到服务器的数据,区别在于请求头通常由浏览器自动添加,因此一次请求总是包含若干个请求头而请求参数则通常需要开发人员控制添加。

(4)请求参数的两种情况?
1、get请求:直接在浏览器地址栏输入访问地址所发送的请求或提交表单发送请求时,该表单对应的form元素没有设置method属性,或设置method属性为get,这几种请求都是GET方式的请求。GET方式的请求会将会将请求参数的名和值转换成字符串,并附加在原URL之后,因此可以在地址栏中看到请求参数名和值。且GET请求传送的数据量较小,一般不能大于2KB。
2.post请求:这种方式通常使用提交表单(由form HTML元素表示)的方式来发送,且需要设置from元素的method属性为post。POST方式传送的数据量较大,通常认为POST请求参数的大小不受限制,但往往取决于服务器的限制,POST方式传送的数据量较大,通常认为POST请求参数的大小不受限制,但往往取决于服务器的限制,POST请求传输的数据量总比GET传输的数据量大。而且POST方式发送的请求参数以及对应的值放在HTML HEADER中传输,用户不能在地址栏里看的请求参数值,安全性相对较高。

例子的代码如下:
这里写图片描述
这里写图片描述
这里写图片描述
注:并不是每个表单域都会生成请求参数,而是有name属性的表单域才生成请求参数。

(3)表单域和请求参数的关系遵循几点?
1.每个name属性的表单域对应一个请求参数
2.如果有多个表单域有相同的name属性,则多个表单域只生成一个请求参数,只是该参数有多个值
3.表单域的name属性指定请求参数名,value指定请求参数值
4.如果表单域设置了disabled=“disabled”属性,则该表单域不再生成请求参数。

运行所示的效果图如下:
这里写图片描述

如果需要传递的参数是普通的字符串,而且仅需少量参数,可以选择使用get方式发送请求参数,get方式发送的请求参数被附加到地址栏的URL之后,地址栏的URL将变成如下的形式:
url?param1=value1&param2=value2&param3=value3&…paramN=valueN

代码例子如下:
这里写图片描述
这里写图片描述
运行后效果如下图:
这里写图片描述

二,操作request范围的属性
HttpServletRequest包含如下两个方法用来设置和获取request范围的属性。
1.setAttribute(String attName,Object attValue):将attValue设置成request范围的属性。
2.Object getAttribute(String attNate):获取request范围的属性。

举个取钱的代码例子如下:

这里写图片描述
这里写图片描述
这里写图片描述

三,执行forward或include
request还有一个功能就是执行forward和include,也就是代替JSP提供的forward和include动作指令。前面需要forward时都是通过JSP提供的动作指令进行的,实际上request对象也可以执行forward。
HttpServletRequst类提供了一个getRequestDispatcher(String path)方法,其中path就是希望forward或者include的目标路径,该方法返回RequestDispatcher:该对象提供了如下两个方法:
forward(ServletRrequest request,ServletResponse response):执行forward。
include(ServletRequest request,ServletResponse response):执行include。
如下代码可以将a.jsp页面include到本页面中:
getRequestDispatcher(“/a.jsp”).include(request,response);
如下代码将请求forward到a.jsp页面:
getRequestDispatcher(”/a.jsp”).include(request,response);
注:使用getRequestDispatcher(String path)方法时,该path字符串必须以”/“开头。
上面的代码可以换现在的代码进行转发:
这里写图片描述
这里写图片描述
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值