servlet对象和JSP的九大内置对象

JSP的九大内置对象与Servelt对象

JSP的九大内置对象分别是:request、response、session、out、pagecontext、page、application、exception、config。

Servelt的常见的对象:HttpServelt、HttpServeltRequest、HttpServeltResponse、HttpSession、ServeltConfig、ServeltContext、Cookie。

Servelt与JSP的联系

我们的JVM识别不了JSP代码,只能识别Java类,那我们的JSP的九大内置对象是怎么来的勒?这就要说到到我们的Servelt了,Servelt是Java编写的服务器程序,狭义上是Java语言定义得一个接口,广义上说Servelt是实现了Servelt接口的类。

JSP的本质就是Servelt,Servelt是JSP的前身,JSP是Servlet的基础,也就是说JSP也实现了Servlet这个接口。当JSP第一次被访问的时候,Web容器会将JSP翻译成JVM能看得懂的Java类,然后JVM就会将这些类翻译成Servlet。

JSP的多有内置对象都是通过Servelt的HttpServeltRequest对象、HttpServeltResponse对象和HttpServelt得到的

Servelt与JSP的区别

JSP是HTML内镶嵌着Java代码,强调的是页面;Servelt是Java代码爷HTML分开的,强调的是整个逻辑。

request与HttpServletRequest

request对象代表的是客户端的请求信息,主要就是包括了通过了Http协议发送给服务器的数据(包括头信息、系统信息、请求方式以及请求参数等)。
作用域:当前的请求的当前页面
生命周期:一次请求

HttpServeltRequset对象代表服务器接收客户端的请求信息,主要作用是用来接收客户端发送过来的请求信息(包括头信息、系统信息、请求方式以及请求参数等)。

常用方法:
getRequestURL();客户端发出请求的时候完整的地址。
    getRequestURI();资源的部分名称,从站点名开始。
    getQueryString();请求行中的参数,从问好后面的参数。
    getHeader(String);获取特定的请求头内的内容。
    getParameter(String);获取参数。
    getparametervalues(String);获取指定参数的一系列值,返回一个String数组。
    
**请求转发:**请求转发是服务器的一种行为,当客户端的请求到达服务器时,服务器可以转发给请求,并且转发亲求对象,这时也可以对请求对象的进行查询和修改,方法如下:
request.setAttribute();设置值
  request.getAttribute();获取值
  request.removeAttribute();删除于对象
  请求转发的URL栏的地址是不会改变的,此处一定区别于重定向问题,请求转发客户端只有一次请求,一次返回对象。实现方法如下:
  从一个页面到另一个页面

request.getRequestDispatcher("跳转的页面的地址").forward(request,response)

HttpServeltRequest解决乱码问题

由于HttoServeltRequest属于接受用户的数据,所以肯定存在编码问题,默认的编码格式是 ISO-8859-1(此编码不支持中 文),所以在请求信息中含有中文的时候就会出现问题,这位是需要修改编码格式如下:
request.setCharacterEncoding("UTF-8")

这样也只针对post请求,当使用到get请求时就是使用到通用的方法,String的方法:

