收藏 分享(赏)

JSP数据库核心技术s.ppt

上传人:hwpkd79526 文档编号:10135683 上传时间:2019-10-13 格式:PPT 页数:79 大小:922KB
下载 相关 举报
JSP数据库核心技术s.ppt_第1页
第1页 / 共79页
JSP数据库核心技术s.ppt_第2页
第2页 / 共79页
JSP数据库核心技术s.ppt_第3页
第3页 / 共79页
JSP数据库核心技术s.ppt_第4页
第4页 / 共79页
JSP数据库核心技术s.ppt_第5页
第5页 / 共79页
点击查看更多>>
资源描述

1、第4章 JSP页面元素与内置对象,内容提要,介绍JSP页面的结构 JSP的编译指令、操作指令和代码 重点介绍JSP常用的六大基本对象: out对象、response对象、request对象、application对象、session对象和cookie对象。,教学目的和重点,教学目的 理解服务器端执行 理解JSP页面结构 介绍JSP常用的五大基本内建对象out对象、response对象、request对象、application对象、session对象的概念和使用。 教学重点和难点 理解服务器端执行 理解JSP页面结构 application对象、session对象,主要内容,理解服务器端执行

2、JSP页面结构 编译指令 操作指令 JSP代码块 注释语句 JSP隐含对象,理解服务器端执行,所有HTML文件可以在资源管理器中双击执行但是JSP文件必须先放到Web服务器中,然后通过HTTP的方式访问。 因为文件内所有内代码是被Web服务器解释执行的。,例题:理解服务器端执行,案例名称:理解服务器端执行 程序名称:4-01.jspvar dnow = new Date();dhours = dnow.getHours();dminutes = dnow.getMinutes();dseconds = dnow.getSeconds();document.write(“浏览器时间:“ + dh

3、ours + “:“ + dminutes + “:“ + dseconds); ,var dnow = new Date();dhours = dnow.getHours();dminutes = dnow.getMinutes();dseconds = dnow.getSeconds();document.write(“浏览器时间:“ + dhours + “:“ + dminutes + “:“ + dseconds); ,理解服务器端执行,JSP页面结构,在一个JSP页面中,主要分为三种元素:编译指令、操作指令和JSP代码。 编译指令告诉JSP的解释引擎(比如:Tomcat),需要在编

4、译时做什么动作,比如引入一个其它的类,设置JSP页面的使用什么语言编码等。 操作指令则是在JSP页面被请求时,动态执行的,比如可以根据某个条件动态跳转到另外一个页面。 JSP代码指的就是我们自己嵌入在JSP页面中的Java代码,这又分为两种: JSP页面中一些变量和方法的声明,使用“”标记。 用“”包含的JSP代码块。,编译指令,可以通过一定的指令,让JSP容器采取必要的动作。 例如:可以指定一个专门的错误处理页面,当JSP页面出现错误时,可以由JSP容器自动地调用错误处理页面。 常用指令: page指令 include指令 taglib指令,编译指令page指令,page指令主要用于定义当前

5、JSP程序的全局属性。 page指令由“”字符串构成的标记符来指定。在标记符中是代码体,包括指令的类型和值。 例如:“”指令告诉JSP容器将java.sql包中的所有类都引入当前的JSP页面。 常用的page指令标记有8个: language、extends、import、errorPage、isErrorPage、contentType、isThreadSafe和session。,编译指令page指令,language设置JSP页面中用到的语言,默认值为“Java”,也是目前唯一有效的设定值。使用的语法是:“”。extends设定目前JSP页面要继承的父类。一般情况下不需要进行设置。在默认情

6、况下,JSP页面的默认父类是HttpJspBase。,编译指令page指令,import设置目前JSP页面中要用到的Java类,这些Java类可能是Sun JDK中的类,也有可能是程序员自己定义的类。 例如:“”。有些类在默认情况下已经被加入到当前JSP页面,而不需要特殊声明,包括四个类:java.lang.*;、java.servlet.*;、java.servlet.jsp.*;和java.servlet.http.*;。,编译指令page指令,errorPage用来设定当JSP页面出现异常(Exception)时,所要转向的页面。如果没有设定,则JSP容器会用默认的当前网页来显示出错信息

