JSP九大内置对象和四种属性范围解读.docx

上传人:b****3 文档编号:4347714 上传时间:2022-11-30 格式:DOCX 页数:30 大小:26.08KB
下载 相关 举报
JSP九大内置对象和四种属性范围解读.docx_第1页
第1页 / 共30页
JSP九大内置对象和四种属性范围解读.docx_第2页
第2页 / 共30页
JSP九大内置对象和四种属性范围解读.docx_第3页
第3页 / 共30页
JSP九大内置对象和四种属性范围解读.docx_第4页
第4页 / 共30页
JSP九大内置对象和四种属性范围解读.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

JSP九大内置对象和四种属性范围解读.docx

《JSP九大内置对象和四种属性范围解读.docx》由会员分享,可在线阅读,更多相关《JSP九大内置对象和四种属性范围解读.docx(30页珍藏版)》请在冰豆网上搜索。

JSP九大内置对象和四种属性范围解读.docx

JSP九大内置对象和四种属性范围解读

JSP九大内置对象和四种属性范围解读

一、四种属性范围

1.1、在JSP中提供了四种属性保存范围

page:

在一个页面内保存属性,跳转之后无效

request:

在一次服务请求范围内,服务器跳转后依然有效

session:

-在一次会话范围内,无论何种跳转都可以使用,但是新开浏览器无法使用

application:

在整个服务器上保存,所有用户都可以使用

1.2、4种属性范围都支持的操作

[java]viewplaincopy

publicvoidsetAttribute(Stringname,Objectvalue)

publicObjectgetAttribute(Stringname)

publicObjectremoveAttribute(Stringname)

下面,我们来对四种范围来分别进行详细的介绍

1.3、page范围

在JSP中设置一个页的属性范围,必须通过pageContext完成,PageContext属性范围是最重要的JSP属性之一,但是如果使用纯粹的JSP代码开发,此属性显示不出用处,其发挥作用在Struts,WebWork中

如下:

[html]viewplaincopy

<%@pageimport="java.util.*"%>

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"

pageEncoding="UTF-8"%>

DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:

//www.w3.org/TR/html4/loose.dtd">

Inserttitlehere

<%

//设置page属性范围,此属性只在当前JSP页面内起作用

pageContext.setAttribute("name","linbingwen");

pageContext.setAttribute("time",newDate());

%>

姓名:

${pageScope.name}

时间:

${pageScope.time}

${pageScope.name}这里用了EL表达式来取得值,输出结果如下,

这里要注意发果在其它页面使用:

如下:

[html]viewplaincopy

<%@pageimport="java.util.*"%>

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"

pageEncoding="UTF-8"%>

DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:

//www.w3.org/TR/html4/loose.dtd">

Inserttitlehere

姓名:

${pageScope.name}

时间:

${pageScope.time}

输出结果:

这说明page范围的值只能在本页使用!

1.4、request属性范围

request将属性保存在一次请求范围之内:

前提:

必须使用服务器端跳转:

forward/>应用点:

MVC设计模式、Struts、Webwork

应用实例

首先是设置request:

request.jsp

[html]viewplaincopy

<%@pageimport="java.util.*"%>

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"

pageEncoding="UTF-8"%>

DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:

//www.w3.org/TR/html4/loose.dtd">

Inserttitlehere

<%

//设置request属性范围

request.setAttribute("name","linbingwen");

request.setAttribute("time",newDate());

%>

forwardpage="requestResult.jsp"/>

然后是显示requestResult.jsp

[html]viewplaincopy

<%@pageimport="java.util.*"%>

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"

pageEncoding="UTF-8"%>

DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:

//www.w3.org/TR/html4/loose.dtd">

Inserttitlehere

获取request姓名:

${requestScope.name}

获取request时间:

${requestScope.time}

访问结果:

这时比如requestResult1.jsp也想来访问这两个属性

内容和requestResult.jsp一样:

[html]viewplaincopy

<%@pageimport="java.util.*"%>

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"

pageEncoding="UTF-8"%>

DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:

//www.w3.org/TR/html4/loose.dtd">

Inserttitlehere

获取request姓名:

${requestScope.name}

获取request时间:

${requestScope.time}

结果如下,说明request只针对服务器跳转有效,在两次跳转之间保存。

1.5、session属性范围

session:

只要设置上去,则不管是什么跳转,都可以取得属性,主要用于验证用户是否登陆。

EMAIL--->用户需要先进行登陆,登陆成功后再编辑邮件。

与session有关的任何打开的页面都可以取得session

比如session.jsp设置如下:

[html]viewplaincopy

<%@pageimport="java.util.*"%>

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"

pageEncoding="UTF-8"%>

DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:

//www.w3.org/TR/html4/loose.dtd">

Inserttitlehere

<%

//设置session属性范围

session.setAttribute("name","linbingwen");

session.setAttribute("time",newDate());

%>

获取session内容

然后是取出sesson的值sessionResult.jsp

[html]viewplaincopy

<%@pageimport="java.util.*"%>

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"

pageEncoding="UTF-8"%>

DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:

//www.w3.org/TR/html4/loose.dtd">

