欢迎来到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 + "]";
}
}

                   

相关文章
|
25天前
|
自然语言处理 Java 数据库连接
掌握JSP页面编程:动态生成Web内容
【4月更文挑战第3天】Java Server Pages (JSP) 是一种用于创建动态Web内容的Java技术,它结合HTML并允许在页面中嵌入Java代码。JSP支持代码片段、表达式语言(EL)和JSTL标签库,简化动态内容生成。当服务器接收到请求时,执行JSP中的Java代码并将结果嵌入HTML返回给客户端。示例展示了如何显示当前日期和时间。JSP可与Servlet、JavaBeans、数据库等结合,用于构建功能丰富的交互式Web应用。
掌握JSP页面编程:动态生成Web内容
|
6月前
|
存储 Java 关系型数据库
JSP考试质量分析系统myeclipse开发mysql数据库bs框架java编程web网页结构
JSP 考试质量分析系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发,系统主要采用B/S模式开发。
185 1
|
6月前
|
Java 数据库连接 数据库
JSP奖学金管理系统myeclipse开发sqlserver数据库bs框架java编程jdbc
JSP 奖学金管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为SQLSERVER2008,使用java语言开发,系统主要采用B/S模式开发。
36 0
|
6月前
|
存储 Java 关系型数据库
JSP考试质量分析系统myeclipse开发mysql数据库bs框架java编程web网页结构
JSP 考试质量分析系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发,系统主要采用B/S模式开发。
126 0
|
6月前
|
Java 关系型数据库 MySQL
JSP考试报名管理系统myeclipse开发mysql数据库bs框架java编程web网页结构
二、功能介绍 (1)权限管理:对权限信息进行添加、删除、修改和查看 (2)用户管理:对用户信息进行添加、删除、修改和查看 (3)公告管理:对公告信息进行添加、删除、修改和查看 (4)考试科目管理:对考试科目信息进行添加、删除、修改和查看 (5)考试安排管理:对考试安排信息进行添加、删除、修改和查看 (6)报名管理:对报名信息进行添加、删除、修改和查看,审核, (7)用户登录、身份验证 三、注意事项 1、管理员账号:admin密码:admin 数据库配置文件DBO.java 角色:普通用户,管理员 2、开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql
109 0
|
6月前
|
Java 关系型数据库 MySQL
JSP在线客户服务支持管理系统myeclipse开发mysql数据库bs框架java编程jdbc
JSP 在线客户服务支持管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。
41 0
|
6月前
|
Java 关系型数据库 MySQL
JSP 科研管理系统myeclipse开发mysql数据库bs框架java编程jdbc
JSP 科研管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发。系统主要采用B/S模式开发。
37 0
|
6月前
|
Java 关系型数据库 MySQL
JSP实践教学平台系统myeclipse开发mysql数据库bs框架java编程jdbc
JSP 实践教学平台系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,数据库文件名是jspskcsjpt.sql,系统名称kcsjpt,使用java语言开发系统主要采用B/S模式开发。
54 0
|
6月前
|
Java 关系型数据库 MySQL
JSP宠物寄养预约系统myeclipse开发mysql数据库bs框架java编程jdbc
JSP 宠物寄养预约系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语言开发,系统主要采用B/S模式开发。
51 0
|
6月前
|
Java 关系型数据库 MySQL
JSP 教学文档管理系统myeclipse开发mysql数据库bs框架java编程jdbc
JSP 教学文档管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0,使用java语,数据库文件名是jspsjxwd.sql,系统名称jxwd,言开发系统主要采用B/S模式开发。
39 0

相关课程

更多