7、。 例如:“”isErrorPage用来设定当前的JSP页面是否作为传回错误页面的网页,默认值是“false”。如果设定为“true”,则JSP容器会在当前的页面中生成一个exception对象。,例题:使用errorPage指令捕获异常,案例名称:JSP中Exception的捕捉 程序名称:4-02.jsp,JSP中Exception的捕捉,案例名称:JSP中Exception的捕捉 程序名称:4-03.jsp当前页面是:4-03.jsp ,编译指令page指令,contentType这个属性用来设定传回网页的文件格式(页面响应的MIME,Multipurpose Internet Exte

8、ntion类型)和编码方式。 一般使用:“text/html;charset=GBK”,contentType属性的默认值是“text/html;charset=ISO-8859-1”。isThreadSafe 定义JSP容器执行JSP程序的方式,默认值为“true”,代表JSP容器会以多线程方式运行JSP页面。当设定值为“false”时,JSP容器会以单线程方式运行JSP页面。session定义当前JSP页面中是否要用到session,默认值为“true”。,编译指令include指令,include指令用来指定怎样把另一个文件包含到当前的JSP页面中。当使用该指令时,这个包含的过程就是静态

9、的。 静态的是指被包含的文件将会被插入到JSP文件中,这个文件可以是普通的文本文件、HTML文件、INC文件等,也可以是一个JSP页面。 语法格式: 例如:“”。采用include指令,可以实现JSP页面的模块化,使JSP的开发和维护变得非常简单。,使用include指令引用外部文件,可以减少代码的冗余。例如,有两个JSP页面都需要应用下图所示的网页模板进行布局。,其中,这两个页面中的LOGO图片区、侧栏和页尾的内容都不会发生变化。如果通过基本JSP语句来编写这两个页面,会导致编写的JSP文件出现大量的冗余代码,不仅降低了开发进程而且会给程序的维护带来很大的困难。为了解决该问题,可以将这个复杂

10、的页面分成若干个独立的部分,将相同的部分在单独的JSP文件中进行编写。,编译指令include指令,这样在多个页面中应用上述的页面模板时,就可通过include指令在相应的位置上引入这些文件,从而只需对内容显示区进行编码即可。类似的页面代码如下:, 在这里对内容显示区进行编码,编译指令include指令,编译指令include指令,案例名称:使用include指令 程序名称:4-04.jsp ,编译指令taglib指令,taglib指令允许页面使用标记扩展(定制标记),它命名了标记库。 在JSP页面里遇到定制的标记时,引擎将找到在标记库中的该标记,并且找到要实施的操作实际上是执行Java代码。

11、 taglib指令的语法为:其中: uri:通过在web.xml中的描述找到相应标识的类文件 prefix:该属性指定一个在页面中使用由uri属性指定的标签库的前缀。注意一些特殊的有意义的字符串不能被定义为标识的前缀,如jsp、jspx、java、servlet、sun、sunw等。,编译指令taglib指令,开发者可通过前缀来引用标签库中的标签。以下为一个简单的使用JSTL的代码:,该段代码通过标签将hello值赋给了变量name。,操作指令,JSP编译指令是让JSP容器自动采取的动作,但对于Web开发人员,有些时候想要自己控制JSP页面的运行,这时可以采用JSP中的操作指令。 JSP中的操

12、作指令是指在客户端请求时动态执行的,每次有客户端请求时,可能都会被重新执行一次;而编译指令是在编译时即被JSP容器执行的。 操作指令包括: jsp:include指令、jsp:forward指令、jsp:param指令、jsp:useBean指令、jsp:setProperty指令和jsp:getProperty指令等。,操作指令jsp:include指令,jsp:include标准动作用于在当前的JSP页面中加入静态和动态的资源。 语法格式为:Page属性是所要包含文件的相对路径 flush属性用于定义在被包含文件处理之前JSP的缓存是否被更新。默认为false,如果为true,那么被包含文