Inserttitlehere

获取session姓名:

${sessionScope.name}

获取session时间:

${sessionScope.time}

输出结果:

如果还有一个sessionResult1.jsp和sessionResult.jsp一样如下

[html]viewplaincopy

<%@pageimport="java.util.*"%>

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"

pageEncoding="UTF-8"%>

DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:

//www.w3.org/TR/html4/loose.dtd">

Inserttitlehere

<%

//设置request属性范围

session.setAttribute("name","linbingwen");

session.setAttribute("time",newDate());

%>

获取session内容

然后是取出sesson的值sessionResult.jsp

<%@pageimport="java.util.*"%>

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"

pageEncoding="UTF-8"%>

DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:

//www.w3.org/TR/html4/loose.dtd">

Inserttitlehere

获取session姓名:

${sessionScope.name}

获取session时间:

${sessionScope.time}

注意看上面的GIF动画和这里的获取到的时间是一样的,这也说明了这两个jsp页面取得了同一个值

1.6、application属性范围

只要设置一次,则所有的页面窗口都可以取得数据。

这里的值将会保存在服务器上,所以每一个用户都可以看见。

如下面application.jsp:

[html]viewplaincopy

<%@pageimport="java.util.*"%>

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"

pageEncoding="UTF-8"%>

DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:

//www.w3.org/TR/html4/loose.dtd">

Inserttitlehere

<%

//设置request属性范围

application.setAttribute("name","linbingwen");

application.setAttribute("time",newDate());

%>

获取application内容

然后是applicationResult.jsp

[html]viewplaincopy

<%@pageimport="java.util.*"%>

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"

pageEncoding="UTF-8"%>

DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:

//www.w3.org/TR/html4/loose.dtd">

Inserttitlehere

获取application姓名:

${applicationScope.name}

获取application时间:

${applicationScope.time}

输出结果:

如果这时在新建一个网页或新建一个新的web项目,但是它们两个要运行在同一个Tomcat中,那么它同样也能访问到这个值。

注意:

pplication、session、request--==--》都与要跨多个页,属性保存是有内存开销的,设置过多的application或每一个session保存过多的对象,性能就降低了。

原则:

能用request就不要用session,能用session就不要用application

application应用:

在线人员统计、在线人员名单列表,要释放application资源,只能重新启动服务器.

使用application缓存数据库的连接,每次使用时,从缓冲中取出,用完就返回。

二、JSP九大内置对象详解

内置对象(又叫隐含对象,有9个内置对象):

不需要预先声明就可以在脚本代码和表达式中随意使用

JSP内置对象映射表

request请求对象 类型javax.servlet.ServletRequest作用域Request

response响应对象类型javax.servlet.SrvletResponse作用域Page

pageContext页面上下文对象类型javax.servlet.jsp.PageContext作用域Page

session会话对象类型javax.servlet.http.HttpSession作用域Session

application应用程序对象类型javax.servlet.ServletContext作用域Application

out输出对象类型javax.servlet.jsp.JspWriter作用域Page

config配置对象类型javax.servlet.ServletConfig作用域Page

page页面对象类型javax.lang.Object作用域Page

exception例外对象类型javax.lang.Throwable作用域page

JSP中一共预先定义了9个这样的对象,分别为:

request、response、session、application、out、pagecontext、config、page、exception

2.1、request对象

request对象是javax.servlet.httpServletRequest类型的对象。

该对象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。

(包括头信息、系统信息、请求方式以及请求参数等)。

request对象的作用域为一次请求。

实现常有的方法

1、获取数据

[java]viewplaincopy

getParameter;;接收请求参数的,

2、对所有数据进行再编码

[java]viewplaincopy

publicbyte[]getBytes(“encoding”)

如下实例将byte数组编码转换

[html]viewplaincopy

<%@pagecontentType="text/html";charset=gbk"%>

<%

//接收内容

Stringname=request.getParameter("uname");

byte[]b=name.getBytes("ISO8859-1");

name=newString(b);

Stringname=newString(request.getParameter("uname").getBytes("ISO8859-1"));

%>

输入内容为:

<%=name%>

3、设置统一的请求编码

[java]viewplaincopy

publicvoidsetCharacterEncoding(Stringenv)throwsUnsunpportedEncodingException

如下设置

[html]viewplaincopy

<%@pagecontentType="text/html";charset=gbk"%>

<%

//接收内容

request.setCharacterEncoding("GBK");

Stringname=request.getParameter("uname");

%>

输入内容为:

<%=name%>

4、获取requst信息:

[html]viewplaincopy

<%@pagelanguage="java"contentType="text/html;charset=UTF-8"

pageEncoding="UTF-8"%>

DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:

//www.w3.org/TR/html4/loose.dtd">

Inserttitlehere

请求方式:

<%=request.getMethod()%>

请求的资源:

<%=request.getRequestURI()%>

请求用的协议:

<%=request.getProtocol()%>

请求的文件名:

<%=request.getServletPath()%>

请求的服务器的IP:

<%=request.getServerName()%>

请求服务器的端口:

<%=request.getServerPort()%>

客户

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1