JSP的四种作用域与九大内置对象,java算法面试题经典

JSP九大内置对象分为四类:

输入输出对象:out对象、response对象、request对象

通信控制对象:pageContext对象、session对象、application对象

Servlet对象:page对象、config对象

错误处理对象:exception对象

| 名称 | 对象 | 类型 | 作用域 | 解释 |

| — | — | — | — | — |

| page | 页面 | Objext | page | 指向了当前jsp程序本身。相当于this。 |

| session | 会话 | HttpSession | Session | 用来保存会话信息。也就是说,可以实现在同一用户的不同请求之间共享数 |

| config | 配置 | ServletConfig | page | 封装了应用程序的配置信息 |

| application | 应用程序 | ServletContext | Application | 代表了当前应用程序的上下文。可以在不同的用户之间共享信息 |

| request | 请求 | httpServletRequest | Request | 封装了来自客户端、浏览器的各种信息 |

| response | 响应 | httpServletResponse | page | 封装了服务器的响应信息 |

| out | 输出 | JspWriter | page | 用于向客户端、浏览器输出数据 |

| exception | 异常 | Throwable | page | 封装了jsp程序执行过程中发生的异常和错误信息 |

| pageContext | 页面上下文 | PageContext | page | 提供了对jsp页面所有对象以及命名空间的访问 |

简单介绍


  • page 对象代表了正在运行的由JSP文件产生的类对象,不建议一般读者使用。

  • session 对象代表服务器与客户端所建立的会话,当需要在不同的JSP页面中保留客户信息的情况下使用,比如在线购物、客户轨迹跟踪等。“session” 对象建立在cookie的基础上,所以使用时应注意判断一下客户端是否打开了cookie。常用的方法包括getId、 getValue、 getValueNames和putValue等。

  • config 对象提供一些配置信息,常用的方法有getInitParameter和getInitParameterNames,以获得Servlet初始化时的参数。

  • application 对象负责提供应用程序在服务器中运行时的一些全局信息,常用的方法有getMimeType和getRealPath等。

  • request 对象代表的是来自客户端的请求,例如我们在FORM表单中填写的信息等,是最常用的对象。常用的方法有:getParameter、getParameterNames 和getParameterValues 通过调用这几个方法来获取请求对象中所包含的参数的值。

  • response 对象代表的是对客户端的响应,也就是说可以通过response 对象来组织发送到客户端的数据。但是由于组织方式比较底层,所以不建议普通读者使用,需要向客户端发送文字时直接使用。

  • out 对象代表了向客户端发送数据的对象,与“response” 对象不同,通过“out” 对象发送的内容将是浏览器需要显示的内容,是文本一级的,可以通过“out” 对象直接向客户端写一个由程序动态生成HTML文件。常用的方法除了pirnt和println之外,还包括clear、clearBuffer、flush、getBufferSize和getRemaining,这是因为“out” 对象内部包含了一个缓冲区,所以需要一些对缓冲区进行操作的方法。

  • exception 对象则代表了JSP文件运行时所产生的例外对象,此对象不能在一般JSP文件中直接使用,而只能在使用了“<%@ page isErrorPage="true "%>”的JSP文件中使用。

  • pageContext 对象直译时可以称作“页面上下文”对象,代表的是当前页面运行的一些属性。

常用的方法有 :findAttribute、getAttribute、getAttributesScope 和getAttributeNamesInScope

一般情况下pageContext对象用到得也不是很多,只有在项目所面临的情况比较复杂的情况下,才会利用到页面属性来辅助处理。

其他介绍


  • HTTP是无状态(stateless)协议

无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。从另一方面讲,打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系。 个人简单理解,就是服务器记不住你。

  • 如何解决无状态

Cookie和Session有以下明显的不同点:

在这里插入图片描述

1)Cookie将状态保存在客户端,Session将状态保存在服务器端;

2)Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。Cookie最早在RFC2109中实现,后续RFC2965做了增强。网络服务器用HTTP头向客户端发送cookies,在客户终端,浏览器解析这些cookies并将它们保存为一个本地文件,它会自动将同一服务器的任何请求缚上这些cookies。Session并没有在HTTP的协议中定义;

3)Session是针对每一个用户的,变量的值保存在服务器上,用一个sessionID来区分是哪个用户session变量,这个值是通过用户的浏览器在访问的时候返回给服务器,当客户禁用cookie时,这个值也可能设置为由get来返回给服务器;

4)就安全性来说:当你访问一个使用session 的站点,同时在自己机子上建立一个cookie,建议在服务器端的SESSION机制更安全些。因为它不会任意读取客户存储的信息。

  • 转发和重定向

需要带对象的需求,用转发,如果只需要带简单的字符串,选用重定向。

重定向是客户端行为,转发是服务端行为。

重定向是发送两次请求,转发只发送一次请求。

重定向会更改地址栏路径,转发不会更改地址栏路径。

代码:

// 域名重定向

response.sendRedirect(“dvd”);

//请求转发

request.getRequestDispatcher(“add.jsp”).forward(request, response);

存值:

//将值放求session 会话中

HttpSession session = request.getSession();

session.setAttribute(“obj”, JavaObj);

//将值放入请求中

request.setAttribute("msg

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

", “添加失败,请重新添加!!!”);

取值:

//取request域中的值

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值