欢迎来到Jsp编程课时四——内置对象 中四大作用域。(一)

简介: 欢迎来到Jsp编程课时四——内置对象 中四大作用域。(一)

@@1:回顾九大内置对象和四大作用域的内容。


内置对象             类型                作用

out            JspWriter            将文本信息输出给浏览器显示

request            HttpServletRequest    获得浏览器发送过来的数据

response              HttpServletResponse    回复浏览器的请求

session            HttpSession        再不切换浏览器的情况下,存储数据

exception        Throwable        当代码报错时,用于显示异常信息        

page            Servlet(this)        表示当前jsp翻译之后的类的对象

config            ServletConfig        用于获得每一个Servlet静态数据

application        ServletContext        再服务器不关闭的情况下,存储共享数据

pageContext        PageContext        jsp页面的管理者,由这个对象可以引导出以

pageContext:该对象中存放的数据只能页面自己用


将四大域按照共享数据的作用范围从小到大排序

pageContext

@@2补充最后一个对象pageContext对象

由pageContext对象对象引出其他八个对象

//out.write("aaaaa");
pageContext.getOut().write("这是由pageContext管理的对象哦");
     //request
     pageContext.getRequest();
     //response
     pageContext.getResponse();
     //session
     pageContext.getSession();
     //exception
     pageContext.getException();
     //page
     pageContext.getPage();
     //config
     pageContext.getServletConfig();
     //application
     pageContext.getServletContext();

运行结果图

四大域的范围

请思考这个总结是对的吗?

pageContext

@1pageContext:pageContext:该对象中存放的数据只能页面自己用

@2request:在请求转发跳转页面的情况下,只能让两个页面之间共享数据

@3session:不切换浏览器的情况下,所有servlet和jsp都能共享这个对象中的所有数据

@4application:服务器不关闭的情况下,所有servlet和jsp都能共享这个对象中的所有数据

这四个对象有共同的点:都要用到setAttribute()  getAttribute()   removeAttribute()

请看运行效果图

@1当我在AA.jsp调用 pageContext方法时请问 BB.jsp能访问吗?

@2当我在AA.jsp调用 resquest方法时请问 BB.jsp能访问吗?

@3当我在AA.jsp调用 session方法时请问 BB.jsp能访问吗?

@4当我在AA.jsp调用 application方法时请问 BB.jsp能访问吗?

@5当我在AA.jsp调用 resquest方法时请问 BB.jsp什么情况下不能访问

@6当我在AA.jsp调用 application方法时请问 BB.jsp什么情况下不能能访问吗

带着这六个问题去总结自己的成果

@1pageContext:pageContext:该对象中存放的数据只能页面自己用。为什么?

 

Stacktrace:
java.lang.NullPointerException
  at java.io.Writer.write(Writer.java:157)
  at org.apache.jsp.BB_jsp._jspService(BB_jsp.java:152)
  at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
  at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
  at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
  at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
  at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
  at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
  at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357)
  at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)
  at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
  at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893)
  at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1726)
  at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
  at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
  at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
  at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
  at java.lang.Thread.run(Thread.java:748)

你会发现代码报错是什么原因呢?思考一下下面解密?

@2request:在请求转发跳转页面的情况下,只能让两个页面之间共享数据

当我将请求转发的代码注释是,你获得的代码为空为什么?

当我将请求转发的代码注释解开时,你可以获得数据为什么?

@3当我在AA.jsp调用 session方法时请问 BB.jsp能访问吗?

 

当你换浏览器访问Sssion,Session的值为什么为null?

@4当我在AA.jsp调用 application方法时请问 BB.jsp能访问吗?

 

 


当我关闭服务器时

总结:

@ pageContext方法时请问 BB.jsp能访问吗?


答:您只需记住pageContex方法共享数据只能在本对象中访问。


@ resquest方法时请问 BB.jsp能访问吗?


答:能,在请求转发为前提下,跳转页面的情况下能访问.范围俩个页面。


@session方法时请问 BB.jsp能访问吗?


答:在浏览器不不切换浏览器的情况下。能访问


@ application方法时请问 BB.jsp能访问吗?


答:在服务器不关闭的情况下,可以访问。


剩下两个问题自信思考。


@resquest方法时请问 BB.jsp什么情况下不能访问?


@6 application方法时请问 BB.jsp什么情况下不能能访问吗?

四大域的范围 @@@@@@@非常重要

请思考这个总结是对的吗?

pageContext

@1pageContext:pageContext:该对象中存放的数据只能页面自己用

@2request:在请求转发跳转页面的情况下,只能让两个页面之间共享数据

