JSP内置对象(下)
JSP中共有9大内置对象:
- out对象
- requset对象
- response对象
- session对象
- pageContext对象
- application对象
- config对象
- page对象
- exception对象
JSP内置对象(上):http://wxmimperio.coding.io/?p=280
5. pageContext对象
pageContext对象被封装成javax.servlet.jsp.pageContext接口,他为JSP页面包装页面的上下文,管理对属于JSP中特殊可见部分中已命名对象的访问。它的创建和初始化都是由容器完成的,pageContext对象可以访问到本页面所在的session,也可以去本页面 所在的application的某一属性,pageContext对象相当于页面中所有功能的集成。JSP页面里可以直接使用pageContext对象的句柄,pageContext对象的getXXX()、setXXX()和findXXX()方法可以用来根据不同的对象范围实现对这些对象的管理。
常用的方法:
- forward(java.lang,String relativeUrlPath):把页面重定向到另外一个页面或者Servlet组件上
- getRequset():返回当前的requset对象
- getResponse():返回当前的response对象
- getServletConfig():返回当前页面的ServletConfig对象
- getServletContext():返回ServletContext对象,这个对象对所有的页面都是共享的
- getSession():返回当前页面的Session对象
- setAttribute():用来设置默认页面范围,或特定对象范围之中的已命名对象
- getAttribute(java.lang.String name[,int scope]):scope参数是可选的,用来检索一个特定的已命名的对象范围,并且还可以通过调用getAttributeNamesInScope()方法,检索对某个特定范围的每个属性String字符串名称的枚举
代码:
pageContextForm.jsp
- <form method="post" action="pageContextObject.jsp">
- <table>
- <tr>
- <td>name:</td>
- <td><input type="text" name="name"></td>
- </tr>
- <tr colspan="2">
- <td><input type="submit" value="提交"></td>
- </tr>
- </table>
- </form>
pageContextObject.jsp
- <%
- //通过pageContext.getRequest方法来获取request对象
- ServletRequest req = pageContext.getRequest();
- String name = req.getParameter("name");
- out.println("name="+name+"<br>");
- //pageContext.getServletConfig方法
- out.println("ServletConfig="+ pageContext.getServletConfig());
- //pageContext.setAttribute方法
- pageContext.setAttribute("username",name);
- //pageContext.getServletContext方法
- pageContext.getServletContext().setAttribute("sharevalue","多个页面共享");
- //pageContext.getSession方法
- pageContext.getSession().setAttribute("sessionvalue","只有在session中才是共享的");
- out.println("<br>pageContext.getAttributte('username')=");
- //pageContext.getAttribute方法
- out.println(pageContext.getAttribute("username"));
- /*//pageContext.forward方法
- pageContext.forward("pageContext2.jsp");*/
- %>
- <html>
- <head>
- <title>pageContext内置对象</title>
- </head>
- <body>
- <a href="pageContext2.jsp">NEXT--></a>
- </body>
- </html>
pageContext2.jsp
- <%
- out.println("<br>pageContext.getAttribute('username')=");
- out.println(pageContext.getAttribute("username"));
- out.println("<br>pageContext.getSession.getAttribute('sessionvalue')=");
- out.println(pageContext.getSession().getAttribute("sessionvalue"));
- out.println("<br>pageContext.getServletContext.getAttribute('sharevalue')=");
- out.println(pageContext.getServletContext().getAttribute("sharevalue"));
- %>
PS:
- pageContext属性默认在当前页面时共享的
- session中的属性在当前session中是共享的
- ServletContext对象中的属性对所有页面都是共享的
6.application对象
application对象为多个应用程序保存信息,对于一个容器而言,每个用户都共享使用一个application对象,在任何地方对application对象属性的操作,都将影响到其他用户对此的访问,这和session对象是不同的。启动服务器后就会自动创建application对象,这个对象会一直保存,直到服务器关闭,application对象是ServletContext类的一个实例。
常用的方法:
- getAttributeNames():返回所有的application对象的属性的名字,其结果是一个枚举类型的实例
- getServletInfo():返回Servlet编译器的版本信息
- getAttribute(String name):返回由name指定的名字的application对象的属性值
- setAttribution(String name,Object object):设置由name指定名字的application对象的属性值object
代码:(简单计数器)
applicationCount.jsp
- <%
- //计数器设置
- int count = 0;
- /*counter_name为计数器的名字
- 对于不同的页面,使用不同的计数器名字,这样就可以为不同的页面进行计数*/
- String counter_name = request.getParameter("counter_name");
- try {
- //application.getAttribute方法
- count = Integer.parseInt((application.getAttribute(counter_name).toString()));
- } catch (Exception e) {
- }
- out.println("此页面访问了"+count+"次");
- count++;
- //application.setAttribute方法
- application.setAttribute(counter_name,new Integer(count));
- application.setAttribute("username","admin");
- application.setAttribute("password","123456");
- %>
applicationObject.jsp
- <body>
- <%--通过include指令把appicationCount页面代码引入--%>
- <jsp:include page="appicationCount.jsp">
- <jsp:param name="counter_name" value="applicationObject"></jsp:param>
- </jsp:include>
- <br>从application获得所有属性=
- <%
- Enumeration e = application.getAttributeNames();
- while (e.hasMoreElements()) {
- out.println(e.nextElement()+" ");
- }
- %>
- <br>Servlet编译器的版本信息:<%=getServletInfo()%>
- </body>
7.config对象
config对象被封装成javax.servlet.ServletConfig接口,他表示Servlet的配置,在一个Servlet初始化时,jsp引擎向他传递信息用的,此信息包括Servlet初始化时所要用到的参数以及服务器的有关信息。
常用的方法:
- getServletContext():返回执行者的Servlet上下文
- getServletName():返回Servlet的名字
- getInitParameter(String name):返回名字为name的初始参数的值
- getInitParameterNames():返回这个JSP的所有的初始参数的名字
代码:(上面application对象写的计数器有个缺陷,就是当服务器重启后,计数器就会从0重新开始,通过在服务器设置计数的初始值来解决)
configObject.jsp
- <%
- int org = 0;
- int count = 0;
- try {
- //config.getInitParameter方法
- org = Integer.parseInt(config.getInitParameter("counter"));
- } catch (Exception e) {
- out.println("org:" + e);
- }
- try {
- count = Integer.parseInt((application.getAttribute("config_counter").toString()));
- } catch (Exception e) {
- out.println("config_counter"+e);
- }
- if(count<org) count = org;
- out.println("<br>此页面已经访问了"+count+"次<br>");
- count++;
- application.setAttribute("config_counter",new Integer(count));
- %>
- Servlet的名字是:<%=config.getServletName()%><br>
- Servlet的上下文是:<%=config.getServletContext()%><br>
- 这个JSP的所有的初始参数的名字=
- <%
- Enumeration e = config.getInitParameterNames();
- while (e.hasMoreElements()) {
- out.println(e.nextElement()+" ");
- }
- %>
web.xml配置文件
- <servlet>
- <servlet-name>config_counter</servlet-name>
- <jsp-file>/InnerObject/configObject.jsp</jsp-file>
- <init-param>
- <param-name>counter</param-name>
- <param-value>1000</param-value>
- </init-param>
- </servlet>
- <servlet-mapping>
- <servlet-name>config_counter</servlet-name>
- <url-pattern>/InnerObject/config_counter</url-pattern>
- </servlet-mapping>
PS:
通过configObject.jsp直接访问得不到初始化的counter参数,计数从0开始;而通过servlet配置地址config_counter访问计数直接从初始的1000开始,原因是当通过config_counter访问时,他是作为一个Servlet组件来运行,而直接通过JSP访问不同。
8.page对象
page对象是java.lang.Object类的一个实例,类似于java中的this对象,他指的是JSP页面本身,通过这个可以对他进行访问,只有在JSP页面的范围之内才是合法的。
常用的方法:
- hashCode():返回此Object的hash码
- equals(Object object):判断两个Object对象是否相等
- toString():把Object对象转换为String对象
代码:
- <body>
- 当前页面的hash码:<%=page.hashCode()%><br>
- 当前页面的字符串描述:<%=page.toString()%><br>
- page和this的比较:<%=page.equals(this)%><br>
- </body>
9.exception对象
exception对象是java.lang.Throwable类的一个实例,他指的是运行时的异常,也就是被调用的错误页面的结果,只有在错误页面(isErrorPage=true指令)中才可以使用。
常用的方法:
- getMessage():返回异常信息的描述
- toString():关于异常信息的简短描述
- printStackTrace():显示异常及其栈的轨迹
代码:
exceptionObject.jsp
- <%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="exception.jsp" %>
- <html>
- <head>
- <title></title>
- </head>
- <body>
- <%
- //异常
- System.out.println(100/0);
- %>
- </body>
- </html>
exception.jsp
- <%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
- <html>
- <head>
- <title></title>
- </head>
- <body>
- 返回异常信息的描述:<%=exception.getMessage()%><br>
- 关于异常信息的简短描述:<%=exception.toString()%><br>
- 显示异常及其栈的轨迹:<%exception.printStackTrace();%><br>
- </body>
- </html>
参考:JSP应用开发详解(第三版)、慕课网
JSP内置对象(下)的更多相关文章
- JAVA遇见HTML——JSP篇(JSP内置对象下)
request.getSession() 网上资料解释: request只能存在于一次访问里 session对象的作用域为一次会话 session长驻在服务器内存里,session有id标识,一个se ...
- Java遇见HTML——JSP篇之JSP内置对象(下)
一.什么是session 1.session表示客户端与服务器的一次会话2.Web中的session指:用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间 ...
- JSP内置对象(下)
session的生命周期 创建 活动 销毁 application对象 Page对象
- JAVA遇见HTML——JSP篇:JSP内置对象(下)
什么是session session表示客户端与服务器的一次会话 Web中的session指的是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间 从上述 ...
- jsp内置对象浅谈
jsp内置对象浅谈 | 浏览:1184 | 更新:2013-12-11 16:01 JSP内置对象:我们在使用JSP进行页面编程时可以直接使用而不需自己创建的一些Web容器已为用户创建好的JSP内置对 ...
- JavaWeb学习----JSP内置对象详解
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- JavaWeb之 JSP:内置对象,EL表达式,JSP标签基础
JSP的内置对象 什么是JSP的内置对象呢? 在JSP页面进行编程的时候,如果我们要使用一些对象,如:HttpSession,ServletConfig,ServletContext这些对象,如果每次 ...
- JSP内置对象(上)
在JSP中为了简化页面的开发提供了一些内置的对象.这些对象不需要由JSP的编写者通过new关键字实例化,他们都由容器实现和管理,在所有的JSP页面中都可以使用内置对象. JSP中共有9大内置对象: o ...
- JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象
Day38 JSP JSP的运行过程具体如下: (1)客户端发出请求,请求访问JSP文件. (2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果 ...
随机推荐
- Keepalived+Nginx+Tomcat配置高可用负载均衡系统示例
前言 此示例为keepalived+nginx+tomcat的基础配置示例,某些特定配置此例中不会出现,在示例中会用到三个虚拟机:两个纯命令行用于模拟服务端配置,一个带桌面环境的用于模拟客户端访问,这 ...
- ubuntu中安装eclipse 分类: android ubuntu linux 学习笔记 2015-07-07 10:19 75人阅读 评论(0) 收藏
上一篇说了安装jdk的事,于是趁热打铁,决定把eclipse也安装了. 下载这一系列就不用说了. 下载完成之后: 然后解压,解压之后文件剪切到/usr/software文件夹中,同时重命名为eclip ...
- struts2 ajax 实现方式
在 struts2 中实现ajax,可以使用struts2-json-plugin扩展,但是返回的json字段必须都是Action中的属性,不可以随意的输出文本. 返回任意的文本有两种方式, 方法一: ...
- VC++文件相关操作的函数封装实现
在开发编译工具中,需要用到文件的相关操作,于是就封装了相关的函数实现: //判断文件是否存在 BOOL FileIsExist(CString strFileName) { CFileFind fin ...
- iOS UIKit:TableView之表格创建(1)
Table View是UITableView类的实例对象,其是使用节(section)来描述信息的一种滚动列表.但与普通的表格不同,tableView只有一行,且只能在垂直方向进行滚动.tableVi ...
- Codeforces Round #310 (Div. 2)--A(简单题)
http://codeforces.com/problemset/problem/556/A 题意:给一个01字符串,把所有相邻的0和1去掉,问还剩下几个0和1. 题解:统计所有的0有多少个,1有多少 ...
- 黑马程序员-IO(二)
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 装饰设计模式: 当想要对已有对象进行功能增强时.可以定义类,将已经有的类传入,基于已经有的功能, ...
- QL查询案例:取得分组 TOP-N
[转]SQL查询案例:取得分组 TOP-N CREATE TABLE TopnTest ( name VARCHAR(10), --姓名 procDate DATETIME, ...
- JavaScript获取网页属性包括宽、高等
function getWindowInfo() {var s = ""; s += " 网页可见区域宽:"+ document.body.clientWidt ...
- 关于Androdi中SQLITE 3采用GBK编码存储,数据库中文乱码问题。
1.最近开发一个项目,用SQLite Expert Personal打开数据库如下图,title会产生乱码,问题. 2.由于SQL lite默认是存储UTF-8格式,后来更改数据库编码类型为ANSI, ...