jsp内置对象与四种作用域
第二章 jsp内置对象与四种作用域
本章内容
- 九种内置对象
- 四种作用域
- 九大内置对象
1、Request:请求对象。
2、Response:响应对象。
3、Session:会话对象。
4、Application:应用程序对象。
5、Out:输出对象。
6、Config:配置对象。
7、Page:页面对象。
8、PageContext:页面上下文对象。
9、Exception:例外对象。
- (1) Request:请求对象
该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息。 Request常用的方法如下
方法名 |
作用 |
getParameter(String strTextName) |
获取表单提交的信息 |
request.getParameterValues(String name) |
获取多个元素值,返回数组 |
request.setCharacterEncoding("UTF-8"); |
处理post提交的乱码请求 |
request.getRequestDispatcher(URL).forward(request,response) |
将当前页面转发到下一页面 |
getProtocol() |
获取客户使用的协议 |
getServletPath() |
获取客户提交信息的页面 |
getMethod() |
获取客户提交信息的方式 |
getRermoteAddr() |
获取客户的IP地址 |
getRemoteHost() |
获取客户机的名称 |
getServerPort() |
获取服务器的端口号 |
getParameterNames() |
获取客户端提交的所有参数的名字 |
getServerName() |
获取服务器名称 |
注意:中文乱码处理方法
当Request对象获取客户提交的汉字字符时,会出现乱码问题,必须进行特殊处理。首先,将获取的字符串用ISO-8859-1进行编码,并将编码存发到一个字节数组中,然后再将这个数组转化为字符串对象即可。
例:语法
String textContent=request.getParameter("boy");
byte b[]=textContent.getBytes("ISO-8859-1");
textContent=new String(b,”UTF-8”);
案例1: request内置对象使用
- (2) Response:响应对象
对客户的请求进行动态的响应,向客户端发送数据。
- Response重定向
在某些情况下,当响应客户时,需要将客户重新引导至另一个页面,可以使用Response的sendRedirect(URL)方法实现客户的重定向。
例如:
response.sendRedirect("index.jsp");
案例2: response内置对象使用
- 重定向与转发的区别
重定向:response.sendRedirect("URL");
转发:request.getRequestDispatcher("URL").forward(request,response);
1.转发在服务器端完成的;重定向是在客户端完成的
2.转发的速度快;重定向速度慢
3.转发的是同一次请求;重定向是两次不同请求
4.转发地址栏没有变化;重定向地址栏有变化
5.转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成
- (3) Session:会话对象
1)什么是Session对象
Session对象是一个JSP内置对象,它在第一个JSP页面被装载时自动创建,完成会话期管理。从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间切换,服务器应当通过某种办法知道这是一个客户,就需要Session对象。
Session失效:1关闭服务器 2关闭浏览器
2)Session对象的ID
当一个客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个Session对象,同时分配一个String类型的ID号,JSP引擎同时将这个ID号发送到客户端,存放在Cookie中,这样Session对象,直到客户关闭浏览器后,服务器端才将该客户的Session对象取消,并且和客户的会话对应关系消失。当客户重新打开浏览器再连接到该服务器时,服务器为该客户再创建一个新的Session对象。
3)Session对象的常用方法
方法名 |
作用 |
public String getId() |
获取Session对象编号 |
public void setAttribute(String key,Object obj) |
将参数Object指定的对象obj添加到Session对象中,并为添加的对象指定索引关键字 |
public Object getAttribute(String key) |
获取Session对象中含有关键字的对象 |
public Boolean isNew() |
判断是否是一个新的客户 |
案例3:session内置对象使用
扩展案例3:使用include包含
(4) Application:应用程序对象
1)什么是Application对象
服务器启动后就产生了这个Application对象,当客户再所访问的网站的各个页面之间浏览时,这个Application对象都是同一个,直到服务器关闭。但是与Session对象不同的是,所有客户的Application对象都是同一个,即所有客户共享这个内置的Application对象。
2)Application对象的常用方法
方法名 |
作用 |
setAttribute(String key,Object obj) |
将参数Object指定的对象obj添加到Application对象中,并为添加的对象指定索引关键字。 |
getAttribute(String key) |
获取Application对象中含有关键字的对象。 |
案例4:网页访问量
在filter的内容里
https://blog.csdn.net/qq_50794782/article/details/123820930?spm=1001.2014.3001.5502
(5) Out:输出对象
Out对象是一个输出流,用来向客户端输出数据。Out对象用于各种数据的输出。
其常用方法如下。
方法名 |
作用 |
out.print() |
输出各种类型数据 |
out.newLine() |
输出一个换行符 |
out.close() |
关闭流 |
(6) Config:配置对象
一般我们使用Config对象来获取一些初始化配置信息,常用的方法有getInitParameter和getInitParameterNames,以获得Servlet初始化时的参数。
此外,还可以通过getServletContext()方法取得ServletContext。一个ServletContext对象,它能给出Servlet如何与服务器交互的信息。ServletContext对象是服务器传给这个Servlet的。在ServletConfig接口中定义ServletContext对象是其中的一部分
(7) Page:页面对象
Page对象代表了正在运行的由JSP文件产生的类对象,不建议一般使用。
(8) PageContext:页面上下文对象
作用:取得任何范围的参数
通过它可以获取jsp页面的out,request,reponse等对象
JSP引入了一个名为PageContext的类,通过它可以访问页面的许多属性。PageContext变量存储与当前页面相关联的PageContext对象的值。
PageContext类拥有getRequest、getResponse、getOut、getSession等方法。如果需要访问多个与页面相关的对象,传递pageContext要比传递request、response、out等的独立引用更容易。
(9) Exception:例外对象
作用是显示异常信息
Exception对象代表了JSP文件运行时所产生的例外对象,此对象不能在一般JSP文件中直接使用,而只能在使用了<%@ page isErrorPage="true "%>的JSP文件中使用,这是因为JSP文件运行时产生的错误对象被向外抛出,只能被使用了<%@ page isErrorPage="true "%>标记从而具有拦截错误对象功能的JSP所拦截。最常用的方法就是getMessage,用以获得错误信息,此外还会用到 getLocalizedMessage和 printStackTrace。
配置错误页面流程:
1、web.xml中配置
<error-page><error-code>404</error-code><location>/error404.jsp</location></error-page>
2、在error404.jsp页面配置
<%
response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED);
%>
获得异常类:exception.getClass()
获得异常信息:exception.getMessage()
二、四大作用域
作用域:“数据共享的范围”,也就是说数据能够在多大的范围内有效
Web应用中,JSP创建的对象有一定的生命周期,也有可能被其他组件或者对象访问。对象的声明周期和可访问性称为作用域。四种范围对象作用域从小到大顺序如下:pageContext----request----session----application。
(1)pageContext:页面域 第四 在当前页面有效
它可以获取其它八大隐式对象,可以认为它是一个入口对象。
页面作用域仅限于当前页面对象,可以近似于理解为java的this对象,离开当前JSP页面(无论是redirect还是forward),则pageContext中的所有属性值就会丢失。
(2)request:请求域 第三 在当前请求中有效
请求作用域是同一个请求之内,在页面跳转时,如果通过forward方式跳转,则forward目标页面仍然可以拿到request中的属性值。如果通过redirect方式进行页面跳转,由于redirect相当于重新发出的请求,此种场景下,request中的属性值会丢失。
(3)session:会话域 第二 在当前会话中有效
会话作用域是在一个会话的生命周期内,会话失效,则session中的数据也随之丢失。
(4)application: 应用域 范围最大 整个应用都有效
应用作用域是最大的,只要服务器不停止,则application对象就一直存在,并且为所有会话所共享。
jsp内置对象与四种作用域相关推荐
- jsp内置对象(四)-----session对象
1.什么是session session表示客户端与服务器的一次会话 Web中的session指的是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间 从 ...
- jsp和html的作用域,JSP(二):JSP九大内置对象、四个作用域对象
jsp的九大内置对象: 内置对象: jsp文件在转译成其对应的Servlet文件的时候自动生成的并声明的对象.我们在jsp页面中直接使用即可. 注意: 内置对象在jsp页面中使用,使用局部代码块或者脚 ...
- jsp内置对象【02】四种内置对象【02】session、application
我们继续来学习,上一篇文章中说到了request属性,那么既要想客户端和服务端都都能实现跳转的话,就用到了session. 第三种:session属性 我们接着修改一下上一篇文章中的代码来对比一下: ...
- JavaWeb第三讲 JSP内置对象、基本动作指令、常见编译指令及四大作用域
JSP内置对象.基本动作指令.常见编译指令及四大作用域 (一) JSP工作原理 当一个jsp页面第一次被访问的时候,jsp将执行以下三个步骤,之后的访问速度会因为class文件已经生成而大大提高,当j ...
- Jsp学习总结(1)——JSP九大内置对象和四种属性范围解读
一.四种属性范围 1.1.在JSP中提供了四种属性保存范围 page:在一个页面内保存属性,跳转之后无效 request:在一次服务请求范围内,服务器跳转后依然有效 session:-在一次会话范围内 ...
- JSP的九大内置对象和四个作用域
JSP的九大内置对象和四个作用域 JSP的九大内置对象: page,application,session,request,response,out,exception,config,pageCont ...
- 【JSP笔记】第四章 JSP内置对象【下】
2019独角兽企业重金招聘Python工程师标准>>> 1.什么是session 表示客户端与服务器的一次会话. Web中的session指用户浏览网站时,从进入网站到浏览器关闭的这 ...
- JSP内置对象:request、response、out、session、application等内置对象
Java程序的功能主要是由Java包下的各个类在运行期所产生的对象所提供,并且应用这些对象组织构建程序所需的功能. 所谓JSP内置对象,是指在JSP网页环境之下,用户不需要声明而直接可以在JSP网页中 ...
- 不属于jsp构成元素_下列不属于JSP内置对象的是()。
[单选题]include指令用于在JSP页面中静态插入一个文件,所插入文件可以是JSP页面HTML网页,文本文件或一段Java代码,但必须保证插入后形成的文件是() [单选题]下面方式中正确使用Jav ...
- Java Web复习——task03:JSP 内置对象和生命周期
文章目录 前言 一.JSP内置对象 1.1 HttpServletRequest类和Request对象 1.2 HttpServletResponse类和Response对象 1.3 JspWrite ...
最新文章
- Syncfusion教程:在Xamarin.Forms中创建数据输入表单 (3)
- 2020 最烂密码 TOP 200 大曝光,霸榜的竟然是它?
- 手机自动化测试:appium源码分析之bootstrap六 (下)
- CvArr、Mat、CvMat、IplImage、BYTE转换(总结而来)
- heritrix 相关
- Verdi 基础教程
- 使用百度云智能SDK和树莓派搭建简易的人脸识别系统 Python语言版
- C4D素材背景模板|广泛应用电商场景和展览的运用
- Lintcode: Permutation Index
- hashMap底层原理
- 百度必应谷歌图片自动爬取库icrawler使用体会
- Postman如何设置成中文?(汉化)
- Centos7.6安装Bugzilla5.0.4
- win7下MeGUI压片无声、卡死、音画不同步、无法转码、无法硬解的解决办法
- 飞凌单片机解密_芯片解密方法大全
- 花卉拍摄技巧 8 — 荷莲
- WordCount 官方源码解读及工程代码
- php去掉工作日,2014年工作日计算(去除法定假日和周六日,但包括调休日)
- 优美的曲线(含蝴蝶线)-CoCube
- 深入理解散列函数和散列表