13、件处理之前JSP文件原来的缓存都会被重新更新。 jsp:include指令必须以“/”结束。,操作指令jsp:include指令,运行效率比低,但可以动态增加内容。 是动态加载网页,它可以传递参数和数值,而后者是静态加载网页,不可以传递参数和数值,一经编译就不能改变。,操作指令 jsp:forward指令,jsp:forward操作指令用于把当前的JSP页面转发到另一个页面上。 基本语法为: “”, 使用该功能时,用户在浏览器的地址栏中看到的地址是当前网页的地址,而内容是另一个页面的内容。,forward指令实现页面间的跳转,案例名称:使用forward指令实现页面间的跳转 程序名称:4-05

14、.jsp ,操作指令 jsp:plugin指令,jsp:plugin动作用于在浏览器中播放或显示一个对象(通常为Applet,JavaBean)。而这种现实通常需要在浏览器总安装Java插件。 基本语法:Type:定义插入对象的类型,有两个值,分别是Applet和JavaBean。 Code:定义插入对象的类名。,操作指令 jsp:param指令,jsp:param动作用于传递参数,必须配合、与一起使用。 基本语法为:以标记“”开始,以“/”结束。 使用jsp:param操作指令可以在执行jsp:forward操作动作时,追加参数,按照“名字/值”的方式进行传递。,操作指令 jsp:useBe

15、an指令,jsp:useBean指令用来在JSP页面中创建一个JavaBean实例,并指定它的名字以及作用范围。 语法格式:id,用于在所定义的范围中确认JavaBean的变量 Scope,设置JavaBean存在的范围以及id变量名的有效范围 如:,操作指令 jsp:setProperty指令,通常和jsp:useBean一起使用,用来指定JavaBean的某个属性值。,JSP代码,JSP代码主要包括, 声明(Declaration),是JSP页面中一些变量和方法的声明,在声明时,使用“”标记 表达式(Expression),使用“”标记 脚本小程序(Scriptlets),使用“”包含的J

16、SP代码块,JSP代码变量和方法,在“”标记符号之间声明变量和方法,变量类型可以是Java语言允许的任何数据类型。 在JSP页面被编译执行的时候,整个页面被编译成一个类,这些变量是JSP页面类的成员变量。,变量的声明和使用,案例名称:变量的声明和使用 程序名称:4-06.jsp个人访问本站,函数的声明和使用,声明函数,一般会在函数前面加上synchronized关键字,功能是当前一个用户在执行该方法的时候,其他的用户必须等待,直到该用户完成操作。,案例名称:函数的声明和使用 程序名称:4-07.jsp您是第个访问本站的客户。,JSP代码表达式,表达式就是利用变量或方法的值,将运算结果输出到客户

17、端 语法格式:如:表示式形式输出,JSP代码代码块,可以在“”之间插入Java程序片,一个JSP页面可以有许多程序片,这些代码块将被JSP服务器按照顺序执行。 在一个代码块中声明的变量是JSP页面的局部变量,只在当前页面中有效。,JSP代码代码块,案例名称:代码块 程序名称:4-08.jsp个人访问本站,注释语句,注释语句是在程序代码中用来说明程序流程的语句,可以帮助程序员识别和理解程序代码,还可以在调试程序时应用。 在JSP中注释语句有3种: HTML注释语句: JSP注释语句: Script注释语句:,注释语句,可以在HTML注释语句中加入JSP标记进行注释处理,这种注释中动态部分由页面来

18、决定。 JSP注释语句与HTML注释语句不同,它在JSP容器中被识别为注释语句,所以JSP注释语句在从JSP容器传输到客户端的过程中会被过滤掉,而不会传送到客户端。 JSP编译器不会对之间的语句进行编译,它不会显示在客户端的浏览器中,也不会在源代码中看到。,注释语句,个人访问本站,个人访问本站,JSP隐含对象(内建对象)概述,JSP根据Servlet API而提供了某些隐含(内建)对象,这些隐含对象是由JSP容器所创建的,可以在JSP中直接使用的对象,并且不用编写任何额外的代码。 在JSP页面中可以获得的主要的隐含对象为: out对象:功能是把信息回送到客户端的浏览器中。 response对象

