2.jsp基础和内置对象.ppt

上传人:sccc 文档编号:6132085 上传时间:2023-09-27 格式:PPT 页数:48 大小:8.75MB
返回 下载 相关 举报
2.jsp基础和内置对象.ppt_第1页
第1页 / 共48页
2.jsp基础和内置对象.ppt_第2页
第2页 / 共48页
2.jsp基础和内置对象.ppt_第3页
第3页 / 共48页
2.jsp基础和内置对象.ppt_第4页
第4页 / 共48页
2.jsp基础和内置对象.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《2.jsp基础和内置对象.ppt》由会员分享,可在线阅读,更多相关《2.jsp基础和内置对象.ppt(48页珍藏版)》请在三一办公上搜索。

1、JSP简介 JSP的优势 JSP页面构成 JSP的生命周期 JSP的处理过程 JSP异常处理机制,本章内容,1.JSP简介,以下的Servlet代码有何缺陷?,.out.print(部门信息管理);out.print();out.print();out.print(在线招聘系统注册);out.print(“”);.,所有的内容必须在Java代码中完成,包括HTML代码同样需要嵌入到程序代码中来生成静态内容,不利于分工,因HTML代码出现的小问题也需要由熟悉Java Servlet的程序员来解决,1.1 为什么需要JSP?,JSP(Java Server Pages)是指:在HTML中嵌入Jav

2、a脚本语言由应用服务器中的JSP引擎来编译和执行嵌入的Java脚本语言命令将生成的整个页面信息返回给客户端,1.2 什么是JSP,JSP页面,数据库服务器,应用服务器,客户端,Java脚本语言,1,2,3,4,JSP技术解决界面显示问题 Servlet主要解决内部逻辑问题,1.3 JSP与Servlet的适用场合,商品显示列表功能,内容动态生成与静态表示分离可重复使用的组件简化页面开发跨平台,2.JSP的优势,JSP基础入门今天是:,3.JSP页面构成,静态内容,指 令,表达式,Scriptlet,HTML静态文本,以“”结束,例如:,声 明,标准动作,以“”结束,例如:,注释,JSP页面构成

3、,输出当前日期你好,jack!今天是,指令,静态内容,Scriptlet,表达式,注释,在浏览器中观看运行结果,JSP页面构成,查看网页源文件,可以通过源代码查看HTML注释的内容,所有注释内容都不可见,合理、详细的注释有利于代码后期的维护和阅读在JSP文件的编写过程中,共有3种注释方法HTML的注释方法:JSP注释标记:在JSP脚本中使用,JSP页面构成,缺点:不安全,加重了网络传输的负担,页面初始化处理客户端请求并做出应答 退出JSP,4.JSP的生命周期,该方法中可以进行一些资源的分配,或者初始化变量和属性,JSP处理客户请求并应答时会调用_jspService()方法,JSP在页面结束

4、之前(主要是关闭服务器)会调用_jspDestroy()方法,服务器根据接收到的客户请求来加载被请求的JSP文件Web服务器中的JSP引擎将被加载的JSP文件转化为Servlet代码JSP引擎将生成的Servlet代码编译成class文件服务器执行这个class文件服务器将执行结果发送到浏览器进行显示,5.JSP的处理过程,客户端,JSP文件,Servlet文件,class文件,Servlet实例,JSP容器,JSP执行过程,6.JSP异常处理机制,不捕获异常时的显示结果,软件用户感到突然,不知所措,改进之后显示友好的界面,6.1 在Java Web中的异常,出现错误页面的异常通常是同一种类型

5、,为每个页面书写相同的捕获异常代码,不利于代码重用有一些异常的处理无法通过页面设置完成,例如:用户输入网站中一个不存在的文件,这时应告诉用户文件不存在,6.2 Java Web处理异常步骤,在Web应用程序中trycatch捕获异常有什么缺陷?,如何解决这些问题?,Java Web处理异常步骤,java.lang.NullPointerException/nullPointer.jsp.500/500.jsp.,1.配置web.xml,为每个类型配置异常处理,为每个错误代码配置异常处理,400错误:错误请求401错误:访问被拒绝403错误:文件被禁止访问404错误:文件没有找到405错误:文件