new String(request.getparameter(name).getByte("ISO-8859-1","utf-8")

response和HttpServletResponse对象

response对象是服务器响应客户端的一个对象,主要用来设置头信息、cookei和跳转

作用范围:只对当前的页面有效
生命周期:一次请求
常用方法

  public void  setHeader(java.lang.String  name, java.lang.String  value)     ----设置头信息的名字和内容
  public void sendRedirect(java.lang.String location) throws 	java.io.IOException  ----跳转,由一个页面跳往另外一个页面
  public void addCookie(Cookie  cookie)                   ----向客户端加入cookie
  public void setContentType(java.lang.String type)    ----设置内容的返回类型

在这里要区别重定向与请求转发问题请求转发(:request.getRequsetDispatcher().forward(requset,response);)是服务器的行为,一次请求,是服务器内部的转发,此处也转发的请求对象,因为是服务器内部转发,所以客户端url不可见

重定向(response.sendRedirect()),是服务器指导的客户端行为,两次请求,当重定向返回客户端,客户端接收到请求立马按照服务器的要求再次泛起请求,服务器接受做出响应,重定向完成

HttpServeltResponse对象和response对象差不多。

session对象与HttpSession对象

session和HttpSession对象对应一样。

对于服务器来讲每一个连接到他的客户端都是一个session,客户端使用的多个servlet共享这个session。

session中里有key和值,每一个session有一个唯一的id——SESSIONID,并且在客户端访问的时候创建一个含有SESSIONID的cookei返回给客户端,客户端存储这个cookei,下次访问的时候拿车这个SESSIONID放在头信息中连接服务器,服务器更具这个SESSIONID找到对应的session对象,没得的话会创建一个session对象。

默认时间是30分钟,三十分钟后销毁session,或者一个会话结束销毁session。

session对象作用域:会话内有效。(从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话;因为http是无状态的,Session需要使用Cookie作为识别标志。该Cookie为服务器自动生成的,它的maxAge属性一般为-1,表示仅当前浏览器内有效,并且各浏览器窗口间不共享,关闭浏览器就会失效。)

session常用方法

public String getId()                   ----获取Session对象编号。
public void setAttribute(String key,Object obj)----将参数Object指定的对象obj添加到Session对象中,并为添加的对象指定一个索引关键字。
public Object getAttribute(String key)       ----获取Session对象中含有关键字的对象。
public Boolean isNew()                  ----判断是否是一个新session

application对象和ServletContext 对象

同一个对象

application对象用来存储和访问来自任何页面的变量,他类似与session对象,但是不同的是application是所有的页面共享的一个对象,而session是与客户端一一对应的一个对象,application就像是一个全局变量。

生命周期:当第一个请求于该对象的时候服务器就会产生一个application对象,直到服务器关闭才会消失。

setAttribute(String key,Object obj)   ----将参数Object指定的对象obj添加到Application对象中,并为添加的对象指定一个索引关键字。
getAttribute(String key)                    ----获取Application对象中含有字的对象。

out对象

out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。(注意要及时关闭输出流)

其主要方法如下:

clear()            ----清除缓冲区中的数据,若缓冲区已经是空的,则会产生IOException异常;
clearBuffer()   ----清除缓冲区的数据,若缓冲区为空,不会产生IO异常;
flush()             -----直接将目前暂存于缓冲区的数据输出;
getBufferSize()----返回缓冲区的大小;
getRemaining()----返回缓冲区的剩余空间大小;
isAutoFlush()   ----返回布尔值表示是否自动输出缓冲区的数据;

输出数据的一些方法:

newLine()                   ----输出换行;
print(datatype data)   ----输出不同数据类型的数据;
println(datatype data) ----输出不同数据类型的数据,并自动换行;

pageContext 对象

pageContext对象能够存取其他隐含对象,如request、reponse、session、application 等对象。(实际上,pageContext对象提供了对JSP页面所有的对象及命名空间的访问。)

config对象和ServeltConfig对象

每一个servelt对应了一个ServeltCinfig对象,它是配置Servelt的一个对象在这里插入图片描述
congfig对象和ServletConfig对象一直,配置Servlet的同时也是获取Servelt的配置信息。

config对象常用方法:

 getServletContext()         ----返回 一个含有服务器相关信息的ServletContext对象。
 getIntParameter(String name) ----返回初始化参数的值。
 getIntParameterNames()     ----返回包含了Servlet初始化所需要的所有参数,返回类型是枚举型

page对象(this)

page对象代表JSP本身,只有在JSP页面内才是合法的。page对象有点类似于Java编程中的this指针,就是指当前JSP页面本身。

exception对象

exception对象的作用是显示异常信息,必须在page 指令中设定< %@ page isErrorPage=“true” %>才能使用,在一般的JSP页面中使用该对象将无法编译JSP文件。

exception对象常用方法:

getMessage( )        ----该方法返回错误信息。
printStackTrace( )  ---- 该方法以标准错误的形式输出一个错误和错误的堆栈。
toString()        ----该方法以字符串的形式返回一个对异常的描述。

cookie对象

由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。用户A购买了一件商品放入购物车内,当再次购买商品时服务器已经无法判断该购买行为是属于用户A的会话还是用户B的会话了。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie 的工作原理。

Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。

1、会话Cookie和持久Cookie

若不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。这种生命期为浏览器会话期的cookie被称为会话cookie。会话cookie一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。

若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在浏览器的不同进程间共享。这种称为持久Cookie。

2、Cookie具有不可跨域名性

就是说,浏览器访问百度不会带上谷歌的cookie;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值