@3session:不切换浏览器的情况下,所有servlet和jsp都能共享这个对象中的所有数据

@4application:服务器不关闭的情况下,所有servlet和jsp都能共享这个对象中的所有数据

这四个对象有共同的点:都要用到setAttribute()  getAttribute()   removeAttribute()

代码区

<%@page import="java.util.Calendar"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style type="text/css">
*{
  font-size: 30px;
  font-weight: bold;
}
h4{
color: red;
}
</style>
<title>Insert title here</title>
</head>
<body>
<h1>九大内置对象的写法</h1>
 <%
  //out.write("aaaaa");
  pageContext.getOut().write("这是由pageContext管理的对象哦");
  //request
  pageContext.getRequest();
  //response
  pageContext.getResponse();
  //session
  pageContext.getSession();
  //exception
  pageContext.getException();
  //page
  pageContext.getPage();
  //config
  pageContext.getServletConfig();
  //application
  pageContext.getServletContext();
 %>
 <hr>
 <h4>pageContext是可以存储数据,但是其作用域只能供其本身的jsp页面使用</h4>
 <!--  对象一pageContext  -->
 <% 
  pageContext.setAttribute("aaa", "我是pageContext的存放范围最小的数据");
  pageContext.setAttribute("aa", "1001");
  String info=(String)pageContext.getAttribute("aaa");
  String inf=(String)pageContext.getAttribute("aa");
  out.write("<br>");
  out.write(info); 
  out.write(inf); 
  %>
<!-- 对象二 request -->
<h4>request对象中的数据是可以形成多个页面共享数据,但是要通过请求转发的
方式打开其他页面才能形成共享数据</h4>
 <%
    request.setAttribute("b", "我是request的数据");
  //pageContext.setAttribute("bbb", "我是request的数据存放的范围是第二小的数据", PageContext.REQUEST_SCOPE);
  String infob=(String)request.getAttribute("b");
  out.write("<br>");
  out.write(infob);
    //request.getRequestDispatcher("BB.jsp").forward(request, response);  
 %>
 <br>
 <h4>说明session对象能不能共享数据和浏览器有关</h4>
 <!--  对象三  Session-->
 <%
 session.setAttribute("ccc", "我是session的数据存放的范围是第二大的数据");
 session.setAttribute("cc", "我是session的数据存放的范围是第二大的数据1003@@@");
 String c=(String)session.getAttribute("ccc");  
 String cc=(String)session.getAttribute("cc");  
 out.write(c);
 out.write(cc);
 %>
 <h4>这是application对象的数据与服务器有关,只要服务器不停止,数据都能共享</h4>
 <!-- 对象四  范围最大 -->
 <%
 pageContext.setAttribute("ddd", "我是application的数据存放的范围是第一大的数据",PageContext.APPLICATION_SCOPE);
String d=(String)application.getAttribute("ddd");
application.setAttribute("dd", "我是application创建的第二个数据类型是one.two");
String dd=(String)application.getAttribute("dd");
out.write("<br>");
out.write(d);
pageContext.getOut().write(dd);
application.setAttribute("e", "我是application创建的第三个数据类型是one.tree");
String e=(String)application.getAttribute("e");
pageContext.getOut().write(e);
application.setAttribute("f", "我是application创建的第三个数据类型是one.four");
String f=(String)application.getAttribute("f");
pageContext.getOut().write(f);
 %>
 <!-- //out.write("aaaaa");
  pageContext.getOut().write("这是由pageContext管理的对象哦"); -->
 <h1>--------------------对象五的获取 pageContext.getOut()</h1>
 <%
//创建日历类
    Calendar  calendar =Calendar.getInstance();
      int AM_PM=calendar.get(calendar.AM_PM);
      if(AM_PM==calendar.AM){
        pageContext.getOut().write("<h1 style=' color:red'>获取上午时间</h1>");
      }else if(AM_PM==calendar.PM){
        pageContext.getOut().write("<h1 style=' color:green'>获取下午时间</h1>");
      }
%>
<h1>-------------page-------------对象六 </h1>
<%
pageContext.getOut().write((page.equals(this)?"page是当前对象":"page不是当前对象"));
%>
 con
<h1>--------------------------对象7 ----Confign  </h1>
<%
String name = config.getServletName();
out.write(name);
%>
</body>
</html>

   private String id;

   private String name;

   private int age;

   private String  sex;

   private String phone;

   private String addr;

   private String height;

   private String weight;

   private String a;

   private String b;

   private String c;


假如一个类中有11个属性你用什么方式存放呢?