19、:功能是处理服务器端对客户端的一些响应。 request对象:功能是用来得到客户端的信息。 application对象:用来保存网站的一些全局变量。 session对象:用来保存单个用户访问时的一些信息。 cookie对象:将服务器端的一些信息写到客户端的浏览器中。 pageContext对象:提供了访问和放置页面中共享数据的方式。,out对象,out对象是javax.servlet.jsp.JspWriter类的一个子类的对象,它的作用是把信息回送到客户端的浏览器中。 out对象的生命周期是当前页面。因此对于每一个JSP页面,都有一个out对象 最常用的方法就是print()和println

20、()。 在使用print()或println()方法时,由于客户端是浏览器,因此向客户端输出时,可以使用HTML中的一些标记,例如:“out.println(“Hello,JSP”);”。 println()方法输出字符串和一个换行符,但是这个换行符被浏览器解析时忽略,要想在页面中换行,需要通过out.println(“”)实现。,out对象,其他一些常用的方法: out.write功能和out.print相同 newLine()的功能是输出一个换行符 out.flush()的功能是输出缓冲的内容 out.close()的功能是关闭输出流,使用out对象,案例名称:使用out对象 程序名称:4

21、-09.jsp“);out.write(“hello“); % ,reponse对象,response对象是一个javax.servlet.http.HttpServletResponse类的子类的对象,它封装了JSP产生的响应。 即JSP会根据客户端的请求建立一个默认的response对象,然后发送信息到客户端以响应客户端的请求。 常用方法: sendRedirect()方法 setContentType()方法 response.setHeader()方法,网页转向,sendRedirect()方法: 方法作用:将当前客户端的请求转到其它页面去。 代码格式:response.sendRed

22、irect(“URL地址“);。 与指令的最大区别:只能使用在本网站内跳转,但可以使用response.sendRedirect 跳转到任何一个地址的页面。,案例名称:网页转向 程序名称:4-10.jsp,动态contentType响应,当请求一个JSP页面的时候,如果该页面用page指令设置页面的contentType属性的值是text/html,那么服务器将把静态页面部分发送给客户端。 setContentType()方法:也可以设置为其他一些相应类型,如:text/plain(文本文件)、application/x-msexcel(Excel文件)和application/msword(

23、Word文件)等。,显示为Word文档,案例名称:显示为Word文档 程序名称:4-11.jspresponse对象 setContentType方法将当前页面保存为word文档吗,HTTP文件头响应,setHeader():用特定的name和value来设置响应头。 可以利用JSP动态改变客户端的响应,使用的语法是“response.setHeader()”,比如让客户端自动每隔5秒刷新一次,,案例名称:动态改变响应头 程序名称:4-12.jsp现在的时间是: ,设置缓冲区,在实际的JSP应用开发中,为了确保显示的正确性,需要将禁用页面缓冲,否则会显示其他用户的一些的信息。为了解决这个问题,

24、需要在每个JSP的页面中添加语句 :,案例名称:设置缓冲区 程序名称:4-13.jsp,request对象,request对象是javax.servlet.HttpServletRequest子类的对象,当客户端请求一个JSP页面时,JSP容器会将客户端的请求信息包装在这个request对象中。 请求信息的内容包括请求的头信息(Header)、系统信息(比如:编码方式)、请求的方式(比如:GET或POST)、请求的参数名称和参数值等信息,得到Form表单的信息,通常我们用得最多的就是客户端请求的参数名称和参数值信息。得到某参数值的语法为:“request.getParameter(“param

25、1”)”。也可以通过request对象的getParameterNames()方法得到客户端传递过来的所有参数名字,如: “Enumeration params = request.getParameterNames();”。,得到Form表单的信息,案例名称:HTML表单 程序名称:4-14.html姓名:密码:,读取表单数据,案例名称:读取表单数据 程序名称:4-15.jsp姓名: 密码:,第二种读取值的方法是利用集合,案例名称:使用request对象获取用户提交数据的所有参数名字和值 程序名称:4-17.jsp“);out.println(“Values: “ + request.get

26、Parameter(current_param) + “); %,得到客户的信息,利用request对象可以获得客户提交的信息,比如:JSP文件目录、客户端的地址、以及服务器的端口等,,案例名称:获得客户的信息 程序名称:4-18.jsp,汉字问题两种解决方法,当利用request.getParameter得到Form种元素的时候,默认的情况字符编码为ISO-8859-1,这种编码不能正确的显示汉字。目前有两种解决方法: 一种是在执行操作之前,设置request的编码格式,语法是:“request.setCharacterEncoding(“GBK“);” 另一种方法是转换字符编码,调查表信息

