application对象
什么是application对象?
( )当Web服务器启动时 Web服务器会自动创建一个application对象 application对象一旦创建 它将一直存在 直到Web服务器关闭
一个Web服务器通常有多个Web服务目录(网站) 当Web服务器启动时 它自动为每个Web服务目录都创建一个application对象 这些application对象各自独立 而且和Web服务目录一一对应
访问同一个网站的客户都共享一个application对象 因此 application对象可以实现多客户间的数据共享
访问不同网站的客户 对应的application对象不同
( )application对象的生命周期 从Web服务器启动 直到Web服务器关闭
注意 一个Web应用程序启动后 将会自动创建一个application对象 而且在整个应用程序的运行过程中只有一个application对象 也即所有访问该网站的客户都共享一个application对象
( )application对象的作用范围 application对象是一个应用程序级的对象 它作用于当前Web应用程序 也即作用于当前网站 所有访问当前网站的客户都共享一个application对象
具体来说 不管哪个客户来访问网站A 也不管客户访问网站A下哪个页面文件 都可以对网站A的application对象进行 *** 作 因为 所有访问网站A的客户都共用一个application对象
因此 当在application对象中存储数据后 所有访问网站A的客户都能够对其进行访问 实现了多客户之间的数据共享
( )application对象的基类是 javax servlet ServletContext类
注意 有些Web服务器不直接支持使用application对象 必须用ServletContext类来声明application对象 再调用getServletContext()方法来获取当前页面的application对象
( )ServletContext类 用于表示应用程序的上下文
一个ServletContext类的对象表示一个Web应用程序的上下文
具体来说 在Web服务器中 提供了一个Web应用程序的运行时环境 专门负责Web应用程序的部署 编译 运行以及生命周期的管理 通过ServletContext类 可以获取Web应用程序的运行时环境信息
常识 JSP引擎 Servlet引擎 JSP容器和Servlet容器 都是指Web服务器 Web服务器用于管理所有Web应用程序
( )application对象的常用方法 如下所示
方法名 描述 StringgetAttribute(Stringname) 根据属性名称获取属性值 EnumerationgetAttributeNames() 获取所有的属性名称 voidsetAttribute(Stringname Objectobject) 设置属性 指定属性名称和属性值 voidremoveAttribute(Stringname) 根据属性名称删除对应的属性 ServletContextgetContext(Stringuripath) 获取指定URL的ServletContext对象 StringgetContextPath() 获取当前Web应用程序的根目录 StringgetInitParameter(Stringname) 根据初始化参数名称 获取初始化参数值 intgetMajorVersion() 获取ServletAPI的主版本号 intgetMinorVersion() 获取ServletAPI的次版本号 StringgetMimeType(Stringfile) 获取指定文件的MIME类型 StringgetServletInfo() 获取当前Web服务器的版本信息 StringgetServletContextName() 获取当前Web应用程序的名称 voidlog(Stringmessage) 将信息写入日志文件中使用application对象存储数据
( )设置application对象的属性和获取application对象的属性
测试代码
TestApplication jsp
<%@pagelanguage=&# ;java&# ;contentType=&# ;text/;charset=GBK&# ;%>
<%request setCharacterEncoding(&# ;GBK&# ;);%>
<>
<body>
<formname=&# ;form &# ;action=&# ; method=&# ;post&# ;>
用户名
<inputtype=&# ;text&# ;name=&# ;username&# ;value=&# ; >
<br>
密码
<inputtype=&# ;password&# ;name=&# ;pwd&# ;value=&# ; >
<br>
<inputtype=&# ;submit&# ;name=&# ;btSubmit&# ;value=&# ;提交&# ;>
</form>
<%
application setAttribute(&# ;username&# ; request getParameter(&# ;username&# ;));
application setAttribute(&# ;pwd&# ; request getParameter(&# ;pwd&# ;));
%>
</body>
</>
测试代码
TestCommon jsp
在TestCommon jsp页面中 通过application对象获取属性 注意TestApplication jsp和TestCommon jsp这两个页面之间没有任何关联 只要通过application对象设置了属性 那么就可以在任何页面 通过application对象获取属性或者删除属性
<%@pagelanguage=&# ;java&# ;contentType=&# ;text/;charset=GBK&# ;%>
<%request setCharacterEncoding(&# ;GBK&# ;);%>
<>
<body>
用户名 <%=application getAttribute(&# ;username&# ;)%><br>
密码 <%=application getAttribute(&# ;pwd&# ;)%><br>
</body>
</>
( )删除application对象的属性
测试代码
TestCommon jsp
在TestCommon jsp页面中 删除application对象的属性
<%@pagelanguage=&# ;java&# ;contentType=&# ;text/;charset=GBK&# ;%>
<%request setCharacterEncoding(&# ;GBK&# ;);%>
<>
<body>
<%&# ;删除属性&# ;%>
<%
application removeAttribute(&# ;username&# ;);
application removeAttribute(&# ;pwd&# ;);
%>
用户名 <%=application getAttribute(&# ;username&# ;)%><br>
密码 <%=application getAttribute(&# ;pwd&# ;)%><br>
</body>
</>
使用application对象实现网站计数器
测试代码
TestApplication jsp
<%@pagelanguage=&# ;java&# ;contentType=&# ;text/;charset=GBK&# ;%>
<%@pageimport=&# ;java util &# ;%>
<%request setCharacterEncoding(&# ;GBK&# ;);%>
<>
<body>
<%!
ServletContextapplication;
synchronizedvoidcountPeople(){
application=getServletContext();
Integernumber=(Integer)application getAttribute(&# ;number&# ;);
if(number==null){
number=newInteger( );
application setAttribute(&# ;number&# ; number);
}else{
number=newInteger(number intValue()+ );
application setAttribute(&# ;number&# ; number);
}
}
%>
<%
if(session isNew()){
countPeople();
}
intpersonCount=((Integer)application getAttribute(&# ;number&# ;)) intValue();
%>
<p>欢迎访问本网站 您是第<%=personCount%>个访问用户!
</body>
</>
使用application对象获取初始化参数
( )一般来说 在web xml文件中 设置初始化参数有如下两种方式
n设置系统范围内的初始化参数
n针对单个Servlet文件或JSP文件设置初始化参数
对于系统范围内的初始化参数 可通过ServletContext接口的getInitParameter(Stringname)方法 根据指定的参数名 获取对应的参数值
对于针对单个Servlet文件或JSP文件设置初始化参数 可通过ServletConfig接口的getInitParameter(Stringname)方法 根据指定的参数名 获取对应的参数值 ( )如何设置系统范围内的初始化参数
在web xml文件中 可利用context param元素来设置系统范围内的初始化参数 context param元素应该包含param name param value以及可选的description子元素 如下所示 <context param> <param name>support email</param name> <param value></param value> </context param>
web xml文件的示例
<xmlversion=&# ; &# ;encoding=&# ;UTF &# ;>
<web appversion=&# ; &# ;
xmlns=&# ;;
xmlns:xsi=&# ;;charset=GBK&# ;%>
<%request setCharacterEncoding(&# ;GBK&# ;);%>
<>
<body>
<%&# ;使用application对象获取系统范围内的初始化参数&# ;%>
<fontcolor=&# ;Red&# ;>使用application对象获取初始化参数 </font>
<br>
<%
StringappName=getServletContext() getInitParameter(&# ;appName&# ;);
StringappVersion=getServletContext() getInitParameter(&# ;appVersion&# ;);
%>
应用程序的名称 <%=appName%><br>
应用程序的版本 <%=appVersion%>
</body>
</>
修改web xml文件 添加蓝色字体部分
<xmlversion=&# ; &# ;encoding=&# ;UTF &# ;>
<web appversion=&# ; &# ;
xmlns=&# ;;
xmlns:xsi=&# ;;charset=GBK&# ;
pageEncoding=&# ;GBK&# ;%>
<%request setCharacterEncoding(&# ;GBK&# ;);%>
<>
<body>
<h >使用application对象获取Web应用程序的环境信息</h >
<p>
<fontcolor=&# ;Red&# ;>获取当前Web服务器的版本信息 </font><%=application getServerInfo()%><br>
<fontcolor=&# ;Red&# ;>获取ServletAPI的主版本号 </font><%=application getMajorVersion()%><br>
<fontcolor=&# ;Red&# ;>获取ServletAPI的次版本号 </font><%=application getMinorVersion()%>
<p>
<fontcolor=&# ;Red&# ;>获得指定URL的ServletContext对象 </font>
<%
ServletContextsc=application getContext(&# ;/ch /TestApplication jsp&# ;);
out println(sc getServerInfo());
%>
<p>
<%&# ;需要在web xml设置display name元素&# ;%>
<fontcolor=&# ;Red&# ;>获取当前Web应用程序的名称 </font><%=application getServletContextName()%>
<p>
<fontcolor=&# ;Red&# ;>获取当前Web应用程序的上下文路径 </font><%=application getContextPath()%>
</body>
</>
测试结果
session对象和application对象的比较
( )两者的作用范围不同
session对象是用户级的对象 而application对象是应用程序级的对象
一个用户一个session对象 每个用户的session对象不同 在用户所访问网站的多个页面之间共享同一个session对象
一个Web应用程序一个application对象 每个Web应用程序的application对象不同 但一个Web应用程序的多个用户之间共享同一个application对象
在同一个网站下
n每个用户的session对象不同
n所用用户的application对象相同
在不同网站下
n每个用户的session对象不同
n每个用户的application对象不同
( )两者的生命周期不同
session对象的生命周期 用户首次访问网站创建 用户离开该网站(不一定要关闭浏览器)消亡
application对象的生命周期 启动Web服务器创建 关闭Web服务器销毁
lishixinzhi/Article/program/Java/hx/201404/30479
JSP是一门基于JAVA语言的一种web应用开发技术,由JSP制作的动态网站具有非常好的跨平台性;所以对于做web开发的程序员来说,精到的掌握JSP的使用是极其重要的;在网络通信中,最常见的模式是B/S通信模式,即用户把需要获取的信息用浏览器向某个服务器发出请求,服务器使用web服务软件将用户的请求信息处理后发送给用户;所以使用jsp技术发送的请求就需要服务器端有相应的jsp引擎(即web服务软件)进行处理,jsp引擎有很多,下面使用有sun公司开发的开源的tomcat服务器来进行讲述;所以下面从tomcat服务器的安装开始讲起分为:一、tomcat的安装与配置;二、测试jsp页面;三、设置web服务目录三个方面来进行说明。
一:tomcat的安装与配置
这里默认jdk已经安装成功且环境变量已经设置为如下值:变量名Java_Home=E:\jdk180_45变量名Classpath=E:\jdk180_45\jre\lib\rtjar;,;变量名Path=E:\JDK180_45\BIN
安装tomcat有两种方式(一)apache-tomcat-6013zip文件的安装;(二)apache-tomcat-6013exe文件的安装下面只介绍第一种方式;
将apache-tomcat-6013zip文件解压到磁盘的某个分区下,如解压到E:\,将出现下面的目录结构
接下来双击bin目录下的startupbat文件,将会出现如下MS-DOS窗口表明已经启动了tomcat服务器,若不关闭该窗口该服务器将一直工作下去;
若双击后没有出现该界面或者只是闪烁了一下,一般是环境变量没有设置好;然后在浏览器的地址栏里输入>
你得先明白三个含义,/表示当前目录,/表示父目录,/代表根目录。其中用了/代表的就是用绝对路径了。其它两个是相对路径,就是相对于你要引用的页面的路径。看你的目录结构,两种都是对的。
java有个特性是跨平台性,所以其获取项目根目录的方法是一样的。
requestgetContextPath()方法就是是得到项目的名字,如果项目为根目录,则得到一个"",即空的字条串。如果项目为abc,<%=requestgetContextPath()%> 将得到abc,服务器端的路径则会自动加上,<a href="XXXXjsp"> 是指当前路径下的这个xxxjsp页面,有时候也可以在head里设置html:base来解决路径的问题,不多用的最多的还是requestgetContextPath。
站点根目录就是指上传站点的目录,将网站源码上传到站点根目录后,就可以通过主机绑定的域名访问站点打开网站程序。
这里我们介绍下常见的不同类型虚拟主机的根目录位置
1、JSP虚拟主机(使用EasyPanel面板)站点根目录位于webapps下的ROOT
2、Linux虚拟主机(使用cpanel面板)站点根目录位于public_html
3、windows虚拟主机(使用plesk)站点根目录位于htdocs
4、linux虚拟主机(使用DA面板)站点根目录位于public_html
参考来源:bluehost主机使用指南
JSP页面点击超链接d出文件下载,代码如下:
<%String path = requestgetContextPath();
String basePath = requestgetScheme()+"://"+requestgetServerName()+":"+requestgetServerPort()+path+"/";
%>
//然后
<a href ="<%= basePath %>/upload/aadoc }" target="_blank">下 载</a>
注:<%= basePath %>获取部署JSP项目的根目录,/upload/aadoc/是根目录>upload>aadoc文件,根据需求修改即可。
:EL表达式和Ognl表达式,取数据的区别 111、一般的EL表达式:${}查询变量的顺序为: 1,当前域,即作用域 2,page , request , session , application(从小到大,没有返回null ${}可以写在jsp页面的任何位置,
当一个url过来时,如:>
代码如下:
<% String basepath=requestgetScheme()+"://"+requestgetServerName()+":"+requestgetServerPort() ;
String Path = requestgetScheme()+"://"+requestgetServerName()+":"+requestgetServerPort()+path+"/"+requestgetContextPath()+"/";
String uri=requestgetRequestURI();
uri=urisubstring(urilastIndexOf("/")+1); //获得是最后的hellojsp
%>
(上例中,Path路径就是图中的)
说明:
1requestgetContextPath() 返回站点的根目录,如:‘’/demo‘’
2requestgetRealpath("/")得到的是实际的物理路径,也就是你的项目所在服务器中的路径
3requestgetScheme() 等到的是协议名称,默认是>
4requestgetServerName() 得到的是在服务器的配置文件中配置的服务器名称 比如:localhost baiducom 等等
5requestgetServerPort() 得到的是服务器的配置文件中配置的端口号 比如 8080等等
OK,满意的话请好评!O(∩_∩)O~
以上就是关于介绍一下JSP中application的用法全部的内容,包括:介绍一下JSP中application的用法、jsp的环境配置与简单jsp页面测试、JavaWeb里怎么表示根目录附图等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)