欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

深入理解Java JSP中的九个内置对象及Cookie对象详解

最编程 2024-08-11 10:08:12
...

九大内置对象

一.什么是JSP内置对象

JSP内置对象百度百科详解

  • JSP内置对象是Web容器创建的一组对象

JSP的内置对象是指在JSP页面系统中已经默认内置的Java对象,这些对象不需要开发人员显式声明即可使用。
在JSP页面中,可以通过存取JSP内置对象实现与JSP页面和Servlet环境的相互访问。每个内部对象均有对应所属的ServletAPI类型。

二、JSP内置对象组成

JSP内置对象包括request对象、response对象、session对象、out对象、application对象、page对象、exception对象、pageContext对象、config对象。这些对象在客户端和服务器端交互的过程中分别完成不同的功能。

三、JSP内置对象的特点

JSP的内置对象主要有以下特点:

  • 1、由JSP规范提供,不用编写者实例化;
  • 2、通过Web容器实现和管理;
  • 3、所有JSP页面均可使用;
  • 4、只有在脚本元素的表达式或代码段中才可使用(<%=使用内置对象%><%使用内置对象%>

四、JSP内置对象的分类

按照内置对象的功能来划分,可以分为以下四类:

  • 1、输出输入对象:request对象、response对象、out对象;
  • 2、通信控制对象:pageContext对象、session对象、application对象;
  • 3、Servlet对象:page对象、config对象;
  • 4、错误处理对象:exception对象。 [3]

详解out内置对象

Out对象

Out对象是javax.servlet.jsp.JspWriter类的实例。主要用于向客户端浏览器输出数据。

out对象的作用

如何在JSP页面中输出信息?

  • <%=信息内容%>
  • out.println(信息内容);或out.print(信息内容);

示例:
在这里插入图片描述
效果:
在这里插入图片描述

out对象的常用方法

out对象是向客户端输出内容常用的对象
在这里插入图片描述

注意:
但是,浏览器目前不识别println()写入的换行符,如果希望浏览器显示换行,应当向浏览器写入 < br>来实现换行

out对象的实例

out对象各种方法的使用
在这里插入图片描述
out对象缓冲区自动刷新设置
在这里插入图片描述


详解request内置对象

request对象的作用

如何将页面上的动态信息提交给服务器?

  • 动态信息包括:用户名、密码
  • 页面提交后,显示输出的数据
    在这里插入图片描述

在这里插入图片描述


request对象的常用方法

request对象主要用于封装客户端的请求信息

常用方法:

方法名 描述
object getAttribute() 返回指定属性的属性值
Enumeration getAttributeNames() 返回所有可用属性名的枚举
String getParameter() 返回指定参数的参数值
Enumeration getParameterNames() 返回所有可用参数名的枚举
String [] getParameterValues() 返回包含参数的所有值的数组
void setAttribute() 设置属性的属性值
String getMethod() 返回提交方式

request对象的实例

在这里插入图片描述


页面显示:
在这里插入图片描述


取得请求信息:

在这里插入图片描述


页面显示:

在这里插入图片描述


请求转发
地址栏地址不改变,是服务器内部的一次改变
实例:
在这里插入图片描述

在这里插入图片描述

页面显示:
在这里插入图片描述

中文乱码处理:

get方式:
在这里插入图片描述
post方式:

在这里插入图片描述

tomcat设置
在这里插入图片描述

详解response内置对象

response对象的作用

在这里插入图片描述

  • response对象用于响应客户请求并向客户端返回信息

response对象的常用方法

在这里插入图片描述

response对象的示例

重定向
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
获取不到上一个request域定义的值


详解session内置对象

  • 什么是会话?

    • 一个会话就是浏览器与服务器之间的一次通话
      在这里插入图片描述
  • 为什么使用会话?

    • HTTP协议
      • 无状态,无连接
        在这里插入图片描述

session对象的作用及原理

session原理:

session对象的原理在于,服务器可以为客户端创建并维护一个session对象,用于存放数据。在创建session对象的同时,服务器将会为该session对象产生一个唯一编号sessionID

。服务器以cookie的方式将sessionID存放在客户端。当浏览器再次访问该服务器时,会将sessionID作为Cookie信息带到服务器,服务器可以通过该sessionID检索到以前的session对象,并对其进行访问。

注意:cookie中仅仅保存了一个sessionID
,而相对较多的会话数据保存在服务器端对应的session对象中,由服务器来统一维护,这样一定程度保证了会话数据安全性,但增加了服务器端的内存开销。

如下图所示:
在这里插入图片描述
URL重写技术跟踪session

如果用户关闭了cookie的使用,还想保存session状态的话,必须使用url重写的技术。也就是在url地址中加入sessionid,以方便保存信息

在这里插入图片描述

session对象的有效期

  • 发现下面四种情况之一,session将失效
    在这里插入图片描述

session对象主要用于在一次会话中保存信息


session对象的常用方法

session的常用方法

方法名 描述
String getId() 返回session创建时的唯一ID号
long getCreationTime() 返回session创建的时间
long getLastAccessedTime() 返回此session的最近一次的请求时间
void invalidate() 取消session,使session失效
object getAttribute() 从session对象中提取指定的对象
void setAttribute() 将对象添加到session对象中
void removeAttribute() 从session中删除指定的对象
void setMaxInactiveInterval() 设置session对象的生存时间
boolean isNew() 判断是否是一个新的用户

session对象的示例

在这里插入图片描述

代码示例:

<body>
<%session.setMaxInactiveInterval(10);%>
id:<%=session.getId()%><br>
session的创建时间:<%=session.getCreationTime()%><br>
最近一次访问时间:<%=session.getLastAccessedTime()%><br>
对网页无操作,session最大有效期:<%=session.getMaxInactiveInterval()%><br>
<%=session.getAttribute("USERS")%>
</body>

效果:

id:AAF1BD078D1DCF56CC853837C577287E
session的创建时间:1622538233954
最近一次访问时间:1622538298449
对网页无操作,session最大有效期:10
null

session修改session超时时间
在tomcat下的web.xml文件下的

<session-config>
        <session-timeout>30</session-timeout>
    </session-config>

默认三十分钟


详解application内置对象

application对象的作用及原理

application的作用:

application对象实现了用户间数据的共享,可存放全局变量

application对象的常用方法

application的常用方法

方法名 描述
Object getAttribute() 从application中取得指定的对象
void setAttritute() 往application中保存指定的对象
String getRealPath() 返回指定虚拟路径的真实路径
void removeAttribute() 从application中删除指定的对象
String getServerInfo() 返回JSP(SERVLET)引擎名及版本号

application对象的示例

  • 统计网站访问次数的实现

在这里插入图片描述


详解exception内置对象

exception对象的作用

exception 对象是专门负责处理JSP在执行过程中出现的异常问题的。
但要注意 exception 对象一般要和page 指令一起配合使用,只有在异常处理页面(在页面指令里有isErrorPage=true的页面)中才可以使用,把 JSP 文件执行时所有发生的错误和异常都集中到异常处理页面去进行处理。
这不仅提高了系统的统一性,程序流程也变得更加简单清晰。

exception对象的方法

方法名 描述
String getMessage() 返回描述异常的信息
String toString() 返回关于异常的简短描述信息
void printStackTrace() 显示异常及其栈轨迹
Throwable FilllnStackTrace() 重写异常单的执行栈轨迹

exception对象的示例

<%--
  Created by IntelliJ IDEA.
  User: 吕兴利
  Date: 2021/6/1
  Time: 13:28
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form method="post" action="ex2.jsp">

    <input name="number" type="text">
    <input type="submit" value="提交">
</form>
</body>
</html>

<%--
  Created by IntelliJ IDEA.
  User: 吕兴利
  Date: 2021/6/1
  Time: 13:28
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    int number=0;
    try {
        String strNumber=(String) request.getParameter("number");
        number=Integer.parseInt(strNumber);
    }catch (NumberFormatException n){
        throw new NumberFormatException("你输入的文本不是数字!");
    }
%>

<%
    out.print("你输入的数字是"+number);
%>
</body>
</html>

详解page内置对象

page对象的作用

page是java.lang.Object类的一个实例,它指的是JSP实现类的实例,也就是说,它是JSP本身
相当于JSP编译生成servlet后是servlet类的this对象。实际当中很少用到。

page对象的示例

<body>
相当于this对象<%
    out.print(page.toString());
%>
</body>

效果:

相当于this对象org.apache.jsp.page1_jsp@6f8551d3

详解config内置对象

config对象的作用

config 对象代表当前JSP 配置信息,但JSP 页面通常无须配置,因此也就不存在配置信息。
该对象在JSP 页面中非常少用,但在Servlet 则用处相对较大。
因为Servlet 需要配置在web.xml 文件中,可以指定配置参数。


详解pageContext内置对象

pageContext对象的作用

pageContext对象提供了对JSP页面所有的对象的访问,pageContext对象的方法可以访问除本身以外的8个JSP内部对象。
pageContext对象相当于JSP程序中所有对象功能的集成者。但其他的8个内置对象也都可以直接访问,所以pageContext对象应用较少。

一个图解释:

在这里插入图片描述

至此九大内置对象就结束了


对象的作用域

范围的分类

在这里插入图片描述

page作用域

page作用域指本JSP页面的范围
- pageContext.setAttribute(键,值)
- pageContext.getAttribute(键)

在这里插入图片描述

request作用域

  • request作用域内的对象则是与客户端的请求绑定在一起

在这里插入图片描述

session作用域

  • session对象作用域:一次对话

在这里插入图片描述

application作用域

  • application的作用域:面对整个Web应用程序

在这里插入图片描述

JSP内置对象及作用域

在这里插入图片描述


cookie

cookid的简介

  • cookie是Web服务器保存在客户端的一系列文本信息
  • cookie的作用
    • 对特定对象的追踪
    • 统计网页浏览次数
    • 简化登录
  • 安全性能
    • 容易信息泄露

cookie语法

  • 创建cookie对象
Cookie newCookie = new Cookie(String key,Object value);

  • 写入cookie
response.addCookie(newCookie);
  • 读取cookie
Cookie[] cookies = request.getCookies();

cookie对象的常用方法

  • cookie对象的常用方法
方法名称 说明
void setMaxAge(int expiry) 设置cookie的有效期,以秒为单位
void setValue(String value) 在cookie创建后,对cookie进行赋值
String getName() 获取cookie的名称
String getValue() 获取cookie的值
String getMaxAge() 获取cookie的有效时间,以秒为单位