`
MoonMonster
  • 浏览: 35871 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

jsp---隐式对象简单介绍

阅读更多

什么是隐式对象?

JSP的隐式对象是指在JSP页面系统中已经默认内置的Java对象,这些对象不需要开发人员显式声明即可使用。

 

1、application:

1.1 application对象有效的范围是从web应用程序服务器一开始执行,到web服务器结束服务为止。

1.2 对于一个网站中所有的JSP页面,application对象只有一个。它们操作的是同一个application对象。

1.3 application是一个全局变量,所有访问同一服务器的客户都可访问application对象。

使用下面一个小例子来证明,在开启了服务器后,在不同的浏览器中访问,可以看到计数器是不断上升的,而不会从1开始。

        <%
	int count = 0;
	if(application.getAttribute("count") == null){
		count = 1;
		application.setAttribute("count", count);
	}else{
		//值得注意的是,如果存进去的是int值,那么返回的也将是int值,而不是String类型的值
		count = (Integer)(application.getAttribute("count"));
		count ++;
		application.setAttribute("count", count);
	}
	
	out.print("你是第"+count+"位访客...");
	%>

 

1.4 获取服务器系统相关信息

application对象负责提供应用程序在服务器中运行时的一些全局信息,因此我们可以利用application来获取一些系统相关信息。

<%
	out.print("服务器信息: " + application.getServerInfo()+"<br/>");
	out.print("Java Servlet API 主版本号: "
			+ application.getMajorVersion()+"<br/>");
	out.print("Java Servlet API 次版本号: "+application.getMinorVersion()+"<br/>");
	out.print("本网页的真实路径:"+application.getRealPath("index1.jsp")+"<br/>");
	%>

 

 

将得到输出结果:

服务器信息: Apache Tomcat/7.0.55

Java Servlet API 主版本号: 3

Java Servlet API 次版本号: 0本网页的真实路径:E:\Code\Java-Newer\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\jsp_ysdx\index1.jsp

 

2、config

2.1 config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数及服务器的有关信息。

2.2 主要是对web.xml的数据进行读取。实际上是通过getServletContext()方法获得application对象,再根据application对象获得。

可以直接在网页中获得web.xml中设置的数据

<servlet>
		<servlet-name>Config</servlet-name>
		<!-- 此处要设置为将使用该数据的网页名 -->
		<jsp-file>/index1.jsp</jsp-file>
		<init-param>
			<param-name>username</param-name>
			<param-value>Chalmers</param-value>
		</init-param>
		<init-param>
			<param-name>password</param-name>
			<param-value>123456</param-value>
		</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>Config</servlet-name>
		<url-pattern>/servlet/config</url-pattern>
	</servlet-mapping>

 

 

out.print("username: " + config.getInitParameter("username")
			+ "<br/>");
	out.print("password:" + config.getInitParameter("password"));

 

输出结果为:

username: Chalmers

password:123456

 

3、exception

作用如名所示,用来处理页面异常的。

3.1 exception对象常用方法如下

  (1)getMessage()方法

  (2)toString()方法

  (3)printStackTrace()方法

  (4)getLocalizedMessage()方法

  (5)fillStackTrace()方法

3.2 用法:

注意:exception对象只能在定义了<%@ page isErrorPage="true"%>中使用,否则没有该对象

testException.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
	<%@ page errorPage="handleException.jsp"%>

	<%
		int a = 0;
		int b = 10 / a;
	%>

 

 

handleException.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
	<%@ page isErrorPage="true"%>

	<%
		out.print(exception.getMessage() + "<br/>");
		exception.printStackTrace();
	%>

 

 

4、out

4.1 out对象主要用于向浏览器端输出数据

4.2 out实际上是带有缓冲特性的PrinterWriter,可以称之为JspWriter。缓冲区容量是可以设置的,甚至也可以关闭,

只要通过page指令的buffer属性就可以达到此目的。

4.3 JSP文件代码中的文件内容会自动生成out.print()或者out.println()输出。

 

5、page

5.1 page对象指代JSP页面本身、代表了正在运行的由JSP文件产生的类对象。

5.2 page对象的常用方法如下。

  (1)getClass()方法

  (2)equals()方法

  (3)clone()方法

  实际上就是从Object中继承的方法

 

6、request

6.1 请求有效:请求页面A,并向A中传递某些参数。

6.2 请求有效对象在处理结束时就会失效。

6.3 request对象可以获取哪些信息

6.3.1 建立HTML表单

   <form  action=“action” method=“method” name=“name”>。。。</form>

6.3.2 用REQUEST对象处理

   JSP页面将数据存放在request对象里,并将该请求传递到下一个页面,下一个页面访问request对象,处理上一个JSP页面传递过来的数据。

6.3.3 通过超链接来传递

   <a   href="aaa.jsp?aa=aa&bb=bb&cc=cc">aaa</a>

6.3.4 通过jsp动作标签param来进行传递

6.4 传递一组数据

//发送一组数据到receive.jsp
<form action="receive.jsp" method="post">
  跑步<input type="checkbox" name="habits" value="running" /><br /> 
  阅读<input type="checkbox" name="habits" value="reading" /><br />
  游戏<input type="checkbox" name="habits" value="game" /><br />
<input type="submit" value="提交" />
</form>

 

//接收

//参数要一致

String[] habits = request.getParameterValues("habits");
for(String s : habits){
out.print(s+"<br/>");
}

 

 

7、response

7.1 response对象负责将服务器端的数据发送回浏览器的客户端。主要用于向客户端发送数据,如Cookie、HTTP文件头等信息。

7.2 利用response实现自动刷新

7.2.1 刷新当前界面

response.setHeader("refresh", "3");
out.print(new Date().toString());

 

结果:每隔3秒刷新一次界面,显示当前时间

7.2.2 跳转界面

<%
out.print("3秒后刷新...");
response.setHeader("refresh", "3;url=count.jsp");
%>

 

7.3 添加Cookie

<%
		Cookie cookie = new Cookie("username", "Chalmers");
		//设置保存时间为60*60秒
		cookie.setMaxAge(60 * 60);
		response.addCookie(cookie);
	%>

 

 

<%
		Cookie[] cookies = request.getCookies();
		for (Cookie c : cookies) {
			if (c.getName().equals("username")) {
				out.print(c.getValue());

				return;
			}
		}
		out.print("没有...");
	%>

 

 

8、pageContext

8.1 pageContext对象能够存取其他隐含对象。

8.2 当隐含对象本身也支持属性时,pageContext对象也提供存取那些属性的方法。

 

9、session

9.1 session对象用于存储一个用户的会话状态,也就是说,session对象是对某个用户的会话过程中的信息存储。

9.2 当客户端访问服务器时,会在服务器中搜索对应的sessionID,如果没有找到,那么便会创建一个,如果找到了便直接使用。

所以在session 的有效时间内,每个客户端只有一个sessionID。

 

 

10、pageContext,request、session、application传递参数的使用范围:

10.1 设置参数值

<%
pageContext.setAttribute("pageContext", "true");
request.setAttribute("request", "true");
session.setAttribute("session", "true");
application.setAttribute("application", "true");
%>

 

10.2 当前页面中,所有的对象都可以通过getAttribute获得值

10.2 在request的forward方法传递中,pageContext接收数据失败,所以pageContext只能在定义页面中使用。

10.3 request的include方法同上

10.4 如果使用response的sendRedirect方法,那么request也将接收失败。原因:客户端向服务端请求数据,服务端在向客户端发送数据

完成后,该request便已经结束,客户端访问url时已经是一个新的request了,所以request的使用范围是一个request内。

10.5 在session的有效时间内,数据都是存在的,特别强调的是,关闭浏览器不会清除掉session。

10.6 而application只有在关闭服务端后才会被清除,可见上面的application介绍。

10.7 总结:范围大小: application>session>request>pageContext

 

 

11.Cookie与Session的区别

Cookie是存在浏览器中的

Session是存在服务器中的

 

Cookie的安全性要低于Session

 

Cookie可能会被用户禁用

 

Session的数据是存在服务器内存中,关掉浏览器,会清空Session

临时性Cookie存在浏览器的缓存中,关掉浏览器,会清空

永久性Cookie是存在临时文件中,到达有效期前,一直存在

3
3
分享到:
评论

相关推荐

    JSP中隐式对象用法实例

    主要介绍了JSP中隐式对象用法,以实例形式分析了JSP隐式对象的定义及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    jsp表达式语言

    jsp表达式语言 是一种简单的语言,基于可用的命名空间(PageContext 属性)、嵌套属性和对集合、操作符(算术型、关系型和逻辑型)的访问符、映射到 Java 类中静态方法的可扩展函数以及一组隐式对象。

    Servlet与JSP核心编程第2版

    16.8 引用隐式对象 16.9 表达式语言中运算符的应用 16.10 表达式的条件求值 16.11 表达式语言其他功能概览 第ⅲ部分 支持技术 第17章 数据库访问:jdbc 17.1 jdbc应用概述 17.2 基本jdbc示例 17.3 用...

    EL表达式的详细使用

    此外,还提供几个隐式对象,允许对以下对象进行简易访问: 术语 定义 param 将请求参数名称映射到单个字符串参数值(通过调用 ServletRequest.getParameter (String name) 获得)。getParameter (String) 方法...

    JSP EL表达式详细介绍

    它是一种简单的语言,基于可用的命名空间(PageContext 属性)、嵌套属性和对集合、操作符(算术型、关系型和逻辑型)的访问符、映射到 Java 类中静态方法的可扩展函数以及一组隐式对象。 EL 提供了在 JSP 脚本编制...

    书本源码--JavaWeb 实战开发完全学习手册

    《完全学习手册:Java Web实战开发完全学习手册》共分15章,全面系统地介绍了JavaWeb相关的知识,主要包括JavaWeb开发基础、HTML与CSS网页开发基础、JavaScript基础、JSP基本语法、JSP隐式对象、JDBC技术应用、...

    EL表达式入门必看篇(推荐)

    它是一种简单的语言,基于可用的命名空间(PageContext 属性)、嵌套属性和对集合、操作符(算术型、关系型和逻辑型)的访问符、映射到 Java 类中静态方法的可扩展函数以及一组隐式对象。 EL 提供了在 JSP 脚本编制...

    EL表达式 (详解)

    2--EL表达式可操作常量 变量 和隐式对象. 最常用的 隐式对象有${param}和${paramValues}. ${param}表示返回请求参数中单个字符串的值. ${paramValues}表示返回请求参数的一组 值.pageScope表示页面范围的变量....

    AIC的Java课程1-6章

    第12章 IO与串行化 2课时  了解Java IO 中类的层次结构,介绍Java IO采用的装饰器模式。  学会使用File,FileReader,BufferedReader,FileWriter,BufferedWriter,PrintWriter等类输入...

    J2EE应用开发详解

    76 5.5.2 JavaBean动作 78 5.6 隐式对象 78 5.6.1 request对象 78 5.6.2 response对象 78 5.6.3 application对象 78 5.6.4 out对象 79 5.6.5 page对象 79 5.6.6 session对象 79 5.6.7 exception对象 80 5.6.8 ...

    J2EE中文版指南 CHM格式 带全文检索

    隐式对象 181 特定应用程序对象 181 共享对象 182 JSP scripting 元素 182 声明 182 脚本(scriptlets) 183 表达式 184 在JSP页面中包含内容 185 转换控制到另一网络组件 185 参数元素 185 包含Java小程序(applet) ...

    java EL 表达式

    表达式语言的灵感来自于 ...它是一种简单的语言,基于可用的命名空间(PageContext 属性)、嵌套属性和对集合、操作符(算术型、关系型和逻辑型)的访问符、映射到 Java 类中静态方法的可扩展函数以及一组隐式对象。

    整理后java开发全套达内学习笔记(含练习)

    自动类型提升又称作隐式类型转换。 强制类型转换:int ti; (byte) ti ; 强制转换,丢弃高位 宣告变量名称的同时,加上“final”关键词来限定,这个变量一但指定了值,就不可以再改变它的值 如:final int n1=...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    20.2 Velocity隐式对象 281 20.3 标签 281 20.4 Velocity示例 282 20.5 小结 284 第21章 FreeMarker 285 21.1 概述 285 21.2 FreeMarker标签 286 21.3 示例 287 21.4 小结 289 第22章 XSLT结果类型 290 22.1 概述 ...

    深入浅出Struts2(附源码)

    20.2 Velocity隐式对象 281 20.3 标签 281 20.4 Velocity示例 282 20.5 小结 284 第21章 FreeMarker 285 21.1 概述 285 21.2 FreeMarker标签 286 21.3 示例 287 21.4 小结 289 第22章 XSLT结果类型 290 ...

    Java™ Servlet 规范.

    目录 前言 ............................... 3 其他资料 ......................................................................................................................................................

    Servlet3.1规范(最终版) PDF

    Servlet3.1规范(最终版) JavaTM Servlet 规范 版本 3.1(最终版) Shing Wai Chan Rajiv Mordani [作者] 穆茂强 张开涛 [译者] 2012年6月翻译 2013年7月修订 目录 前言 ..................................

Global site tag (gtag.js) - Google Analytics