Jsp九大内置对象和4大作用域
一.在java开发中,jsp提供了9个内置的对象,这些内置对象将由容器为用户进行实例化,用户直接使用。
这9个内置对象分别为:pageContext,request,response,session,
application,config,out,page,exception。
常用的为前面5个
1. page : 代表该页面本身,也就是 Servlet 中的 this ,能用 page 的地方就可以用 this .即Object page=this
2. request : 客户端的请求参数都被封装在该对象里。这是一个常用对象,获取客户端请求参数必须使用该对象。
常用方法:getParameter(String paramName)、getParameterValues(String paramName)、setAttribute(String arrtName,Object attrValue)
getAttribute(StringattrName) 和 setCharacterEncoding(String env)等。
3. response:和request相对应,用于服务器响应客户端请求,向客户端输出信息。javax.servlet.HttpServletResponse接口
4.session : 该对象代表一次会话。当客户端与站点建立连接时,会话开始;当客户端关闭浏览器时,会话结束。常用方法: getAttribute(String
attrName)、 setAttribute(String attrName, Object attrValue) 等。
5.appliction :该实例代表 JSP 所属的 WEB 应用本身,用于 JSP 页面,或者在 Servlet 之间信息交换。 常用方法有 getAttribute( name , value)、
setAttribute( name , value)、getInitParameter( name ) 等。
6.pageContext: 代表 JSP 页面上下文,它相当于页面中所有对象功能的集合,可以访问页面中的共享数据。 常用方法有:getServletContext() 和
getServletConfig() 等
7.out : JSP 页面输出流,用于输出内容,形成 HTML 页面。同时也能管理应用服务器上的输出缓存区,底层:javax.servlet.jsp.jspWriter抽象类
8.config: Jsp页面通过jsp容器初始化时被传递的对象,javax.servlet.ServletConfig.在servlet初始化时,jsp引擎通过config向它传递信息,信息可以是属性名
和属性值匹配的参数,也可以是servletCtext传递的服务器有关信息
9.exception:代表页面中的异常和错误。只有页面是错误处理页面,page 的isErrorPage 属性为 true 时该对象才可以使用。常用方法 getMessage() 、
printStrackTrace()等,它是java.lang.Throwable的一个对象
(下面会给常用的对象一些例子)
二.在jsp开发中,可以保存四种数据保存范围:分别为page,request,session,application。
page范围:只在一个页面中保存数据。javax.servlet.jsp.PageContext(抽象类)
request范围:只在一个请求中保存数据。javax.servlet.http.HttpServletRequest(接口)
session范围:在一个会话范围内保存数据,仅供单个用户使用:javax.servlet.http.HttpSession(接口)
application范围:在整个服务器上保存数据,所有用户共享:javax.servlet.ServletContext(接口)
内置对象的使用例子:
1.page
<%
//设置页面范围数据key->value
pageContext.setAttribute("name","祁高翔");
pageContext.setAttribute("age", 21);
%>
<%
//取值
String name=(String)pageContext.getAttribute("name");
int age=(Integer)pageContext.getAttribute("age");
%>
<font color="blue" size=50px>姓名:<%=name %></font><br/>
<font color="red" size=50px>年龄:<%=age %></font><br/>
2.request
<%
//设置request范围的数据key->value
request.setAttribute("name", "request祁高翔");
request.setAttribute("age",21);
%>
<jsp:forward page="requestTarget.jsp">
<jsp:param value="" name=""/>
</jsp:forward>
请求另外一个页面
<%
String name=(String)request.getAttribute("name");
int age=(Integer)request.getAttribute("age");
%>
<font size=15px color="gray" face="宋体">已经跳转到Target页面</font><br>
<font color="red" size=5px>姓名: <%=name %></font>
<font color="red" size=5px>年龄: <%=age %></font>
3. session,application同request,只是数据保存的作用范围不同
4.response
4.1自动刷新应用
<%
//每隔一秒刷新一次
response.setHeader("refresh","1");
//获取当前时间
Date date=new Date();
%>
系统的当前时间是: <%=date.toLocaleString()%>
4.2页面重定向(不带参数)属于客户端跳转
response.sendRedirect("index.html");
5.out
<body>
<%
out.println("Goxcheer");
int total=out.getBufferSize();//获取总的缓存区大小
int available=out.getRemaining();//未使用的缓存区大小
int use=total-available;//获取使用的缓存区大小
out.println("总的缓存区大小"+total);
out.println("未使用的缓存区大小"+available);
out.println("获取使用的缓存区大小"+use); %>
</body>
6.exception
注意要包含指令<%@page errorPage="error.jsp" %>
<%@page isErrorPage="true" %>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@page errorPage="error.jsp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<%
int a=1;
int b=0;
out.write(a/b);
%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@page isErrorPage="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<%
if(exception!=null){
out.println(exception.getMessage());
}
%>
</body>
</html>
7.pageContext
<body>
<%
pageContext.setAttribute("name0","pageScore");
request.setAttribute("name1", "requestScore");
session.setAttribute("name2", "sessionScore");
application.setAttribute("name3", "applicationScore");
out.println("用pageContext访问页面中的"+pageContext.getAttribute("name0")+"<br>");
out.println("用pageContext访问页面中的"+pageContext.getRequest().getAttribute("name1")+"<br>");
out.println("用pageContext访问页面中的"+pageContext.getSession().getAttribute("name2")+"<br>");
out.println("用pageContext访问页面中的"+pageContext.getServletContext().getAttribute("name3")+"<br>");
%>
</body>
Jsp九大内置对象和4大作用域的更多相关文章
- JSP——九大内置对象和其四大作用域
一.JSP九大内置对象: JSP根据Servlet API 规范提供了某些内置对象,开发者不用事先声明就可以使用标准的变量来访问这些对象. Request:代表的是来自客户端的请求,例如我们在FORM ...
- JSP九大内置对象和四个作用域
JSP九大内置对象和四个作用域 在学习JSP的时候,首先就要先了解JSP的内置对象,什么是内置对象呢?内置对象也叫隐含对象,就是不需要预先声明就可以在脚本代码和表达式中随意使用.而这样的内置对象在JS ...
- 黑马程序员【JSP九大内置对象和四个作用域】转载
http://www.cnblogs.com/fanfu1/p/4530980.html JSP九大内置对象和四个作用域 ------- android培训.java培训.期待与您交流! ------ ...
- JSP九大内置对象及四个作用域
九大对象: 内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用 1-out: javax.servlet.jsp.JspWriter类型,代表输出流的对象.作用 ...
- JSP(二):JSP九大内置对象、四个作用域对象
jsp的九大内置对象: 内置对象: jsp文件在转译成其对应的Servlet文件的时候自动生成的并声明的对象.我们在jsp页面中直接使用即可. 注意: ...
- JSP九大内置对象及四个作用域详解
一共有九大内置对象: request.response.out.session.application.pageContext.page.config.exception 内置对象(又叫隐含对象),就 ...
- jsp九大内置对象、四种作用域、跳转方式
jsp有四种属性范围: page -> 页面级别,显然只有在一个页面内可用. request -> 请求级别 服务器跳转,一次请求之后消失. session -> 会话级别 客户端跳 ...
- jsp九大内置对象及四个作用域【转】
1.Request对象 该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以 获取用户提交的信息. 当Request对象获取客户提交的汉字字符时,会出现乱码问题,必 ...
- JSP九大内置对象和四种属性范围解读
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文首先主要解说了JSP中四种属性范围的概念.用法与实例. 然后在这个基础之上又引入了九 ...
随机推荐
- react-static 基于react 渐进式静态站点生成框架
react-static 是一个不错的基于react 开发的静态站点生成框架,可以用来替代create-react-app 包含的特性 100% react 很快的构建以及性能 自动代码以及数据分离 ...
- 06机器学习实战之SVM
对偶的概念 https://blog.csdn.net/qq_34531825/article/details/52872819?locationNum=7&fps=1 拉格朗日乘子法.KKT ...
- .Net培训班课程体系
.Net培训 第一部分:.Net基础 .Net基础:数据类型.变量.运算符.分支结构.循环结构.方法.反编译器.递归.递归算法的非递归优化: 面向对象:异常.封装继承多态.单例模式.装饰者设计模式.t ...
- webpack报错:Module build failed (from ./node_modules/babel-loader/lib/index.js): Error: Cannot find module 'babel-preset-env' from '...' - Did you mean "@babel/env"?
webpack报错:Module build failed (from ./node_modules/babel-loader/lib/index.js): Error: Cannot find mo ...
- vue监听路由变化
使用 watch,观察路由,一旦发生变化便重新获取数据 watch: { // 如果路由有变化,会再次执行该方法 '$route': 'fetchData' }
- css加载字体跨域问题
刚才碰到一个css加载字体跨域问题,记录一下.站点的动态请求与静态文件请求是不同的域名的.站点的域名为 www.domain.com,而静态文件的域名为 st.domain.com.问题:页面中加载c ...
- 【转】EF Code First 学习笔记:约定配置
要更改EF中的默认配置有两个方法,一个是用Data Annotations(在命名空间System.ComponentModel.DataAnnotations;),直接作用于类的属性上面;还有一个就 ...
- Pyhanlp自然语言处理中的新词识别
新词发现 本“新词发现”模块基于信息熵和互信息两种算法,可以在无语料的情况下提取一段长文本中的词语,并支持过滤掉系统中已存在的“旧词”,得到新词列表. 调用方法 静态方法 一句话静态调用接口已经封装到 ...
- shonc-聊天im工具配置
linux系统配置部分 1. 安装nodejs 切换到/usr/local/src/目录下 wget http://nodejs.org/dist/v0.10.25/node-v0.10.25-lin ...
- XE5 Android 开发数据访问手机端 解决乱码的办法 [转]
经过测试,将sqlserver里的字段由varchar 或者char 改为 nvarchar 或者nchar 然后在手机端的clientdataset 增加字段的时候数据类型选择widestrin ...