第四章 内置对象笔记(1)

更新时间:2024-07-02 07:15:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

什么是JSP内置对象?

JSP 内置对象是 Web 容器创建的一组对象

JSP 内置对象是可以直接在JSP页面使用的对象 ,无需使用“new”获取实例 JSP 内置对象的名称是 JSP 的保留字 示例

<%request.setCharacterEncoding(\

String titleName = request.getParameter(\没有出现new关键字,但却可以使用request对象

JSP内置对象概览

常用的内置对象: No. 1 2 3 4 5 6 7 8 9 内置对象 类型 描述 JSP的页面容器 得到用户的请求信息 服务器向客户端的回应信息 保存每个用户的信息 表示所有用户的共享信息 服务器配置,可以取得初始化参数 页面输出 表示从该页面表示出来的一个servlet实例 表示从JSP页面发生的异常,在错误也中才起作用 pageContext javax.servlet.jsp.PageContext request response session application config out page exception javax.servlet.http.HttpServletRequest javax.servlet.http.HttpServletResponse javax.servlet.http.HttpSession javax.servletServletContext javax.servlet.ServletConfig javax.servlet.jspJspWriter java.lang.Object java.lang.Throwable

JSP中4种属性保存范围(补充)

属性范围:指的是一个设置的对象可以在多少个页面中保存并继续使用。

? page:只在一个页面中保存属性,跳转之后无效。

? request:只在一次请求中保存,服务器跳转后依然有效。 ? session:在一次会话范围中,无论何种跳转都可以使用,但是新开浏览器无法使用。 ? application:在整个服务器上保存,所有用户都可以使用。 四种属性范围中都将包含以下的属性操作方法。 No. 1 2 3 方法 描述 设置属性 取得属性 删除属性 public void setAttribute(String name,Object value) public Object getAttribute(String name) public void removeAttribute(String name) 补充1. page属性范围: Page属性范围(使用pageContext表示,但是一般都习惯于将这种范围称为page范围)表示将一个属性设置在本页,跳转之后无法取得,如图:

例子:设置和取得page范围的属性--- page_scope_01.jsp

<%@ page contentType=\ pageEncoding=\%> <%@ page import=\%> <% // 设置属性 %> <% %>

姓名:<%=username%>

生日:<%=userbirthday%>

String username = (String) pageContext.getAttribute(\) ; Date userbirthday = (Date)pageContext.getAttribute(\) ; pageContext.setAttribute(\,\李兴华\) ; pageContext.setAttribute(\,new Date()) ; 在一个页面设置一个属性,然后直接从本页面中取出属性,返回的类型是Object,所以必须进行向下转型操作。

例子:跳转后属性无法取得。page_scope_02.jsp

<%@ page contentType=\ pageEncoding=\%> <%@ page import=\%> www.mldnjava.cn,MLDN高端Java培训 <% // 设置属性 %> page_scope_03.jsp <%@ page contentType=\ pageEncoding=\%> <%@ page import=\%> www.mldnjava.cn,MLDN高端Java培训 <% %>

姓名:<%=username%>

生日:<%=userbirthday%>

String username = (String) pageContext.getAttribute(\) ; Date userbirthday = (Date)pageContext.getAttribute(\) ; pageContext.setAttribute(\,\李兴华\) ; pageContext.setAttribute(\,new Date()) ; Page范围在跳转后无效,所以程序执行跳转操作后,page_scope_03.jsp页面无法取得属性的,输出时,内容为null,

request 属性范围;

服务器跳转后,属性依然保存下来,可以使用request 属性范围操作。

设置request范围属性 request_scope_01.jsp

<%@ page contentType=\ pageEncoding=\%> <%@ page import=\%> www.mldnjava.cn,MLDN高端Java培训 <% // 设置属性 %> request.setAttribute(\,\李兴华\) ; request.setAttribute(\,new Date()) ; 例子:取得request范围属性 <%@ page contentType=\ pageEncoding=\%> <%@ page import=\%> <% %>

姓名:<%=username%>

生日:<%=userbirthday%>

String username = (String) request.getAttribute(\) ; Date userbirthday = (Date)request.getAttribute(\) ; 例子:使用超链接跳转--- request_scope_03.jsp 无法取得属性 <%@ page contentType=\ pageEncoding=\%> <%@ page import=\%> <% // 设置属性 %> 通过链接取得属性 request.setAttribute(\,\李兴华\) ; request.setAttribute(\,new Date()) ; 例子:服务器跳转:request_scope_04.jsp <%@ page contentType=\ pageEncoding=\%> <%@ page import=\%> <% // 设置属性 pageContext.setAttribute(\,\李兴华\,PageContext.REQUEST_SCOPE) ; pageContext.setAttribute(\,new Date(),PageContext.REQUEST_SCOPE) ; %> request将属性保存在一次请求范围内。

前提:必须使用服务端跳转

如果跳转方式改成超链接,地址栏改变(新的一次请求),上一次请求的内容没有保存下来,故显示内容为null。

session 属性范围

设置一个属性后,可以在人一个与设置页面相关的页面中取得,则可以使用session 属性范围。不管是客户端跳转还是服务器端跳转只要是属性设置了都可以。

例子:设置session范围属性 session_scope_01.jsp <%@ page contentType=\ pageEncoding=\%> <%@ page import=\%> <% // 设置属性 %> 通过链接取得属性 session.setAttribute(\,\李兴华\) ; session.setAttribute(\,new Date()) ; 例子:取出session范围属性 session_scope_02.jsp

<%@ page contentType=\ pageEncoding=\%> <%@ page import=\%> <% %> String username = (String) session.getAttribute(\) ; Date userbirthday = (Date)session.getAttribute(\) ;

姓名:<%=username%>

生日:<%=userbirthday%>

但是如果此时新开一个浏览器,则肯定无法取得。Session只是保留了一个人的信息。如果一个属性想让所有的用户都可以访问,则可以使用最后一种属性范围:application范围 总结:

session,只保留一个用户信息

在一个浏览器(一次会话)范围能取得属性值 只要设置在session中的内容,不管采用什么方式进行页面跳转,都可以获得属性值 应用案例:验证用户是否登录 application范围;

例子:设置application范围属性 application_scope_01.jsp <%@ page contentType=\ pageEncoding=\%> <%@ page import=\%> <% // 设置属性 %> 通过链接取得属性 application.setAttribute(\,\李兴华\) ; application.setAttribute(\,new Date()) ; 例子取得application范围属性 application_scope_01.jsp

<%@ page contentType=\ pageEncoding=\%> <%@ page import=\%> <% %> String username = (String) application.getAttribute(\) ; Date userbirthday = (Date)application.getAttribute(\) ;

姓名:<%=username%>

生日:<%=userbirthday%>

因为属性范围设置在了服务器中,所以只要是连接到此服务器的任意用户都可以取得此属性,当然,如果服务器关闭的话,则此属性肯定消失。 总结;

? application属性范围值,只要设置一次,则在所有的网页窗口都可以取得数据。 ? 如果要释放application资源,只能重新启动服务器 ? application应用:在线人员统计,在线人员名单列表 使用提示;

能使用page范围的就不使用request,能使用request范围的就不使用session,能使用session范围的就不使用application,保存范围越窄,对于服务器的压力就越低。 深入研究page属性范围:

在PageContext类中有四个常量:

? PAGE_SCOPE、REQUEST_SCOPE、SESSION_SCOPE、

APPLICATION_SCPOE

在父类javax.servlet.jsp.JspContext中提供了一组用于向各种范围内存取属性的方法。

? public abstract void setAttribute(String name, Object value)

? public abstract void setAttribute(String name, Object value, int scope) ? public abstract Object getAttribute(String name)

? public abstract Object getAttribute(String name, int scope) <% // 设置属性 pageContext.setAttribute(\李兴华\ pageContext.setAttribute(\Date(),PageContext.REQUEST_SCOPE) ; %> 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子:

例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子: 例子:

本文来源:https://www.bwwdw.com/article/lqz.html

Top