jsp内置对象与四种作用域

第二章 jsp内置对象与四种作用域

本章内容

  • 九种内置对象
  • 四种作用域

  • 九大内置对象

1、Request:请求对象。

2、Response:响应对象。

3、Session:会话对象。

4、Application:应用程序对象。

5、Out:输出对象。

6、Config:配置对象。

7、Page:页面对象。

8、PageContext:页面上下文对象。

9、Exception:例外对象。

  1. (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内置对象使用

  1. (2) Response:响应对象

对客户的请求进行动态的响应,向客户端发送数据。

  1. Response重定向

在某些情况下,当响应客户时,需要将客户重新引导至另一个页面,可以使用Response的sendRedirect(URL)方法实现客户的重定向。

例如:

response.sendRedirect("index.jsp"); 

案例2: response内置对象使用

  1. 重定向与转发的区别

重定向:response.sendRedirect("URL");
转发:request.getRequestDispatcher("URL").forward(request,response);

1.转发在服务器端完成的;重定向是在客户端完成的
2.转发的速度快;重定向速度慢
3.转发的是同一次请求;重定向是两次不同请求
4.转发地址栏没有变化;重定向地址栏有变化
5.转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成

  1. (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对象就一直存在,并且为所有会话所共享。 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值