java ee 5编程(郭庆)j2ee-5-第5章j.ppt_第1页
java ee 5编程(郭庆)j2ee-5-第5章j.ppt_第2页
java ee 5编程(郭庆)j2ee-5-第5章j.ppt_第3页
java ee 5编程(郭庆)j2ee-5-第5章j.ppt_第4页
java ee 5编程(郭庆)j2ee-5-第5章j.ppt_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章 JSP,讲课教师:郭庆 EMAIL:,主要内容,5.1 JSP简介 5.2 JSP结构 5.3 JSP注释 5.4 JSP指令 5.5 JSP脚本元素 5.6 JSP动作元素 5.7 JSP内建对象 5.8 JSP四种属性范围,5.1.1 什么是JSP,JSP:Java Server Pages Web层组件 创建动态网页,为什么不用Servlet?,5.1.2 第一个JSP,在MyEclipse中创建第一个JSP,文件名是helloworld.jsp,客户端浏览器访问该文件会显示HelloWorld!,5.1.3 JSP的优点,Write once,run anywhere 跨平台 跨Web服务器 强大的组件(Java Bean)支持功能 可伸缩性好:能够进行web应用的服务器集群和负载均衡 强大的IDE支持: Eclipse+MyEclipse/netBeans Jbuilder,5.1.4 JSP执行过程,JSP,执行过程,JSP到.java到.class的演示,查看HelloWorld.jsp的java文件和class文件 位置:%Tomcat%workCatalinalocalhost你的web程序名称文件夹orgapachejsp,5.2 JSP结构,从刚才我们创建的HelloWorld.jsp文件我们可以看出,一个JSP文件是由2部分组成的: 模板元素 Html元素或xml元素 JSP元素:在中的内容,说明,HTML元素大家请自己参考相关书籍或文档,我们主要讲解JSP元素。 JSP元素分为4大类:注释;指令;脚本元素;动作元素。后面我们一一讲解主要部分。,5.3 JSP注释,注释有4种 HTML注释; HTML结合JSP表达式的注释; JSP注释 脚本段注释:即Java注释, ,5.4 JSP指令,JSP指令分3种: 页面指令即page指令; 包含指令即include指令; 标签库指令即taglib指令。 这三种指令格式是:。XXX是page、include、taglib之一。,5.4.1 page指令语法格式,“Page”指令用于定义JSP文件的全局属性。 JSP 语法格式如下: % page language=“java“ extends=“package.class“ import=“package.class | package.*,.“ session=“true | false“ buffer=“none | 8kb | sizekb“ ,Page指令-续1, autoFlush=“true | false“ isThreadSafe=“true | false“ info=“text“ errorPage=“relativeURL“ contentType=“mimeType ;charset=characterSet“ | “text/html ; charset=ISO-8859-1“ isErrorPage=“true | false“ %,Page指令-续2,属性: 1language=“java“ 声明jsp中可以使用的脚本语言的种类,目前只能用“java“ 。 2.import=“package.class | package.* ,.“ 需要导入的Java包的列表,这些包作用于程序段,表达式,以及声明。下面的包在JSP编译时已经导入了,所以就不需要再指明了: java.lang.* javax.servlet.* javax.servlet.jsp.* javax.servlet.http.*,Page指令-续3,3errorPage=“relativeURL“ 设置处理异常事件的JSP文件。 4isErrorPage=“true | false“ 设置此页是否为出错页,如果被设置为true,你就能使用exception对象,Page指令-续4, -以UTF-8编码来存储当前的jsp文件。Eclipse会根据这个编码格式保存文件。并编译jsp文件,包括里面的汉字。 autoFlush=“true|false“-指定是否当缓存填满时自动刷新,输出缓存中的内容。 如果为true,则自动刷新。 否则,当缓存填满后,可能会出现严重的错误。当你把buffer设置为none时,你就不能将autoFlush设置为false。,Page指令-续5,info=“text“-指定一段字符,并插入到JSP文件中,并可以通过Servlet.getServletInfo()方法得到。 isThreadSafe=“true|false“-指定JSP页面是否支持多线程访问。默认值是ture,表示可以同时处理多个客户请求, 但是你应该在JSP页面中添加处理多线程的同步控制代码。如果设置为false,JSP页面在一个时刻就只能响应一个请求。,page指令详说,“”指令作用于整个JSP页面,同样包括静态的包含文件。但是“”指令不能作用于动态的包含文件,比如 “”。 可以在一个页面中用上多个“”指令,但是其中的属性只能用一次,不过也有例外,那就是import属性。因为import属性和Java中的import语句类似(参照Java Language,import语句引入得是Java语言中的类),所以此属性就能多用几次。 无论把“”指令放在JSP的文件的哪个地方,它的作用范围都是整个JSP页面。不过,为了JSP程序的可读性,以及好的编程习惯,最好还是把它放在JSP文件的顶部。,page指令(testpage.jsp), test3 Test for using Page. ,5.4.2 包含指令include,include指令:向当前页中插入一个静态文件的内容。 JSP 语法格式如下: ,被包含的文件在翻译阶段时被包含进当前的jsp文件-即在.java文件中把被包含的文件包含进来。 relativeURL与当前的jsp页面有关:如果被包含的jsp文件是以文件名/目录名开头,那么路径就是正在使用的当前jsp文件的路径;如果以/开头,表示的是当前应用路径即webapps/xxx应用。,一个包含指令的例子,主文件是include.jsp 被包含的文件是included.jsp。 使用MyEclipse演示,5.4.3 taglib指令,使用标签库指令的JSP语法 用于引入定制标签库。我们会在以后使用标签库时讲解,5.5 JSP脚本元素,脚本元素分为3种:脚本段;表达式;声明。 脚本段就是Java代码片段 语法格式如下, 或,5.5 JSP脚本元素 续1,表达式:是符合Java语法的合法表达式,作用:在当前位置显示表达式的结果。语法格式如下:,5.5 JSP脚本元素 续2,声明:在JSP中,声明是一段Java代码,用来声明变量和方法,声明后的变量和方法可在该JSP文件的任何地方使用 注意:声明的变量属于实例变量。 JSP 语法格式如下,案例script.jsp :使用声明、脚本段、表达式, i= z= ,5.6 JSP动作元素,JSP动作元素有很多,常用的有: 后3种在JSP使用JavaBean时讲解。下面我们先看看和。,5.6.1 ,:将请求转发到另外的jsp、Sevlet、或静态资源文件如html等。 语法格式如下:,1“ / 2“ “ / (“”指可以有多个“”标记。),说明,“”属于服务器端的跳转 从一个JSP文件向另一个文件传递一个包含用户请求的request对象。“”标签以后的代码,将不能执行。 下面的例子使用“”标签从当前页面original.jsp跳转到另一个页面destination.jsp。,5.6.2 ,功能:元素允许你包含动态和静态文件,这两种产生的结果是不尽相同的。,语法: ” flush=“true | false ” / 或 ” flush=“true | false” ” / * ,include两种用法的区别,执行时间上 是在翻译阶段执行 在请求处理阶段执行。 二是引入内容的不同: 引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起。 引入执行页面或Servlet所生成的应答文本。,5.7 JSP内建对象,为了简化页面的快速开发,JSP提供了许多内容对象如request等,这些对象不需要JSP编程者实例化,它们是由容器实现和管理的,我们称为内建对象。 常用的内建对象有request对象、response对象、out对象、pageContext对象、session对象、application对象、config对象、page对象、exception对象。 所有的隐含对象只能用于脚本段代码或表达式,不能在JSP声明中使用。,5.7.1 out对象,out对象用于向客户端输出数据。它有多个重载的方法可以输出基本数据类型(boolean、char、char、double、float、int、long)、String类型、Object类型等。 使用语法格式: out.print(boolean)或out.println(boolean);这两个方法的区别是第一个只是输出数据,第二个输出数据后会再后面加上一个换行符。 但是该换行符不能被浏览器解析,要真正换行需要使用out.println(“”)来实现。,5.7.2 request对象,request对象代表请求对象,客户端的请求信息被Web容器封装到该对象中。 用MyEclipse创建useRequst.jsp列出了其常用方法,request对象获取表单数据,设计用户注册页面获取表单数据,注册页面register.html 接收用户注册页面数据进行处理的页面register_check.jsp,七、get请求出现中文乱码问题解决,如上述代码如果我们在浏览器地址栏中输入: http:/localhost:8080/jsp/useRequest.jsp?name=郭庆 ,那么浏览器中的name参数是乱码。解决办法: 由于在浏览器地址栏中输入url请求属于get请求(另外超链接也属于get请求),而Tomcat对于get请求默认是ISO8859-1编码,故需要修改Tomcat的配置文件。打开tomcat的conf目录下的server.xml文件,找到如下区块,,七、get请求出现中文乱码问题解决 续1,修改Connector结点为:,重启Tomcat,再测试,八、超链接中文乱码问题,刚才提到超链接中传递参数含有中文产生乱码属于get请求方式。解决办法除了修改上述Tomcat的server.xml文件外还需要在发送请求的文件如html或jsp中设置浏览器的发送请求的编码格式为gbk。 以下是案例程序。我们有一个href.html使用超链接,将数据提交到另一个href.jsp,post请求中的乱码问题,request对象设置请求编码格式来解决:request.setCharacterEncoding(“gbk“); 这样能解决post请求中的乱码(另外可以创建过滤器来对请求设置统一的编码,请参考后面的过滤器章节)。,案例: postLuanMa.html 、postLuanMa.jsp,5.7.3 response对象,response对象代表服务器发送到客户端的响应,主要功能 服务器端向客户端发送信息,例如设置HTTP的头信息、设置Cookie信息、重定向,一、response对象设置头信息,例如最有用的一个头信息是刷新refresh; 设置方式:response.setHeader(“头信息内容”,”头信息参数”);,现在许多网站使用了2秒钟后跳转到某个页面去,二、response对象进行重定向,使用格式:response.sendRedirect(“跳转路径”); 注意:重定向属于客户端跳转,是客户端重写向服务器发送请求,原来的请求丢失;属于服务器端的跳转,原来的请求不会丢失。,重定向案例介绍,使用重定向的案例如下 我们有2个页面:redirect1.jsp,redirect2.jsp, redirect1.jsp中的请求参数有name,重定向到redirect2.jsp,在redirect2.jsp中尝试取得name将得到空,三、使用response设置cookie,HTTP协议是无状态的,这表示它在一个请求结束、另一个请求开始时,不会记住前一个请求的所有信息。Web应用通常要处理用户的多个连续的请求,而且还要记住前一个请求的一切信息,这就是常常提到的用户会话跟踪。能实现用户会话跟踪的方式有session与cookie,另外还有隐藏域和URL重写。 cookie保存在客户端的硬盘上,是明码信息,安全性不好。 下面我们编码实现通过response对象和request对象使用cookie来记录用户上次登录时间。 注意:此程序需要在浏览器中设置允许使用cookie才能运行,否则得不到cookies会出错。,5.7.4 session对象,除了cookie外,session能实现用户会话跟踪。通常我们在访问某个Web站点时,可能多次刷新某个页面,也可能访问了该站点的第一个页面接着访问其他页面。由于HTTP协议是无状态的,故Web服务器无法得知是哪个用户在访问哪个页面。session可以解决此问题。 JSP中的session对象是javax.servlet.http.HttpSession接口的实例化对象。,session对象实现用户会话跟踪的原理,当客户(浏览器如IE)访问服务器上的一个JSP页面时,JSP引擎(如Tomcat)会产生一个session对象(此对象在服务器上内存中),该session对象有一个String类型的ID号,能唯一区分该session。JSP引擎同时将这个ID号发送到客户端,如果客户端允许使用cookie就将ID放在cookie中;客户端不允许使用cookie就将该ID放在URL的结尾。这样session对象与客户之间建立了一对一的关系。当客户再访问该服务器的其他页面时,不再给客户分配新的session对象,直到客户浏览器关闭或者session过期或者调用了session对象的invalidate方法。当客户重新打开浏览器再次访问该服务器时,服务器会为该客户重新在创建一个新的session对象。,session对象的常用方法的案例, id= isNewSession= name= originalMaxInactiveInterval= newMaxInactiveInterval= ,session对象 续,每个JSP支持session,也可以用如下语句显示声明支持session: 如果某个JSP页面不参与会话,则将true改为false。 session还有一个方法,invalidate方法:该方法关闭会话释放所占资源。用于网站登录后的注销功能调用。,5.7.5 application对象,application对象实现了javax.servlet.ServletContext,;这个对象被某个Web应用的所有的客户共享。当Web服务器启动后某个Web应用开始工作时由Web容器自动创建该对象。 该对象常用方法: public void setAttribute(String key, Object obj); public Object getAttribute(String key); application对象主要应用:在线人员统计;在线人员名单列表。 如果要释放application占用的资源,只能重启Web服务器。,5.7.6 pageContext对象,pageContext对象属于javax.servlet.jsp.pageContext接口类型,主要功能是管理JSP中特殊的可见部分中已命名的对象的访问。该对象是容器创建的,在JSP中可以直接使用。 该对象的常用方法有: forward(String anotherPage); getAttribute(String key,int scope);/得到某个范围内存放的对象,通过存放时的名字 setAttribute(String key,Object obj,int scope);/在某个范围内存放一个对象及其名字 getRequest();/得到当前的request对象 getResponse();/得到当前的response对象 removeAttribute(String key,int scope);/删除某个范围内存放的对象,通过存放时的名字,5.8 JSP四种属性范围,pageContext对象、request对象、session对象、application对象时,这四个对象都能保存其他对象即这四个对象类似容器能存储其他对象。 在JSP中,可以将属性对象通过上述对象保存,这四个对象保存属性对象的范围分别是:page、request、session、application。,page范围,page范围:在当前的JSP页面有效;必须通过pageContext来保存。 格式: pag

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论