JSP内置对象——application对象

article/2025/9/29 11:39:57
        在介绍appl ication 对象之前,先简单介绍一些Web 服务器的实现原理。
        对于大部分浏览器而言,它通常负责完成件事情:
(1)向远程服务器发送请求。
(2)读取远程服务器返回的字符串数据。
(3)责根据字符串数据渲染出一个丰富多彩页面。

       实际上,浏览器是一个非常复杂的网络通信程序,它除了可以向服务报送请求,读取网络数据之外,最大的技术难点在于将HTML文本渲染成页面,建立HTML页面的DOM模型,支持JavaScript 脚本程序等.
     Web 服务器则负责接收客户端请求, 每当接收到客户端连接请求之, Web 服务器应该使用单独的线程为该客户端提供服务:接收请求数据、送回响应数据。图1 显示了Web 服务器的运行机制。  


                                                 
                                                                    图 1 Web服务器运行机制

这种架构称做“请求/响应”架构根据如图1的机制进行归纳,对于每次客户端请求, Web 服务器大致需要完成如下几个步骤:
启动单独的线程。
2 使用I/O流读取用户的请求数据。
3 从请求数据中解析参数。
4 处理用户请求。
生成响应数据。
6 使用IO流向客户端发送请求数据。  

         其中1、2、6是通用的,可以由Web 服务器来完成,但3、4、5则存在差异:因为不同请求里包含的请求参数不同,处理用户请求的方式也不同,所生成的响应自然也不同。那么Web 服务器到底如何执行第3 、4 和5 步呢?
         实际上, Web 服务器会调用Servlet方法来成第3 、4 和5 步, 我们编写JSP页面时,页面里的静态内容、JSP 脚本都会转换成Servlet方法的执行代码,这些执行代码负责完成解析参数、处理请求、生成响应等业务功能,而Web 服务器则负责完成多线程、网络通信等底层功能。
         Web 应用里的JS页面、Servlet 等程序都将由Web 服务器来调用, JSP 、Servlet 之间通常不会相互调用,这就产生了一个问题: JSPServlet 之间如何交换数据?几乎所有Web 服务器(包括Java、ASP、PHP Ruby 等〉都会提供4 个类似Map 的结构,分别是application、session 、request、page , 并允许JSP 、Servle将数据放入这个类似Map 的结构中,并允许从这 个Map 结构中取出数据。这 个Map 结构的是范围不同。
  • application : 对于整个Web 应用有效,一旦JSP 、Servlet 将数据放入application 中,该数据将可以被该应用下其他所有的JSP Servlet 访问。
  •  session :仅对一次会话有效, JSP Servlet 将数据放入session 中,该数据将可以被本次会话的其他所有的JSP Servlet 访问
  • request:仅对本次请求有效,一JSP 、Servlet 将数据放入request 中,该据将可以被该次请求的其他JSP Servlet 访问。  
  • page:仅对当前页面有效, 一旦JSServlet 将数据放入page ,该数据只可以被当前页面JS脚本、声明部分访问。

        JSP中的application 、session、request 和pageContext 4 个内置对象分别用于操作application 、session 、request page 范围中的数据application 对象代表Web 应用本身, 因此使用application 来操作Web 应用关数据。application对象通常有如下两个作用

1 在整Web 应用的多个JSP Servlet 之间共享数据。

         看下面页面, 该页面仅仅声明了个整型变量, 每次刷新该页面时,该变量值加1,然将该变量的值放入application 内。下面是页面的代码。 
     
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>application测试</title>
<meta name="website" content="http://www.crazyit.org" />
</head>
<body>
<!-- JSP声明 -->
<%!
int i;
%>
<!-- 将i值自加后放入application的变量内 -->
<%
application.setAttribute("counter",String.valueOf(++i));
%>
<!-- 输出i值 -->
<%=i%>
</body>
</html>
         虽然使用application (即ServletContext 实例〉可以方便多个JSP 、Servlet 共享数据,但不要仅为了JSP、Servlet 共享数据就将数据放入application 中!由于application 代表整个Web 应用,所以通常只应该把Web应用的状态数据放入application 里  

2 访问Web 应用的配置参

application 还有个重要用处:可用于获得Web 应用的配置参数。看如下JS页面,该页面访问数据库,但访问数据库所使用的驱动、URL、用户名及密码都在web.xml 中给出。
   
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<%@ page import="java.sql.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>application测试</title>
<meta name="website" content="http://www.crazyit.org" />
</head>
<body>
<%
//从配置参数中获取驱动
String driver = application.getInitParameter("driver");
//从配置参数中获取数据库url
String url = application.getInitParameter("url");
//从配置参数中获取用户名
String user = application.getInitParameter("user");
//从配置参数中获取密码
String pass = application.getInitParameter("pass");
//注册驱动
Class.forName(driver);
//获取数据库连接
Connection conn = DriverManager.getConnection(url,user,pass);
//创建Statement对象
Statement stmt = conn.createStatement();
//执行查询
ResultSet rs = stmt.executeQuery("select * from news_inf");
%>
<table bgcolor="#9999dd" border="1" width="480">
<%
//遍历结果集
while(rs.next())
{
%>
<tr>
<td><%=rs.getString(1)%></td>
<td><%=rs.getString(2)%></td>
</tr>
<%
}
%>
<table>
</body>
</html>
       上面的程序中粗体字代码使用application 的getlnitParameter(String paramName)来获取Web 应用的配置参数,这些配置参数应该在web.xml 文件中使用context-param 元素配置,每个<context-param... />元素配置个参数,该元素下有如下两个子元素。
  • param-name ,配置Web 参数名。
  • param-value:配置Web 参数值。
        web.xml 文中使用<context-param.. ./>元素配置的参数对整个Web 应用有效,所以也被称为Web应用的配置参数。与整个Web 应用有关的数据,应该通过application 对象来操作。为了给Web 应用配置参数,应在web.xml 文件中增加如下片段。  
   
<!-- 配置第一个参数:driver -->
<context-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</context-param>
<!-- 配置第二个参数:url -->
<context-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://localhost:3306/javaee</param-value>
</context-param>
<!-- 配置第三个参数:user -->
<context-param>
<param-name>user</param-name>
<param-value>root</param-value>
</context-param>
<!-- 配置第四个参数:pass -->
<context-param>
<param-name>pass</param-name>
<param-value>32147</param-value>
</context-param>
        通过这种方式,可以将一些配置信息放在web.xml 文件中配置,避免使用硬编码方式写在代码中,从而灵好地提高程序的移植性.  

http://chatgpt.dhexx.cn/article/QYTnFJ2W.shtml

相关文章

JSP入门之JSP内置对象

系列文章目录 目录 前言 一、request对象 1.获取用户提交的信息 2.JSP页面文件的编码方式 3.常用方法举例 4.处理HTML标记 5.处理超链接 二、response对象 1.动态响应contentType属性 2.response对象的HTTP文件头 3.response对象的重定向 三、session对象 1.se…

JSP内置对象request

1.request对象 request对象是最常用的JSP内置对象之一,其中包含了有关浏览器请求的信息 可以在JSP页面中通过调用request对象的方法来获取请求中的相关数据以及浏览器的有关信息。 request对象用于处理请求的方法有很多 request的getPaeameter&#xff08;&#xff09;方法是…

【Jsp】第七课 Jsp内置对象的学习和使用

概念 什么是JSP内置对象&#xff1f; } JSP 内置对象是 Web 容器创建的一组对象 } JSP 内置对象是可以直接在 JSP 页面使用的对象 &#xff0c;无需使用“ new” 获取实例 } JSP 内置对象的名称是 JSP 的保留字 } 内置对象说白了就是别人创建好了的对象&#xff0c;我们…

JSP内置对象详解 常用方法

目录 out request response session application exception page config pageContext JSP内置对象的作用域 JSP内置对象是在JSP运行环境中已定义好的对象&#xff0c;可在JSP页面的脚本部分直接使用。 out对象 out 为输出流对象&#xff0c;主要用于向客户端输出流…

JSP内置对象

JSP内置对象的分类内置对象属性保存范围JSP内置对象的常用方法&#xff08;只列了一些&#xff09;小例子 一&#xff1a;JSP内置对象的分类 这些对象不用经过显示声明直接引用&#xff0c;也不用代码创建其实例&#xff0c;可在程序中直接使用&#xff0c;由Web Container为对…

jsp内置对象之request

一、内置对象概述 有些对象不用声明即可在jsp页面的java程序片和表达式中使用&#xff0c;这就是jsp 的内置对象。Jsp的常用的内置对象有request&#xff0c;response&#xff0c;session&#xff0c;aplication和out。Response和request对象是jsp内置对象中比较重要的两个&am…

JSP的内置对象详解

JSP内置对象 文章目录 JSP内置对象前言一、out对象1.原理2. 向客户端输出数据 二、page对象1.范围 三、pageContext 对象1.获取内置对象2.存储数据 四、request对象1.创建及获取请求2.范围 五、response 对象1.重定向网页2.处理HTTP文件头 六、session对象1.创建及获取客户的会…

JSP常用内置对象概述

1、概述 JSP提供了9个预设的对象&#xff0c;我们将其称为内置对象。这些对象内置在JSP网页环境之下&#xff0c;因此用户不需要引用这些对象所属的包&#xff0c;便可以直接在JSP网页中使用这些对象。 如图&#xff1a; (1 ) request与response对象。JSP网页能够具备与用户…

JSP的九种内置对象

JSP有九个内置对象&#xff08;又叫隐含对象&#xff09;&#xff0c;不需要预先声明就可以在脚本代码和表达式中随意使用&#xff0c;即不需要实例化&#xff0c;直接使用其方法即可。 pageppagecontentoutconfigexceptionrequestreponsesessionapplication 作用域&#xff…

JSP九大内置对象

JSP提供了由容器实现和管理的内置对象&#xff0c;也可以称之为隐含对象&#xff0c;由于JSP使用Java作为脚本语言&#xff0c;所以JSP将具有强大的对象处理能力&#xff0c;并且可以动态创建Web页面内容。但Java语法在使用一个对象前&#xff0c;需要先实例化这个对象&#xf…

【JSP内置对象】之9大内置对象(JavaWeb必背必掌握)

JSP内置对象 理解9大内置对象分类1.request&#xff08;请求对象&#xff09;2.response(响应对象)3.session(会话对象)4.application(应用程序对象)5.page(页面对象)6.pageContext(页面上下文对象)7.out(输出对象)8.config(配置对象)9.exception(异常对象) 理解 1.JavaEE规范…

SQL INSERT 语句

INSERT 语句是向表中添加新行&#xff0c;&#xff08;如图所示的是INSERT 语句的最基本形式&#xff09; 1、首先&#xff0c;是要指定要插入的表的名称&#xff08;例如图中的yuangong&#xff09; 2、其次&#xff0c;指定要插入的数据&#xff0c;一个或多个列的列表。必须…

pycharm sql语句插入

一. 二. 开控制台 三. 书写sql语句&#xff0c;点击绿色三角运行

python执行sql 语句

python执行sql 语句 数据etl 过程中会涉及到调度&#xff0c;也就是每天要定时执行的任务&#xff0c;这些任务执行过程中其实是通过底层的脚本代码来进行数据的清洗转换等处理的。而脚本代码中肯定会涉及到调用sql 语句的情况&#xff0c;最近项目正好用到python 脚本调用sql…

通过Navicat 写SQL语句

具体步骤&#xff1a; 1、首先打开要写SQL语句的数据库连接 2、然后点击菜单中的查询&#xff08;query&#xff09; 3、然后点击新建查询 4、然后输入SQL语句&#xff0c;点击运行 &#xff0c;查询到的数据在底部

mysql修改数据sql语句_sql语句修改数据

sql语句修改数据 SQL 中,可以使用 UPDATE 语句来修改、更新一个或多个表的数据。 语法格式为:UPDATE SET 字段 1=值 1 [,字段 2=值 2… ] [WHERE 子句 ] [ORDER BY 子句] [LIMIT 子句] 语法说明如下::用于指定要更新的表名称。 SET 子句:用于指定表中要修改的列名及其列值…

SQL语句常用命令

一、表设计 1、创建表 create table 表名 (字段 字段类型);2、复制表结构及数据 create table 新表 as select * from 旧表3、复制表结构不需要数据 create table 新表 as select * from 旧表 where 2<>24、查看表结构 desc 表名5、复制表数据 insert into 目标表 s…

【180609】经典SQL语句大全(CHM)

收集我们在平时使用SQL时的一些语法语句汇集&#xff0c;比如创建、备份、删除数据库的SQL脚本&#xff0c;这些当然是比较简了&#xff0c;还有复杂点的像备份、创建索引、复合SQL语句、创建视图、高级运算查询、EXCEPT 运算符、INTERSECT 运算符、使用外连接、SQL分组、复制或…

SQL语句大全实例

SQL语句实例 表操作 例 1 对于表的教学管理数据库中的表 STUDENTS &#xff0c;可以定义如下&#xff1a; CREATE TABLE STUDENTS (SNO NUMERIC (6, 0) NOT NULL SNAME CHAR (8) NOT NULL AGE NUMERIC(3,0) SEX CHAR(2) BPLACE CHAR(20) PRIMARY KEY(SNO…

数据库常用的sql语句大全--sql

前言 本片博客使用mysql数据库进行数据操作,使用Navicat for mysql 这个IDE进行可视化操作。每个SQL语句都是亲身实验验证的,并且经过自己的思考的。能够保证sql语句的可运行性。 sql语句的命令不区分大小写,但储存的数据是区分大小写的。在这里我们统一使用英文小写进行命…