6、在运行过程中发生末知错误,Java Web处理异常步骤,空指针错误 HIS系统 对象没有实例化,2.编写异常处理页面,加入isErrorPage page指令,3.编写测试页面,4.运行结果,JSP表达式表达式(Expression)用于向页面中输出信息 格式:JSP表达式普通变量含返回值的方法Java表达式,1.1 JSP表达式,普通变量可以返回值的方法Java表达式,JSP表达式,产生的随机变量值是:,/定义一个Test类public class Test/定义一个返回值的方法doWithpublic static String doWith(String people)return+pe

7、ople+;本次幸运之星是:,=家家乐超市收银系统=应付款:=家家乐超市收银系统=,表达式可以应用在JSP页面中的如下位置 生成动态的链接地址 使form表单提交到不同的页面为通过循环语句生成的元素命名,JSP表达式,链接到,链接到,”,file:”,file1:file2:,声明标识格式:注意几点在“%”与“!”之间无须加空格 声明的语法与在Java语言中声明变量和方法时一样 在页面中通过“声明标识”声明的变量和方法,在整个页面内都有效,它们将成为JSP页面被转换为类文件中的属性和方法,并且会被多个线程即多个用户共享 变量或方法的生命周期从创建到服务器关闭后结束,1.2 声明标识,实现一个简

8、单的网页计数器,1.2 声明标识,网页计数器 你是第位访客,关闭浏览器,关闭Tomcat,如果把代码修改如下:你是第位访客能实现网页计数器吗?,脚本程序(Scriptlet)格式:注意它在形式上与表达式的区别在于“”中没有“=”中间是一段Java代码,不是表达式,每条Java语句要以分号结尾位于Scriptlet中定义的变量和方法不会被其他线程共享,当前用户对该变量的操作不会影响到其它用户 当变量所在的页面关闭后就会被销毁,1.3 脚本程序(Scriptlet),通过“声明标识”声明的变量与位于Scriptlet中变量的区别,脚本程序(Scriptlet),num的值是:num1的值是:,第一

9、次运行结果,刷新3次运行结果,什么是指令标识通过指令标识可以使服务器按照指令的设置来执行动作通过指令可设置在整个JSP页面范围内有效的属性在一个指令中可以设置多个属性,这些属性的设置可以影响到整个页面 page指令page指令称为页面指令,利用页面指令可以定义在整个JSP页面范围内有效的属性 include指令include指令用于在运行时将HTML文件或JSP页面嵌入到另一个JSP页面 taglib指令taglib指令的作用是在JSP页面中,将标签库描述符文件(TLD)引到该页面中,并设置前缀,利用标签的前缀去使用标签库描述符文件中的标签,2.JSP指令标识,Page指令格式:page指令可

10、以放在JSP页面中的任意位置,但习惯上放在文件的开始部分,提高程序的可读性 page指令具有多种属性,通过这些属性的设置可以影响到当前的JSP页面,2.1 Page指令,2.2 include指令,include指令格式:include指令只支持file属性,该属性指定要在编译时嵌入的文件名 页面的名称应当在编译时已知,文件的内容将被嵌入include指令所在的 JSP页面为什么要使用include指令使用include指令引用外部文件,可减少代码冗余,遇到这样的页面模板怎么办?,在JSP中,因为对部分Java对象做了声明,因此即使不声明这些对象,也可以使用。这些内建对象在JSP页面初始化时生

11、成,由容器实现和管理,不需要由JSP开发人员进行实例化。在所有的JSP页面中都能使用这些内建对象,起到简化页面的作用。,1.JSP内建对象概述,out对象主要用来向客户端输出各种数据类型的内容,并且管理应用服务器上的输出缓冲区。缓冲区默认值一般是8KB,可以通过页面指令page来改变默认值。在使用out对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他输出让出缓冲空间。out对象被封装为javax.servlet.jsp.JspWriter类的对象,在实际应用中out对象会通过JSP容器变换为java.io.PrintWriter类的对象。out对象的常用方法:,2.

12、输入和输出对象,2.1 out输出对象,out对象的print()方法:out对象的print()方法是把数据输出到页面。输出的数据可以是整型、字符型、布尔型等。print()方法既可输出单纯的文字,例如:“你好”,也可以输出HTML标记。,out输出对象,out.print()方法示例);out.print(我是一只);out.print();out.print(小);out.print(小);out.print(小);out.print();out.print(鸟);out.print(想要飞也飞不高);out.print(=out.print()方法示例=);%,out对象的clearB