27、的读取,案例名称:调查表输入页面 程序名称:input.htm,调查表信息的读取,案例名称:调查表处理页面 程序名称:handle.jsp,application对象,站点所有的用户公用一个application对象,当站点服务器开启的时候,application就被创建,直到网站关闭。利用application这一特性,可以方便地创建聊天室和网站计数器等常用站点应用程序。,application的自定义属性,public void setAttribute(String key, Object obj) 将对象obj添加到application对象中,并为添加的对象添加一个索引关键字key。

28、public Object getAttribute(String key) 获取application对象中含有关键字key的对象。由于任何对象都可以添加到application中,因此用此方法取回对象的时候,需要强制转化为原来的类型。,自定义属性,案例名称:自定义属性 程序名称:4-19.jsp,自定义属性,案例名称:自定义属性 程序名称:4-20.jsp,实现聊天室,聊天室允许多用户实时进行信息交流,所有用户可以看到彼此的信息,这与application对象的特点正好符合,所以可以方便地利用application实现聊天室。,案例名称:简易聊天室 程序名称:4-21.jsp,网页计数器,

29、网页计数器是application 对象的又一个用途,因为application是所有的用户所共有的,所以可以存储计数器的值,当有新用户访问网页时自动增加计数器的值。,案例名称:网页计数器版本一 程序名称:CountV1.jsp,案例名称:网页计数器版本二 程序名称:CountV2.asp,session对象,session对象是java.servlet.http.HttpSession类的子类的对象,它表示当前的用户会话信息。在session中保存的对象在当前用户连接的所有页面中都是可以被访问到的。可以使用Session 对象存储用户登录网站时候的信息。当用户在页面之间跳转时,存储在Sess

30、ion对象中的变量不会被清除。,对session的理解,当用户登陆网站时,系统会自动分配给用户一个session。可以使用getId() 得到该session的ID。 案例名称:使用ID属性 程序名称:4-22.jsp你的session ID:,自定义属性,对于session对象中,经常用到的方法是setAttribute()、getAttribute()和removeAttribute()。分别可以对session中的对象进行存取和删除操作。session对象的主要用途也是保存信息,当用户第一次到达网站时,系统为其分配一个session。session和application一样也使用自己的

31、自定义属性,使用session的自定义属性,案例名称:使用session的自定义属性 程序名称:4-23.jsp下一页,使用session的自定义属性,案例名称:使用session的自定义属性 程序名称:4-24.jsp下一页,简易session版购物车,利用session保存用户选购的商品信息,本购物车程序包含三个程序: (1)buy1.jsp:购物网页一。 (2)buy2.jsp:购物网页二。 (3)display.jsp:查看购物车程序。,简易session版购物车,案例名称:购物网页一 程序名称:buy1.jsp,案例名称:购物网页二 程序名称:buy2.jsp,案例名称:显示购物车程序 程序名称:display.jsp,cookie对象,Cookie对象是由Web服务器端产生后被保存到浏览器中的信息。Cookie对象可以用来保存一些小量的信息在浏览器中。目前主流的浏览器(Internet Explorer和Netscape Navigator)都支持Cookie。可以将Cookie写到浏览器中,让浏览器来保存Cookie的值。,写入Cookie,案例名称:写入Cookie 程序名称:4-25.jsp写入Cookie 查看,读出Cookie,案例名称:读出Cookie 程序名称:4-26.jsp读出Cookie,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报