《第四章JSP的内置对象.ppt》由会员分享,可在线阅读,更多相关《第四章JSP的内置对象.ppt(45页珍藏版)》请在三一文库上搜索。
1、第四章 JSP的内置对象,学习目标,熟悉主要内置对象的概念 理解主要内置对象的作用域和生命期 理解主要内置对象的作用和关系 熟悉主要内置对象的使用方法,什么是JSP内置对象,JSP 内置对象是 Web 容器创建的一组对象 JSP 内置对象是可以直接在JSP页面使用的对象 ,无需使用“new”获取实例 JSP 内置对象的名称是 JSP 的保留字,常用内置对象,request,response,out,application,session,示例,没有出现new关键字,但却可以使用request对象,page,JSP内置对象out,out对象用于向客户端输出数据 out对象常用方法: print(
2、):在页面中打印出字符串信息 Println():在页面中打印出字符串信息,并在末尾回车,JSP内置对象request,request对象主要用于处理客户端请求,request 对象,客户端,请求,请求信息,JSP内置对象request,request对象常用方法,JSP内置对象request,编程实现注册功能 注册信息包括:用户名、密码、兴趣 页面提交后,显示输入的数据,问题分析: 在一个页面创建表单,提供信息输入窗口,在另一页面,使用request对象获取表单信息。 程序结构: reginput.jsp页面创建表单(信息输入窗口),用户提交信息后,页面定向到reginfo.jsp页面。页面
3、交互关系如图所示。,页面交互关系,程序算法: reginput.jsp: 创建一表单,包含一个文本控件一个密码控件,一个复选框,一个提交按钮和一个重置按钮 reginfo.jsp 1.获取文本框,密码框和复选按钮和提交控件的值 2.输出文本框,密码框和复选按钮和提交控件的值,JSP内置对象request 4-4, 用户名: 密码: 兴趣: 读书 打篮球玩游戏 看电影 ,String channels = request.getParameterValues(“channel“); if (channels != null) for (int i = 0; i channels.length;
4、i+) out.println(channelsi); ,request.setCharacterEncoding(“GBK“);,request.getParameter(“name”);,request.getParameter(“pwd“);,小结1,显示一个网上改卷的功能 要求:一个页面输出单选试题,由另一页面获取用户选择,统计考生得分。 第一个页面包含两组单选按钮。 第二个页面 获取用户提交的答案 与正确答案比较,统计得分 输出考试结果 效果如图所示:,JSP内置对象response,response对象用于响应客户请求并向客户端输出信息 response 对象常用方法 void s
5、endRedirect (String location):将请求重新定位到一个不同的URL,response 对象,客户端,响应,从服务器中检索的信息,存储信息,以在响应客户端请求时发送此信息,内置对象response的常用方法,响应包的状态行 服务器响应客户时,它发送到客户端的首行被称为状态行。状态行由3位数的状态代码和描述状态代码的文字组成。下面是对状态代码的分类描述: 1xx :1开头的位数字,主要用于实验。 2xx :2开头的位数字,表明客户端的请求已成功。 3xx :3开头的位数字,表明处理客户的请求以前,应 做一些别的处理。 4xx :4开头的位数字,表明浏览器请求是非法的或无
6、效的。 5xx :5开头的位数字,表明服务器出现了问题。 我们一般不需要修改状态行,在出现问题时,服务器会自动响应,发送相应的状态代码到客户端。也可以使用setStatus(int n)方法来增加状态行的内容。,4状态代码表 下面是服务器响应客户时,发送到客户端的状态代码描述,小结2,要求:在页面中,实时显示当前时间 问题分析: 要实时显示当前时间,必须每秒钟刷新一次页面,这就要求向客户输出的响应包中,必须含有响应头”Refresh”,其值为1,单位是秒。 程序设计 1.输出当前时间 2.添加响应头”Refresh”,其值是1。, 现在的时间是: ,小结3,功能:要求使用response对象实
7、现页面的重定向 要求:实现从一个网页到另一个网页的重定向 程序设计: 1.先建立一个页面,在此页面上创建一表单,包含用于输入姓名的文本框。(a.jsp) 2.再创建一个页面用来(b.jsp) 3.创建一个欢迎页面(c.jsp) a.获取表单的姓名信息,和密码信息 b.如果姓名为“sa”,并且密码也为“sa”,则重新定向到 c.jsp页面,否则输出相应的信息。,JSP内置对象-session,客户与服务器的通讯是通过HTTP协议完成的。但是,HTTP协议是一种无状态协议。即,一个客户向服务器发送请求(request),然后服务器返回响应(response),连接就关闭了。服务器端不保留客户与服务
8、器每一次连接的信息,因此,服务器无法判断上下两次连接是否是同一客户。要想记住客户的连接信息,必须使用会话对象(session)。session对象记录了每个客户与服务器的连接信息。,1.会话 从一个客户打开浏览器连接到服务器的某个服务目录(这其间,客户访问的是同一web目录中的网页),到客户关闭浏览器,这一过程称为一个会话。这时,在服务器端,系统为该客户创建了一个session对象。在客户端,系统为该客户创建了Cookie对象。一个客户对同一服务目录中不同网页的访问属于同一会话。 2.客户的session对象与服务目录 当一个客户首次访问服务目录中的一个JSP页面时,JSP引擎为该客户创建一个
9、session对象。同一客户访问的服务目录不同,JSP引擎为该客户创建不同的session对象。从时间上看,若客户离开先前的服务目录,连接到其它服务器或者服务目录,当再次回到先前服务目录时,JSP引擎不再给客户分配新的session对象,而是使用先前的session对象。只有当客户关闭浏览器或这个session对象达到了最大生存时间,该客户的session 对象才被取消,这时服务器与客户的会话关系消失。,3Session对象与Cookie 当JSP引擎为客户创建一个session对象后,这个session对象被分配了一个String类型的ID号,JSP引擎同时将此ID号发送到客户端,存放在Co
10、okie中这样,代表同一客户会话的session对象和Cookie对象建立了一一对应关系即,每一客户会话信息保存在session/Cokkie对中 4Session对象与线程 当多个客户点击同一页面时,JSP引擎为每个客户启动一个线程,这就是说,一个客户对应一个线程,每个线程对应一个session对象,每个线程的session对象不同。 5Session对象生命周期 从一个客户会话开始到会话结束这段时间称为session对象的生命周期。具体上说,指客户访问某web目录下的页面到关闭浏览器,离开该web目录,这段时间成为session对象的生命周期。,Session对象的常用方法,public
11、void setAttribute(String key.Object obj) session 对象类似于散列表,可以调用该方法将参数Object指定的对象obj添加到session对象中,并为添加的对象指定了一个索引关键字。如果添加的两个对象的关键字相同,则先前添加的对象被清除。 public Object getAttibue(String key) 获取session对象中含有的关键字是key的对象。由于任何对象都可以添加到session对象中,因此用该方法取回对象是,应强制转化为原来的类型。,public Enumeration getAttributeName() session
12、对象调用该方法产生一个枚举对象。该枚举对象使用nextElemets()方法遍历session对象所含有的全部对象。 public long getCreationTime() session对象调用该方法可以获取该对象创建的时间。单位是毫秒(从1970年7月1日午夜起至该对象创建时刻所走过的毫秒数)。 public long getLastAccessedTime() 获取当前session对象最后一次被操作的时间,单位是毫秒,public int getMaxInactiveInterval() 获取session对象的生存时间 public void setMaxInactiveInte
13、rval(int n) 设置session对象的生存时间(单位是秒) public void removeAttribue(String key) 从当前session对象中删除关键字是key的对象。 public String getId() 获取session对象的编号 invalidate() 使session对象无效 public boolean isNew() 判断是否是一个新的客户,同一客户访问两个不同的web目录中的页面,查看该客户在不同web目录中的session对象的ID号。 问题分析: 创建两个web目录,并在其中部署JSP页面,然后通过表单或超连接,将两个web目录中的页
14、面连接起来。 程序结构: 本程序由四个JSP页面文件构成。 三个页面 example.jsp、liu.jsp、wang.jsp部署在目录ch05下面;file.jsp页面部署在目录ch04下面。下面是四个页面的交互关系所示。,小结4,页面交互关系,example.jsp 页面,liu.jsp 页面,网页重定向,wang.jsp 页面,超链接,file.jsp 页面,超链接,超链接,程序算法: example.jsp: 1.获取访问本页面的客户的session对象ID号 2.输出ID号 3.创建表单,该表单提交时,将信息提交给liu.jsp页面 4.在创建表单,该表单提交时,将信息提交给file
15、.jsp页面 liu.jsp: 1.获取访问本页面的客户的session对象ID号 2.输出ID号 3.设置超链接,链接到wang.jsp页面 wang.jsp: 1获取访问本页面的客户的session对象ID号 2输出ID号 3设置超链接,链接到ex5_9.jsp页面 file.jsp: 1获取访问本页面的客户的session对象ID号 2输出ID号 3设置超链接,链接到ex5_9.jsp页面,小结5,创建登录页面login.html 提供用户名输入框、以及登录按钮 创建登录处理页面login.jsp 如果用户名为sa,把用户名存储在session中,并跳转进入index.jsp中 否则跳转
16、进入login.html页面 创建页面index.jsp 如果session中没有该用户信息,跳转进入login.html中 否则显示欢迎信息,升级上面的的小结5 要求: 1.输入用户名和密码,然后和数据库中的用户表进行匹配,如果匹配就把该用户信息保存到session中,然后跳转到index.jsp否则跳转到login.jsp页面。 2.在index.jsp页面取出session中的用户在页面中显示“用户名 ”欢迎你!,小结6,将购买者的姓名、商品名保存在session对象中,实现同一web目录下的页面对session对象中的信息共享。 问题分析: 创建三个页面,第一个页面输入姓名,第二个页面
17、输入商品名,第三个页面实现结帐处理。 程序结构: 本程序包含三个JSP页面文件,三个页面文件保存在同一web目录中。 example1.jsp页面接受姓名录入,并将姓名提交给first.jsp页面;first.jsp页面接受商品名的录入,并将商品名提交给account.jsp页面。三个页面的交互关系如图所示。,页面交互关系,程序算法: example1.jsp: 创建一个包含文本控件的表单,用此文本控件录入姓名 first.jsp: 1获取客户端输入的姓名(xm) 2将“属性名-值“对,即(“name“,xm)添加到session对象中 3创建一个包含文本控件的表单,用此文本控件录入商品名 a
18、ccount.jsp: 1.获取客户端录入的商品名(sp) 2.将“属性名-值“对,即(“goods“,sp)添加到session对象中 3.从session对象中获取姓名和商品名 4.将姓名和商品名输出到客户端,小结7,统计访问页面的客户数。第4章的讲述过这种例子,那个例子的缺陷是客户可以通过不断刷新页面增加计数器。在这个例子里,使用session对象的isNew()方法解决这一问题。 问题分析: 由于客户刷新页面时,session对象的ID号不会改变。当客户刷新页面时,让程序检查客户的session 对象是不是一个新的session对象,若是新的session对象,才增加计数器的值。 程序
19、结构: 程序名:example2.jsp,JSP内置对象-application,我们已经知道,不同的客户与服务器连接时有不同的session对象,同一客户浏览同一服务器的不同目录时,有不同的session对象。 与session对象不同的是application对象。服务器启动后,就产生了application对象。所有客户的application对象是相同的一个,即,所有客户共享这个内置的application对象。,application对象生命期 application对象随着服务器启动而创建,随着服务器关闭而消失。application对象的生命周期指从application对象创建
20、到服务器关闭这段时间。 application对象与线程 当多个客户点击同一页面时,JSP引擎为每个客户启动一个线程,这些线程共享同一个application对象由于所有客户共享同一个application 对象,任何客户对application对象中数据的改变都会影响到其它的客户,因此,对该对象的操作需要实现同步处理。,application对象的常用方法 public void setAttribute(String key,Object obj) application对象可以调用该方法将参数Object指定的对象obj添加到application对象中,并为添加的对象指定一个索引关键字
21、。如果添加的两个对象的关键字相同,则先前添加的对象被清除。 public Object getAttibue(String key) 获取application对象中含有的关键字key的对象。由于任何对象都可以添加到application对象中,因此用该方法取回对象时,应强制转化为原来的类型。 public Enumeration getAttributeNames() application对象条用该方法产生一个枚举对象。该枚举对象使用nextElemets()方法遍历application对象所含有的全部对象。,public void removeAttribue(String key)
22、从当前application对象中删除关键字是key的对象。 public String getServletInfo() 获取Servlet编译器的当前版本信息。 注意: 有些服务器不直接支持使用application对象,必须先用ServletContext 类声明这个对象,再使用getServletContext()方法对这个application对象初始化,小结8,继续升级小结5中的实验 要求: 1.增加一个统计页面人数的功能 2.能把所有访问了页面的用户名显示出来,page对象,page 对象代表JSP页面本身,更确切地说,它代表JSP被转译后的Servlet。其作用相当于java中
23、的this。,本章小结,本章介绍了JSP内置对象的概念、生命周期、作用范围和对象方法的实际应用。使用JSP内置对象,可以方便操作页面属性和行为,访问页面运行环境,实现页面内、页面间、页面与环境之间的通信和相互操作。,心得体会,(1)用内置对象request的getParameter()方法获取url的参数和表单的信息。经过测试,在相同name的情况下,url的参数会优先于表单的参数。 (2)汉字处理问题,有的时候在或out.print(“欢迎”)时会出现乱码。其解决的办法就是要对字符串进行编码。以下代码就可以得到正确的输出: 或者 (3)Session对象生命周期,例如一个论坛,从你成功登陆到这个论坛,Session对象就产生;一直到你跟服务器断开,比方说关闭浏览器,断网等Session对象就结束。 (4)Application对象与Session对象不同,是多个用户共享此对象,即使用户与服务器断开,Application对象依然存在。直到服务器关闭,才会结束。例如用Application对象可以实现储存网站的访问人数。,
链接地址:https://www.31doc.com/p-3458450.html