资源预览内容
第1页 / 共45页
第2页 / 共45页
第3页 / 共45页
第4页 / 共45页
第5页 / 共45页
第6页 / 共45页
第7页 / 共45页
第8页 / 共45页
第9页 / 共45页
第10页 / 共45页
亲,该文档总共45页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第四章第四章 JSP JSP的内置对象的内置对象学习目标熟悉主要内置对象的概念理解主要内置对象的作用域和生命期理解主要内置对象的作用和关系熟悉主要内置对象的使用方法什么是JSP内置对象JSP 内置对象是 Web 容器创建的一组对象JSP 内置对象是可以直接在JSP页面使用的对象 ,无需使用“new”获取实例JSP 内置对象的名称是 JSP 的保留字 常用内置对象常用内置对象 request responseoutapplicationsession示例示例 没有出现没有出现new关键关键字,但却可以使用字,但却可以使用request对象对象pageJSP内置对象outout对象用于向客户端输出数据out对象常用方法:print():在页面中打印出字符串信息Println():在页面中打印出字符串信息,并在末尾回车JSP内置对象requestrequest对象主要用于处理客户端请求JSP 页面页面request 对象对象客户端客户端 请求请求请求信息请求信息JSP内置对象requestrequest对象常用方法方法名称说明String getParameter(String name)根据页面表单组件名称获取页面提交数据 String getParameterValues (String name)获取一个页面表单组件对应多个值时的用户的请求数据 void setCharacterEncoding (String charset) 指定每个请求的编码 在调用request.getParameter()之前进行设定,可以解决中文乱码问题 request.getRequestDispatcher(String path)返回一个javax.servlet.RequestDispatcher对象,该对象的forward方法用于转发请求 JSP内置对象request编程实现注册功能注册信息包括:用户名、密码、兴趣页面提交后,显示输入的数据问题分析:问题分析: 在一个页面创建表单,提供信息输入窗口,在另一页面,使用request对象获取表单信息。程序结构:程序结构:reginput.jsp页面创建表单(信息输入窗口),用户提交信息后,页面定向到reginfo.jsp页面。页面交互关系如图所示。 页面交互关系程序算法:程序算法: reginput.jsp: 创建一表单,包含一个文本控件一个密码控件,一个复选框,一个提交按钮和一个重置按钮 reginfo.jsp 1.获取文本框,密码框和复选按钮和提交控件的值 2.输出文本框,密码框和复选按钮和提交控件的值reginput.jsp页面页面reginfo.jsp页面页面提交提交JSP内置对象request 4-4 用户名:用户名: 密码:密码: 兴趣:兴趣: 读书读书 打篮球打篮球玩游戏玩游戏看电影看电影 String channels = request.getParameterValues(channel);if (channels != null) for (int i = 0; i channels.length; i+) out.println(channelsi);request.setCharacterEncoding(GBK);request.getParameter(“name”);request.getParameter(pwd);小结1显示一个网上改卷的功能要求:一个页面输出单选试题,由另一页面获取用户选择,统计考生得分。第一个页面包含两组单选按钮。第二个页面 获取用户提交的答案与正确答案比较,统计得分输出考试结果效果如图所示:JSP内置对象responseresponse对象用于响应客户请求并向客户端输出信息 response 对象常用方法void sendRedirect (String location):将请求重新定位到一个不同的URLJSP 页面页面response 对象对象客户端客户端响应响应从服务器中从服务器中检索的信息检索的信息存储信息,以在响应客存储信息,以在响应客户端请求时发送此信息户端请求时发送此信息内置对象response的常用方法方法名称说明addHeader(String head,String value) 向包里添加一个头(head)及对应值(value)sendRedirect(URL url)实现客户重定向setStatus(int n)置响应的状态代码。响应包的状态行服务器响应客户时,它发送到客户端的首行被称为状态行。状态行由3位数的状态代码和描述状态代码的文字组成。下面是对状态代码的分类描述: 1xx :1开头的位数字,主要用于实验。 2xx :2开头的位数字,表明客户端的请求已成功。 3xx :3开头的位数字,表明处理客户的请求以前,应 做一些别的处理。 4xx :4开头的位数字,表明浏览器请求是非法的或无 效的。 5xx :5开头的位数字,表明服务器出现了问题。 我们一般不需要修改状态行,在出现问题时,服务器会自动响应,发送相应的状态代码到客户端。也可以使用setStatus(int n)方法来增加状态行的内容。4状态代码表下面是服务器响应客户时,发送到客户端的状态代码描述状态代码 代码说明 101 服务器正在升级协议 100 客户可以继续 201 请求成功且在服务器上创建了新的资源 202 请求已被接受但还没有处理完毕200 请求成功 203 客户端给出的原信息不是发自服务器的 204 请求成功,但没有新信息 状态代码 代码说明 205客户必须重置文档视图 206服务器执行了部分get请求 300请求的资源有多种表示 301资源已经被永久移动到新位置 302资源已经被临时移动到新位置303应答可以在另外一个URL中找到304Get方式请求不可用 305请求必须通过代理来访问 状态代码 代码说明 400请求由语法错误 401请求需要HTTP认证 403取得了请求但拒绝服务 404请求的资源部可用405请求所用的方法是不允许的 406请求的资源只能用请求不能接受的内容特性来响应 407客户必须得到认证 408请求超时 状态代码 代码说明 409发生冲突,请求不能完成 410请求的资源已经不可用 411请求需要一个定义的内容长度才能处理 413请求太大,被拒绝414请求的URL太大415请求的格式被拒绝 状态代码 代码说明 500服务器发生内部错误,不能服务 501不支持请求的部分功能 502从代理和网关接受了不合法的字符 503HTTP服务暂时不可用 504服务器在等待代理服务器应答时发生超时505不支持请求的HTTP版本 小结2要求:在页面中,实时显示当前时间问题分析:问题分析: 要实时显示当前时间,必须每秒钟刷新一次页面,这就要求向客户输出的响应包中,必须含有响应头”Refresh”,其值为1,单位是秒。程序设计程序设计 1.输出当前时间 2.添加响应头”Refresh”,其值是1。 现在的时间是现在的时间是: 小结3功能:要求使用response对象实现页面的重定向要求:实现从一个网页到另一个网页的重定向程序设计:程序设计: 1.先建立一个页面,在此页面上创建一表单,包含用于输入姓名的文本框。(a.jsp) 2.再创建一个页面用来(b.jsp) 3.创建一个欢迎页面(c.jsp) a.获取表单的姓名信息,和密码信息 b.如果姓名为“sa”,并且密码也为“sa”,则重新定向到 c.jsp页面,否则输出相应的信息。JSP内置对象-session客户与服务器的通讯是通过HTTP协议完成的。但是,HTTP协议是一种无状态协议。即,一个客户向服务器发送请求(request),然后服务器返回响应(response),连接就关闭了。服务器端不保留客户与服务器每一次连接的信息,因此,服务器无法判断上下两次连接是否是同一客户。要想记住客户的连接信息,必须使用会话对象(session)。session对象记录了每个客户与服务器的连接信息。1.会话 从一个客户打开浏览器连接到服务器的某个服务目录(这其间,客户访问的是同一web目录中的网页),到客户关闭浏览器,这一过程称为一个会话。这时,在服务器端,系统为该客户创建了一个session对象。在客户端,系统为该客户创建了Cookie对象。一个客户对同一服务目录中不同网页的访问属于同一会话。2.客户的session对象与服务目录 当一个客户首次访问服务目录中的一个JSP页面时,JSP引擎为该客户创建一个session对象。同一客户访问的服务目录不同,JSP引擎为该客户创建不同的session对象。从时间上看,若客户离开先前的服务目录,连接到其它服务器或者服务目录,当再次回到先前服务目录时,JSP引擎不再给客户分配新的session对象,而是使用先前的session对象。只有当客户关闭浏览器或这个session对象达到了最大生存时间,该客户的session 对象才被取消,这时服务器与客户的会话关系消失。3Session对象与Cookie 当JSP引擎为客户创建一个session对象后,这个session对象被分配了一个String类型的ID号,JSP引擎同时将此ID号发送到客户端,存放在Cookie中这样,代表同一客户会话的session对象和Cookie对象建立了一一对应关系即,每一客户会话信息保存在session/Cokkie对中4Session对象与线程当多个客户点击同一页面时,JSP引擎为每个客户启动一个线程,这就是说,一个客户对应一个线程,每个线程对应一个session对象,每个线程的session对象不同。5Session对象生命周期 从一个客户会话开始到会话结束这段时间称为session对象的生命周期。具体上说,指客户访问某web目录下的页面到关闭浏览器,离开该web目录,这段时间成为session对象的生命周期。Session对象的常用方法public void setAttribute(String key.Object obj)session 对象类似于散列表,可以调用该方法将参数Object指定的对象obj添加到session对象中,并为添加的对象指定了一个索引关键字。如果添加的两个对象的关键字相同,则先前添加的对象被清除。public Object getAttibue(String key)获取session对象中含有的关键字是key的对象。由于任何对象都可以添加到session对象中,因此用该方法取回对象是,应强制转化为原来的类型。public Enumeration getAttributeName()session 对象调用该方法产生一个枚举对象。该枚举对象使用nextElemets()方法遍历session对象所含有的全部对象。public long getCreationTime()session对象调用该方法可以获取该对象创建的时间。单位是毫秒(从1970年7月1日午夜起至该对象创建时刻所走过的毫秒数)。public long getLastAccessedTime()获取当前session对象最后一次被操作的时间,单位是毫秒public int getMaxInactiveInterval()获取session对象的生存时间public void setMaxInactiveInterval(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目录中的页面连接起来。程序结构:程序结构:本程序由四个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.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中否则跳转进入login.html页面创建页面index.jsp如果session中没有该用户信息,跳转进入login.html中否则显示欢迎信息升级上面的的小结5要求: 1.输入用户名和密码,然后和数据库中的用户表进行匹配,如果匹配就把该用户信息保存到session中,然后跳转到index.jsp否则跳转到login.jsp页面。 2.在index.jsp页面取出session中的用户在页面中显示“用户名 ”欢迎你! 小结6 将购买者的姓名、商品名保存在session对象中,实现同一web目录下的页面对session对象中的信息共享。问题分析:问题分析: 创建三个页面,第一个页面输入姓名,第二个页面输入商品名,第三个页面实现结帐处理。程序结构:程序结构: 本程序包含三个JSP页面文件,三个页面文件保存在同一web目录中。 example1.jsp页面接受姓名录入,并将姓名提交给first.jsp页面;first.jsp页面接受商品名的录入,并将商品名提交给account.jsp页面。三个页面的交互关系如图所示。ex5_10.jsp页面页面first. .jsp页面页面提交姓名提交姓名account.jsp页面页面提交商品名提交商品名页面交互关系程序算法:程序算法: example1.jsp: 创建一个包含文本控件的表单,用此文本控件录入姓名 first.jsp: 1获取客户端输入的姓名(xm) 2将属性名-值对,即(name,xm)添加到session对象中 3创建一个包含文本控件的表单,用此文本控件录入商品名 account.jsp: 1.获取客户端录入的商品名(sp) 2.将属性名-值对,即(goods,sp)添加到session对象中 3.从session对象中获取姓名和商品名 4.将姓名和商品名输出到客户端小结7统计访问页面的客户数。第4章的讲述过这种例子,那个例子的缺陷是客户可以通过不断刷新页面增加计数器。在这个例子里,使用session对象的isNew()方法解决这一问题。问题分析:问题分析: 由于客户刷新页面时,session对象的ID号不会改变。当客户刷新页面时,让程序检查客户的session对象是不是一个新的session对象,若是新的session对象,才增加计数器的值。程序结构:程序结构: 程序名:example2.jspJSP内置对象-application我们已经知道,不同的客户与服务器连接时有不同的session对象,同一客户浏览同一服务器的不同目录时,有不同的session对象。 与session对象不同的是application对象。服务器启动后,就产生了application对象。所有客户的application对象是相同的一个,即,所有客户共享这个内置的application对象。 application对象生命期 application对象随着服务器启动而创建,随着服务器关闭而消失。application对象的生命周期指从application对象创建到服务器关闭这段时间。application对象与线程当多个客户点击同一页面时,JSP引擎为每个客户启动一个线程,这些线程共享同一个application对象由于所有客户共享同一个application 对象,任何客户对application对象中数据的改变都会影响到其它的客户,因此,对该对象的操作需要实现同步处理。application对象的常用方法public void setAttribute(String key,Object obj)application对象可以调用该方法将参数Object指定的对象obj添加到application对象中,并为添加的对象指定一个索引关键字。如果添加的两个对象的关键字相同,则先前添加的对象被清除。public Object getAttibue(String key)获取application对象中含有的关键字key的对象。由于任何对象都可以添加到application对象中,因此用该方法取回对象时,应强制转化为原来的类型。public Enumeration getAttributeNames()application对象条用该方法产生一个枚举对象。该枚举对象使用nextElemets()方法遍历application对象所含有的全部对象。public void removeAttribue(String key)从当前application对象中删除关键字是key的对象。public String getServletInfo()获取Servlet编译器的当前版本信息。注意:注意:有些服务器不直接支持使用application对象,必须先用ServletContext 类声明这个对象,再使用getServletContext()方法对这个application对象初始化小结8继续升级小结5中的实验要求:1.增加一个统计页面人数的功能2.能把所有访问了页面的用户名显示出来page对象page 对象代表JSP页面本身,更确切地说,它代表JSP被转译后的Servlet。其作用相当于java中的this。本章小结本章介绍了JSP内置对象的概念、生命周期、作用范围和对象方法的实际应用。使用JSP内置对象,可以方便操作页面属性和行为,访问页面运行环境,实现页面内、页面间、页面与环境之间的通信和相互操作。心得体会心得体会(1)用内置对象request的getParameter()方法获取url的参数和表单的信息。经过测试,在相同name的情况下,url的参数会优先于表单的参数。(2)汉字处理问题,有的时候在或out.print(“欢迎”)时会出现乱码。其解决的办法就是要对字符串进行编码。以下代码就可以得到正确的输出: 或者(3)Session对象生命周期,例如一个论坛,从你成功登陆到这个论坛,Session对象就产生;一直到你跟服务器断开,比方说关闭浏览器,断网等Session对象就结束。 (4)Application对象与Session对象不同,是多个用户共享此对象,即使用户与服务器断开,Application对象依然存在。直到服务器关闭,才会结束。例如用Application对象可以实现储存网站的访问人数。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号