13、uffer()方法:out对象的clearBuffer()方法可清除缓冲区数据。,out输出对象,);out.print(hello!hello!hello!hello!);out.print();out.clearBuffer();%,没有任何输出结果,out对象的flush()方法:out对象的flush()方法可把缓冲区中的数据输出到网页上。数据送入缓冲区后,需要清除缓冲区中的数据,但在清除缓冲区前,还需将缓冲区数据送入页面中显示,此时可使用flush()方法。,out输出对象,);out.print(hello!hello!hello!hello!);out.print();out.f

14、lush();/在清除缓冲区之前,先输出缓冲区的数据 out.clearBuffer();/清空缓冲区%,out对象的close()方法:out对象的close()方法是关闭输出流。如果out对象的输出流已经关闭,则不能再向页面输出数据。,out输出对象,=1;j-)out.print();for(int j=1;j);out.print(ok);out.print(输出流已经关闭!);out.close();/关闭输出流 out.print(再次输入数据,该数据不会显示);%,2.2 request对象,request对象表示客户端的请求,包含了所有的请求信息。例如:请求的来源,Cookie

15、s和客户端请求相关的数据。可以在JSP页面中直接使用request对象,通过它的方法来获取请求相关数据。request对象常用方法:,request对象,request对象应用举例:,用 户 名:性别:男 女,学历:高中 大专 本科 研究生 认知途径:报纸 网络 媒体 其它,./获取提交过来的用户名 String uid=new String(request.getParameter(txtUid).getBytes(iso-8859-1);/获取性别 String sex=new String(request.getParameter(radSex).getBytes(iso-8859-1)

16、;/获取学历 String graduate=new String(request.getParameter(selGraduate).getBytes(iso-8859-1);/获取认知途径 String cognitions=request.getParameterValues(chkCognition);/获取服务器名 String serviceName=request.getServerName();/获取IP地址 String ip=request.getRemoteAddr();.,2.3 response对象,response内建对象处理JSP生成的响应,然后将响应结果发送给客

17、户端。response对象常用方法:,response对象,response对象应用举例实现将表格中的内容,导入excel。实现浏览器定时刷新。,条码 名称 单价 出产地,62109876543 牙膏¥3.4 上海 62109876786 手机¥500 深圳,3.作用域通信对象,session对象表示用户的会话状况。用此项机制可以轻易识别每一个用户,能保存和跟踪用户的会话状态。购物车最常使用session的概念,当用户把商品放入购物车时,再去添加另外的商品到购物车时,之前选购的商品仍然在购物车内,且用户不用反复去做身份验证。如果用户关闭浏览器,则会终止会话。session对象常用方法:,3.1

18、 session对象,session对象,用session对象重构购物车为购物车增加退回商品、减少数量、清空购物车等功能。运行效果:,session对象,编写产生商品并放入购物车的页面putCarjsp,%/如果用户点击放入商品到购物车按if(request.getParameter(flag)!=null)Map car=(Map)session.getAttribute(car);/从session中获取car(购物车对象)if(car=null)/如果购物车为空 car=new HashMap();/创建一个购物车对象session.setAttribute(car,car);/把购物车

19、放入session中/获取10之内的随机数,来模拟商品Integer shop=new Integer(new Random().nextInt(10);,if(car.containsKey(shop)/如果产生的商品已经存在于购物中 CarItem carItem=(CarItem)car.get(shop);/取出购物车项carItem.setQuantity(carItem.getQuantity()+1);/修改数量加1 else/如果不存在 CarItem carItem=new CarItem(shop,1);/则创建一个购物车项car.put(shop,carItem);/把购

20、物车项放入购物车中%放入购物车进入购物车,session对象,编写显示购物车showCar.jsp页面,购物车中的商品如下:商品数量操作,退回商品 减少数量 清空购物车 返回,session对象,编写用于实现“退回商品”功能的Serlvet命名为BackShopServlet.java,/获取要退回的商品int shop=Integer.parseInt(request.getParameter(shop);/从session中获取购物车Map car=(Map)request.getSession().getAttribute(car);/从购物车中删除该商品car.remove(shop)

21、;/转发到显示购物车页面request.getRequestDispatcher(showCar.jsp).forward(request,response);,编写用于实现“减少数量”功能的Servlet命名为DecreaseServlet.java,int shop=Integer.parseInt(request.getParameter(shop);/获取要退回的商品Map car=(Map)request.getSession().getAttribute(car);/从session中获取购物车CarItem carItem=(CarItem)car.get(shop);/获取购物

22、车项if(carItem.getQuantity()1)/如果数量大于1 carItem.setQuantity(carItem.getQuantity()-1);/则把数量减少1 else/否则数量等于1,直接在购物车中删除 car.remove(shop);/转发到显示购物车页面 request.getRequestDispatcher(showCar.jsp).forward(request,response);,session对象,编写用于实现“清空购物车”功能的Servlet命名为ClearCarServlet.java,public class ClearCarServlet ex

23、tends HttpServlet public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException this.doPost(request,response);public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException response.setContentType(text/ht

24、ml;charset=gbk);PrintWriter out=response.getWriter();/移除session中的购物车 request.getSession().removeAttribute(car);/转发到显示购物车页面request.getRequestDispatcher(showCar.jsp).forward(request,response);,3.2 application对象,application对象用于保存所有应用系统中的公有数据,服务器启动并且自动创建application对象。只要没有关闭服务器,application对象将一直存在,所有用户可以共

25、享application对象。session对象和用户会话相关,不同用户的session是完全不同的对象,而用户的application对象都是相同的一个对象,即共享这个内建的application对象。application对象常用方法:,application对象,application对象实现网页计数器,+number+次);/输出目前的访问次数%,第一次运行该页面时,关闭浏览器再次运行,关闭Web服务器再次运行,用application对象完成的网页计数器在Web服务器关闭或重启之后数据会丢失,怎样去实现一个真正的网页计数器?,3.3 pageContext对象,pageContext

26、对象使用户可以访问页面作用域中定义的所有内建对象。pageContext对象提供方法以访问内建对象在页面上定义的所有属性。pageContext对象作用范围仅仅在页面内。pageContext对象常用方法:,pageContext对象,在一个页面中分别完成“会话计数”、“应用程序计数”、“页面计数”,%/初始化页面计数器 if(pageContext.getAttribute(pageCount)=null)pageContext.setAttribute(pageCount,new Integer(0);/初始化会话计数器 if(session.getAttribute(sessionCou

27、nt)=null)session.setAttribute(sessionCount,new Integer(0);/初始化应用程序计数器 if(application.getAttribute(appCount)=null)application.setAttribute(appCount,new Integer(0);,/获取页面计数器,并加1 Integer pageCount=(Integer)pageContext.getAttribute(pageCount);pageContext.setAttribute(pageCount,new Integer(pageCount.intV

28、alue()+1);/获取会话计数器,并加1 Integer sessionCount=(Integer)session.getAttribute(sessionCount);session.setAttribute(sessionCount,new Integer(sessionCount.intValue()+1);/获取应用程序计数器,并加1 Integer appCount=(Integer)application.getAttribute(appCount);application.setAttribute(appCount,new Integer(appCount.intValue

29、()+1);%,使用application、session、pageContext对象显示会话计数 页面计数:会话计数:应用程序计数:当前时间:,第一次运行该页面时,刷新页面后,关闭浏览器再次运行,4.Servlet对象,page对象是为了执行当前页面应答请求而设置的Servlet类的实体。page对象表示页面本身,只有在JSP页面内才是合法的。page内建对象本质上包含当前Servlet接口引用的变量,可以看作是this变量的别名。page对象应用举例:,4.1 page对象,4.2 config对象,config对象存储Servlet的一些初始信息。config对象是javax.servl

30、et.ServletConfig接口的一个实例。ServletConfig接口提供方法以检索Servlet初始化参数。config对象表示编译JSP页面的Servlet初始化数据的配置。config对象读取初始化参数配置数据应用举例:,test/configDemo.jsp title 在线音乐点歌台 test/configDemo.jsp,Web.xml配置信息,+config.getInitParameter(title)+);%,JSP页面代码,运行结果,5.错误对象,错误对象用于处理JSP页面中的错误,错误对象只提供了一个称为exception的对象,利用exception对象处理执行过程中引发的异常。JSP中page指令的isErrorPage属性用于指定错误页面。错误对象应用举例:,下面将要发生错误!结果:,编写发生异常的JSP页面,获取发生的错误!+errorMessage+);%,编写捕获异常的JSP页面,

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号