jsp/servlet相关技术 (五) --- jsp内置对象(二)

1、request对象

        request对象是jsp中重要的对象,每个request对象封装着一次用户请求,并且所有的请求参数都被封装在request对象中,因此,request对象是获取请求参数的重要途径。

        除此之外,request课代表本次请求的范围,所以还可用于操作request范围的属性。

        1、获取请求头/请求参数

        web应用是请求/响应架构的应用,浏览器发送请求时通常会附带一些请求头,还可能包含一些请求参数发送给服务器,服务器端负责解析请求头/请求参数的就是jsp或servlet,而jsp和servlet获取请求参数的途径就是request。request是httpservletrequest接口的实例,它提供了如下的方法获取请求参数。

        ①string  getparameter(string  paramname):获取paramname请求参数的值。

        ②map    getparameter():获取所有请求参数名和参数值所组成的map对象。

        ③enumeration    getparameternames():获取所有请求参数名所组成的enumeration对象。

        ④string 【】  getparametervalues(string  name):paramname请求参数的值,当该请求参数有多个值时,该方法将返回多个值所组成的数组。

        httpservletrequest提供了如下方法来访问请求头

        ①string  getheader(string  name):根据指定请求头的值。

        ②java.util.enumeration<string>   getheadernames():获取所有请求头的名称

        ③java.util.enumeration<string>   getheaders(string  name):获取指定请求头的多个值

        ④int   getintheader(string   name):获取指定请求头的值,并将该值转为整数值

        请求参数和请求头都是由用户发送到服务器的数据,区别在于请求头通常由浏览器自动添加,因此一次请求中总是包含若干请求头;而请求参数需要进行手工添加。客户端发送请求参数通常分为两种情况。

        ①get请求:get方式的请求会将请求参数的名和值转换成字符串,并附加在原url之后,因此可以在地址栏看到请求参数的名和值。而且get请求传送的数据量较小,已办不能大于2kb。

        ②post请求:post方式通常使用提交表单的方式来发送。post方式传输的数据量较大,通常认为post请求参数的大小不受限制,但取决于服务器的限制,post请求传输的数据量比get大,而且请求参数及对应的值放在html   deader中传输,用户不能在地址栏中看到请求参数值。

         并不是每个表单域都会生成请求参数的,而是有name属性的表单域才会生成请求参数。请求参数和表单域的关系如下:

         ①每个有name属性的表单域对应一个请求参数

         ②若果有多个表单域有相同的name属性,则多个表单域只生成一个请求参数,只是该参数有多个值

         ③表单域的name属性指定请求参数名,value指定请求参数值。

         ④如果某个表单域设置了disabled = “disabled”属性,则该表单不在生成请求参数。

          2、操作request范围的属性

          httpservletrequest包含2个方法,用于设置和获取request范围的属性。

                 setattribute(string   attname,  object   attvalue):将attvalue设置成request范围的属性。

                 object   getattribute(string   attname):获取request范围的属性,

          当forward用户请求时,请求的参数和请求的属性都不会丢失。

           3、执行forward或include

           request还有一个功能就是执行forward和include,也就是代替jsp所提供的forward和include动作指令。

           httpservletrequest类提供了一个getrequestdispatcher(string   path)方法,其中path就是希望forward或include的目标路径,该方法返回requestdispatcher,该对象提供了如下两个方法:

           ①forward(servletrequest  request ,servletresponse  response):执行forward

           ②include(servletrequest request ,servletresponse response):执行include

          使用request的getrequestdispatcher(string  path)方法时,该path字符串必须以斜线开头。

2、response对象

         response代表服务器对客户端的响应。

         out是 jspwriter的实例,jspwriter是writer的子类,writer是字符流,无法输出非字符内容,例如在jsp动态生成一副位图、或者一个pdf文档,则需要使用response作为响应输出。

         1、response响应生成非字符响应

          

          使用这种方式可以实现图形验证功能,还可以直接生成pdf文件、excel文件等。

          2、重定向

          重定向会丢失所有的请求参数和request范围的属性,因为重定向会生成第二次请求。

          httpservletresponse提供了一个sendredirect(string  path)方法,该方法用于重定向到path资源,即重新向path资源发送请求。

          3、增加cookie

          cookie通常用于网站记录客户的某些信息。cookie与session的不同在于:session会随浏览器的关闭而失效,但cookie会一直存放在客户端的机器上,除非超出cookie的生命期限。

          增加cookie使用response内置对象完成的,response对象提供的方法:

          void   addcookie(cookie    cookie):增加cookie

          增加cookie按如下进行:

          ①创建cookie实例,cookie的构造器为cookie(string name,string value)

          ②设置cookie的生命期限,即cookie在多长时间内有效

          ③向客户端写cookie

3、session对象

         session对象代表一次用户回话,一次会话为:从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开为止,这个过程就是一次会话。

         session通常用于跟踪用户的回话信息。

         session对象时httpsession的实例,httpsession有如下的方法:

         ①setattribute(string  attname,object  attvalue):设置session范围内的attname属性的值为attvalue。

         ②getattribute(string   attname):返回session范围内attname属性的值。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值