JSP详解(二):九大内置对象

在看此文章前,确保已经学习Servlet。

JSP的九大内置对象:

对象名称备注作用域类型
out输出对象Pagejavax.servlet.jsp.JspWriter
request请求对象Requestjavax.servlet.ServletRequest
response响应对象Pagejavax.servlet.SrvletResponse
session会话对象Sessionjavax.servlet.http.HttpSession
application应用程序对象Applicationjavax.servlet.ServletContext
page页面对象Pagejavax.lang.Object
pageContext页面上下文对象Pagejavax.servlet.jsp.PageContext
exception异常对象Pagejavax.lang.Throwable
config配置对象Pagejavax.servlet.ServletConfig

pageContext对象

pageContext可以操控4个域:自己的page域、application域、session域、request域。

page域

page域的范围:在一个页面内共享的数据

因为pageContext对象实在Servlet内部的service()直接创建的,是service方法的局部变量,当方法结束时,这个对象也就消失了。

操作page域:

pageContext.setAttribute("name", "pageFeathers");
pageContext.getAttribute("name");
pageContext.removeAttribute("name");
pageContext.getAttributeNamesInScope(arg0);

用途
和自定义标签配合使用,是标签处理类与JSP之间交互的桥梁。

操作所有域:

pageContext.setAttribute("key", "value", type);

参1和参2用来指定往域中添加的键值,而第三个参数是一个int类型,用来指定域,在PageContext类中有以下几个值可供选择:
1. APPLICATION_SCOPE
2. PAGE_SCOPE
3. REQUEST_SCOPE
4. SESSION_SCOPE

pageContext.findAttribute("name");
// 从四个域中找,从小到大,一旦找到立即停止,并返回
获取其他内置对象
pageContext.getRequest();
pageContext.getResponse();
pageContext.getSession();
pageContext.getServletContext();
pageContext.getServletConfig();
pageContext.getException();

pageContext.getPage();
pageContext.getOut();

out对象:

out对象是JspWriter的实例,是向客户端输出内容的常用对象.

常用方法:

  • void println():向客户端打印字符串
  • int getBufferSize():返回缓冲区的大小(单位字节),如果没有设置缓冲区,则返回0
  • int getRemaining():返回缓冲区剩余可用的大小(同样以字节数为返回值)
  • void flush():将缓冲区的内容输出到客户端
  • void clear():清除缓冲区的内容,如果在flush()之后调用会抛异常
  • void clearBuffer():清除缓冲区的内容,如果在flush()之后调用不会抛异常
  • boolean isAutoFlush():缓冲区被填满时,是自动清空还是抛出异常
  • void close():关闭输出流

缓冲区用来保存临时数据,首先读取代码,将读取到的数据添加到缓存区中,当缓存区已经满的时候,就会将缓冲区的数据一起显示出来,并把缓存区清空,并继续缓存而当我们call flush()的时候,就会直接输出,然后清除缓存区,然后继续缓存而 一般情况下(默认值)当缓冲区填满时,就会将缓存区中的内容输出,并清空缓存区,但是,如果isAutoFlush()的值为false,当缓存区满时,就会抛出异常,而不会flush()

request对象:

get请求通常使用传参的方式,而post请求则是将请求信息封装到request对象中,所以我们需要通过request对象获取post的请求信息,幸运的是,request也把get请求的param也封装到了自己内部。
它的作用域为request,即客户端完成请求之前,此对象将一直有效。

常用方法:

  • request.setCharacterEncoding("utf-8"):设置获取的请求信息的编码格式,此方法无法解决URL传递中文出现的乱码问题。
  • request.setAttribute("password", "123456") :设置属性
  • String nm = request.getParameter("name"):根据get请求参数名称获取对应的值
  • request.getAttribute(“password”):根据属性名获取对应的属性值
  • 根据表单标签的name属性,获取提交给该页面的表单信息,因为name可能相同,所以返回数组类型。
String[] ps = request.getParameterValues("fav");
if(ps!=null){
    for (int i = 0; i < ps.length; i++){
        out.println(ps[i]);
    }
} 
  • request.getProtocol():协议类型以及版本号
  • request.getServerName():服务器的主机名
  • request.getServerPort():服务器的端口号
  • request.getRealPath("07_responsePage.jsp"):请求的真实路径,因为可能有多个页面发出请求,所以要传入请求页面
  • request.getContextPath():请求的上下文路径(相对路径)
  • request.getRemoteAddr():请求的服务器ip
  • request.getContentLength():请求体长度
  • request.getContentType():请求体MIME类型

返回样例:

姓名:Feather 爱好:daqiu wanqiu guanqiu 密码:123456 协议类型以及版本号:HTTP/1.1
服务器的主机名:localhost
服务器的端口号:8080
请求的真实路径:/home/feathers/workspace/JSPDemo/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/JSPStudyIMOOC/07_responsePage.jsp
请求的上下文路径(相对路径):/JSPStudyIMOOC
请求的服务器ip:127.0.0.1
请求体长度:42
请求体MIME类型:application/x-www-form-urlencoded

response对象:

加载一个网页,客户端(浏览器)发送request对象,服务端返回response对象

  • 包含了响应客户端请求的信息,JSP中很少用到此对象,通常是用来操作服务器返回的数据,比如cookies
  • response对象只是服务器响应给当前页面的,即:当前jsp页面请求后,接收到服务器的response对象,可以在页面中对response对象进行必要的修改,但最终还是由服务器决定响应的具体内容
  • 设置响应的MIME类型:response.setContentType("text/html;charset=utf-8")

各个对象的作用请查看Servlet。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值