package com.People;
/**
 * 创建一个标准的类
 *  MZFAITHDREAM
 * 类的封装 在jsp中称为 javaBean
 */
public class People {
  private String id;
  private String name;
  private int age;
  private String  sex;
  private String phone;
  private String addr;
  private String height;
  private String weight;
  private String a;
  private String b;
  private String c;
public People() {
  System.out.println("这是无惨构造");
}
public People(String id, String name, int age, String sex, String phone, String addr, String height, String weight,
    String a, String b, String c) {
  super();
  this.id = id;
  this.name = name;
  this.age = age;
  this.sex = sex;
  this.phone = phone;
  this.addr = addr;
  this.height = height;
  this.weight = weight;
  this.a = a;
  this.b = b;
  this.c = c;
}
public String getId() {
  return id;
}
public void setId(String id) {
  this.id = id;
}
public String getName() {
  return name;
}
public void setName(String name) {
  this.name = name;
}
public int getAge() {
  return age;
}
public void setAge(int age) {
  this.age = age;
}
public String getSex() {
  return sex;
}
public void setSex(String sex) {
  this.sex = sex;
}
public String getPhone() {
  return phone;
}
public void setPhone(String phone) {
  this.phone = phone;
}
public String getAddr() {
  return addr;
}
public void setAddr(String addr) {
  this.addr = addr;
}
public String getHeight() {
  return height;
}
public void setHeight(String height) {
  this.height = height;
}
public String getWeight() {
  return weight;
}
public void setWeight(String weight) {
  this.weight = weight;
}
public String getA() {
  return a;
}
public void setA(String a) {
  this.a = a;
}
public String getB() {
  return b;
}
public void setB(String b) {
  this.b = b;
}
public String getC() {
  return c;
}
public void setC(String c) {
  this.c = c;
}
@Override
public String toString() {
  return "People [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + ", phone=" + phone + ", addr="
      + addr + ", height=" + height + ", weight=" + weight + ", a=" + a + ", b=" + b + ", c=" + c + "]";
}
}

                   

相关文章
|
6月前
|
自然语言处理 Java 数据库连接
掌握JSP页面编程:动态生成Web内容
【4月更文挑战第3天】Java Server Pages (JSP) 是一种用于创建动态Web内容的Java技术,它结合HTML并允许在页面中嵌入Java代码。JSP支持代码片段、表达式语言(EL)和JSTL标签库,简化动态内容生成。当服务器接收到请求时,执行JSP中的Java代码并将结果嵌入HTML返回给客户端。示例展示了如何显示当前日期和时间。JSP可与Servlet、JavaBeans、数据库等结合,用于构建功能丰富的交互式Web应用。
138 5
掌握JSP页面编程:动态生成Web内容
|
6月前
|
存储 缓存 Java
JSP九大内置对象及基本使用
JSP九大内置对象及基本使用
141 0
|
存储 Java 关系型数据库
JSP考试质量分析系统myeclipse开发mysql数据库bs框架java编程web网页结构
JSP 考试质量分析系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发,系统主要采用B/S模式开发。
223 1
|
3月前
|
缓存 Java 应用服务中间件
JSP的内置对象 request和response
这篇文章详细介绍了JSP的内置对象,包括request、response、out、session和application对象的使用方法和特性,以及如何通过这些对象处理HTTP请求和响应、管理会话和输出数据。
|
6月前
|
存储 Java 应用服务中间件
JSP的运行原理是什么?JSP的作用域有哪些?
JSP四大作用域分别为:page、request、session、application。
101 11
|
6月前
|
安全 Java
JSP中的隐式对象和四种会话作用域
JSP中的隐式对象和四种会话作用域
114 0
|
6月前
|
XML 前端开发 Oracle
16:JSP简介、注释与Scriptlet、Page指令元素、Include操作、内置对象、四种属性-Java Web
16:JSP简介、注释与Scriptlet、Page指令元素、Include操作、内置对象、四种属性-Java Web
62 2
|
1月前
|
Java 容器
【学习笔记】Jsp与Servlet技术
【学习笔记】Jsp与Servlet技术
62 0
|
3月前
|
SQL Java 数据库
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
该博客文章介绍了在JSP应用中使用Servlet查询SQL Server数据库的表信息,并通过JavaBean封装图书信息,将查询结果展示在Web页面上的方法。
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
|
3月前
|
供应链 前端开发 Java
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)
这篇文章通过一个服装库存管理系统的实例,展示了在Spring Boot项目中使用Ajax、JSON、layui、MVC架构和iframe等技术,涵盖了注册登录、权限管理、用户管理、库存管理等功能,并提供了系统运行环境和技术要求的详细说明。
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)