2.jsp基础和内置对象

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

《2.jsp基础和内置对象》由会员分享,可在线阅读,更多相关《2.jsp基础和内置对象(48页珍藏版)》请在金锄头文库上搜索。

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

2、er Pages)是指:在HTML中嵌入Java脚本语言由应用服务器中的JSP引擎来编译和执行嵌入的Java脚本语言命令将生成的整个页面信息返回给客户端1.2 1.2 什么是什么是JSPJSPJSP页面页面 数据库数据库服务器服务器应用应用服务器服务器编译、执行编译、执行客户端客户端嵌入嵌入Java脚本语言脚本语言 1234返回页面信息返回页面信息JSP技术解决界面显示问题 Servlet主要解决内部逻辑问题1.3 JSP1.3 JSP与与ServletServlet的适用场合的适用场合商品显示列表功能 内容动态生成与静态表示分离可重复使用的组件简化页面开发跨平台 2. JSP2. JSP的优

3、势的优势JSP基础入门今天是:3.JSP3.JSP页面构成页面构成静态内容指 令表达式ScriptletHTML静态文本以“ ” 结束,例如:声 明标准动作以“jsp:动作名”开始,以“”结束,例如:注释JSPJSP页面构成页面构成输出当前日期你好,jack!今天是指令静态内容Scriptlet表达式注释在浏览器中观看运行结果JSPJSP页面构成页面构成u查看网页源文件可以通过源代码查看HTML注释的内容所有注释内容都不可见合理、详细的注释有利于代码后期的维护和阅读在JSP文件的编写过程中,共有3种注释方法HTML的注释方法:JSP注释标记:在JSP脚本中使用 JSPJSP页面构成页面构成缺点

4、:不安全,加重了网络传输的负担页面初始化处理客户端请求并做出应答 退出JSP 4.JSP4.JSP的生命周期的生命周期该方法中可以进行一些资源的分配,或者初始化变量和属性 JSP处理客户请求并应答时会调用_jspService()方法JSP在页面结束之前(主要是关闭服务器)会调用_jspDestroy()方法 服务器根据接收到的客户请求来加载被请求的JSP文件Web服务器中的JSP引擎将被加载的JSP文件转化为Servlet代码JSP引擎将生成的Servlet代码编译成class文件服务器执行这个class文件服务器将执行结果发送到浏览器进行显示5.JSP5.JSP的处理过程的处理过程客户端J

5、SP文件文件Servlet文件文件class文件文件Servlet实例实例1.请求请求JSP页面页面2.转换转换3.编译编译3. 执行执行5.返回响应返回响应JSP容器容器JSP执行过程执行过程6. JSP6. JSP异常处理机制异常处理机制 % String citys=beijin,shanghai,wuhan;/这里故意设置了一个异常这里故意设置了一个异常for(int i=0;i不捕获异常时的显示结果软件用户感到突然,不知所措改进之后显示友好的界面6.1 在Java Web中的异常出现错误页面的异常通常是同一种类型,为每个页面书写相同的捕获异常代码,不利于代码重用有一些异常的处理无法通

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

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

8、c static String doWith(String people) return +people+; 本次幸运之星是: =家家乐超市收银系统家家乐超市收银系统=应付款:应付款: =家家乐超市收银系统家家乐超市收银系统=表达式可以应用在JSP页面中的如下位置 生成动态的链接地址 使form表单提交到不同的页面为通过循环语句生成的元素命名JSPJSP表达式表达式 a href=链接到链接到 form action=” % for int i=1;ifile:input type=”text” name=”file”file1:file2:声明标识格式:注意几点在“%”与“!”之间无须加空格

9、 声明的语法与在Java语言中声明变量和方法时一样 在页面中通过“声明标识”声明的变量和方法,在整个页面内都有效,它们将成为JSP页面被转换为类文件中的属性和方法,并且会被多个线程即多个用户共享 变量或方法的生命周期从创建到服务器关闭后结束 1.2 1.2 声明标识声明标识实现一个简单的网页计数器 1.2 1.2 声明标识声明标识 网页计数器网页计数器 你是第你是第位访客位访客关闭浏览器关闭Tomcat如果把代码修改如下 : 你是第位访客能实现网页计数器吗?脚本程序(Scriptlet)格式:注意它在形式上与表达式的区别在于“”中没有“=” 中间是一段Java代码,不是表达式,每条Java语句

10、要以分号结尾位于Scriptlet中定义的变量和方法不会被其他线程共享,当前用户对该变量的操作不会影响到其它用户 当变量所在的页面关闭后就会被销毁 1.3 1.3 脚本程序脚本程序(Scriptlet)(Scriptlet)通过“声明标识”声明的变量与位于Scriptlet中变量的区别 脚本程序脚本程序(Scriptlet(Scriptlet) ) num的值是:的值是: num1的值是:的值是:第一次运行结果 刷新3次运行结果 什么是指令标识通过指令标识可以使服务器按照指令的设置来执行动作通过指令可设置在整个JSP页面范围内有效的属性在一个指令中可以设置多个属性,这些属性的设置可以影响到整个

11、页面 page指令page指令称为页面指令,利用页面指令可以定义在整个JSP页面范围内有效的属性 include指令include指令用于在运行时将HTML文件或JSP页面嵌入到另一个JSP页面 taglib指令taglib指令的作用是在JSP页面中,将标签库描述符文件(TLD)引到该页面中,并设置前缀,利用标签的前缀去使用标签库描述符文件中的标签 2. JSP2. JSP指令标识指令标识Page指令格式:page指令可以放在JSP页面中的任意位置,但习惯上放在文件的开始部分,提高程序的可读性 page指令具有多种属性,通过这些属性的设置可以影响到当前的JSP页面2.1 Page2.1 Pag

12、e指令指令属性名属性名作用作用extends 用于指定一个JSP页面转换为Servlet后继承的类 session默认值为true,表示当前页面支持session。设为false表示不支持session buffer 设置out对象使用缓冲区的大小 info该属性可设置为任意字符串,如当前页面的作者或其它有关的页面信息 errorPage 该属性用来指定一个当前页面出现异常时所要调用的页面 isErrorPage 表示此页面是否为错误处理页面,默认为false isELIgnored 表示此页面是否忽略EL表达式。默认为false,表示不会忽略EL表达式 pageEncoding 用来设置JS

13、P页面字符的编码,默认值为”ISO-8859-1” 2.2 include2.2 include指令指令include指令格式:include指令只支持file属性,该属性指定要在编译时嵌入的文件名 页面的名称应当在编译时已知,文件的内容将被嵌入include指令所在的 JSP页面为什么要使用include指令使用include指令引用外部文件,可减少代码冗余 Logo图片区侧栏动态内容页 尾遇到这样的页面模板怎么办?在JSP中,因为对部分Java对象做了声明,因此即使不声明这些对象,也可以使用。 这些内建对象在JSP页面初始化时生成,由容器实现和管理,不需要由JSP开发人员进行实例化。 在所

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

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

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

17、对象输出对象 % out.print(); out.print(hello!hello!hello!hello!); out.print(); out.flush();/在清除缓冲区之前,先输出缓冲区的数据在清除缓冲区之前,先输出缓冲区的数据 out.clearBuffer();/清空缓冲区清空缓冲区 %out对象的close()方法:out对象的close()方法是关闭输出流。如果out对象的输出流已经关闭,则不能再向页面输出数据。 outout输出对象输出对象 % for(int i=1;i=1;j-) out.print();for(int j=1;j=2*i-1;j+) out.pri

18、nt(); out.print(); out.print(ok); out.print(输出流已经关闭输出流已经关闭!); out.close();/关闭输出流关闭输出流 out.print(再次输入数据,该数据不会显示再次输入数据,该数据不会显示); %2.2 request2.2 request对象对象request对象表示客户端的请求,包含了所有的请求信息。例如:请求的来源,Cookies和客户端请求相关的数据。可以在JSP页面中直接使用request对象,通过它的方法来获取请求相关数据。request对象常用方法 :方法名称方法名称方方 法法 描描 述述String getParame

19、ter(String name)根据页面表单组件名称获取请求页面提交的数据String getParameterValues(String name)获取页面请求中一个表单组件对应多个值时用户的请求数据String getRequestURI()获取请求字符串的客户端地址String getRemoteAddr()获取客户端的IP地址String getServiceName()获取服务器名Object getAttribute(String name)返回由name指定的属性值void setAttribute(String name,Object obj)设置名字为name的request

20、参数值requestrequest对象对象request对象应用举例: 用用 户户 名:名: 性别:性别: 男男 女女td 学历:学历: select style=width:120px name= option value= selected高中高中 option value= 大专大专 option value= 本科本科 option value= 研究生研究生 / td 认知途径:认知途径: input name= 报纸报纸input name= 网络网络input name= 媒体媒体input name= 其它其它 / . . . /获取提交过来的用户名获取提交过来的用户名 Str

21、ing uid=new String(request.getParameter(txtUid).getBytes(iso-8859-1); /获取性别获取性别 String sex=new String(request.getParameter(radSex).getBytes(iso-8859-1); /获取学历获取学历 String graduate=new String(request.getParameter(selGraduate).getBytes(iso-8859-1); /获取认知途径获取认知途径 String cognitions=request.getParameterVa

22、lues(chkCognition); /获取服务器名获取服务器名 String serviceName=request.getServerName(); /获取获取IP地址地址 String ip=request.getRemoteAddr();. . .2.3 response2.3 response对象对象response内建对象处理JSP生成的响应,然后将响应结果发送给客户端。response对象常用方法:方法名称方法名称方方 法法 描描 述述void sendRedirect(String name)发送一个响应给浏览器,指示其请求另一个URLvoid setContentType(

23、String name)设置响应生成的内容的类型和字符编码void setHeader(String name,String value)设置指定名称的Http文件头的值responseresponse对象对象response对象应用举例实现将表格中的内容,导入excel。实现浏览器定时刷新。 条码条码 名称名称 单价单价 出产地出产地 62109876543 牙膏 ¥3.4 上海 62109876786 手机 ¥500 深圳 3. 3. 作用域通信对象作用域通信对象session对象表示用户的会话状况。用此项机制可以轻易识别每一个用户,能保存和跟踪用户的会话状态。购物车最常使用session

24、的概念,当用户把商品放入购物车时,再去添加另外的商品到购物车时,之前选购的商品仍然在购物车内,且用户不用反复去做身份验证。 如果用户关闭浏览器,则会终止会话。 session对象常用方法: 方法名称方法名称方方 法法 描描 述述void setAttribute(String name,Object value)以名称/值的方式,将一个对象的值存放到session中Object getAttribute(String name)根据名称去获取session中存放的值void removeAttribute(String name)删除session中与name相关联的属性boolean isN

25、ew()判断session对象中是否存在新数据void invalidate()将保存在session中的数据全部清除3.1 session对象sessionsession对象对象用session对象重构购物车为购物车增加退回商品、减少数量、清空购物车等功能。运行效果:sessionsession对象对象编写产生商品并放入购物车的页面putCarjsp 放入购物车放入购物车进入购物车进入购物车 sessionsession对象对象编写显示购物车showCar.jsp页面 购物车中的商品如下:购物车中的商品如下: 商品商品数量数量操作操作 % Object keyset=car.keySet()

26、.toArray(); /得到得到Map的键集合的键集合 for(int i=0;i a href=backShopServlet?shop=退回商品退回商品 a href=decreaseServlet?shop=减少数量减少数量 清空购物车清空购物车 返回返回 sessionsession对象对象编写用于实现“退回商品”功能的Serlvet命名为BackShopServlet.java /获取要退回的商品获取要退回的商品int shop=Integer.parseInt(request.getParameter(shop);/从从session中获取购物车中获取购物车Map car=(Ma

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

28、)request.getSession().getAttribute(car); /从从session中获取购物车中获取购物车CarItem carItem=(CarItem)car.get(shop); /获取购物车项获取购物车项if(carItem.getQuantity()1)/如果数量大于如果数量大于1 carItem.setQuantity(carItem.getQuantity()-1); /则把数量减少则把数量减少1 else /否则数量等于否则数量等于1,直接在购物车中删除直接在购物车中删除 car.remove(shop); /转发到显示购物车页面转发到显示购物车页面 req

29、uest.getRequestDispatcher(showCar.jsp).forward(request, response); sessionsession对象对象编写用于实现“清空购物车”功能的Servlet命名为ClearCarServlet.java public class ClearCarServlet extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException this.do

30、Post(request, response);public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException response.setContentType(text/html;charset=gbk);PrintWriter out = response.getWriter();/移除移除session中的购物车中的购物车 request.getSession().removeAttribute(car); /转发到显示购物车页面

31、转发到显示购物车页面request.getRequestDispatcher(showCar.jsp).forward(request, response); 3.2 application3.2 application对象对象application对象用于保存所有应用系统中的公有数据,服务器启动并且自动创建application对象。只要没有关闭服务器,application对象将一直存在,所有用户可以共享application对象。 session对象和用户会话相关,不同用户的session是完全不同的对象,而用户的application对象都是相同的一个对象,即共享这个内建的applic

32、ation对象。 application对象常用方法: 方法名称方法名称方方 法法 描描 述述void setAttribute(String name,Object value)以名称/值的方式,将一个对象的值存放到application中Object getAttribute(String name)根据名称去获取application中存放的值String getRealPath(String path)返回虚拟路径的真实路径applicationapplication对象对象application对象实现网页计数器 % int number=0;/设置设置number变量用于保存网页次

33、数变量用于保存网页次数 if (application.getAttribute(num)=null)/如果不存在此属性,表明第一次运行如果不存在此属性,表明第一次运行 number=1; else /从从application中获取上一次的访问计数器中获取上一次的访问计数器 number=Integer.parseInt(application.getAttribute(num).toString(); number+;/计数器加计数器加1 application.setAttribute(num,new Integer(number); /把最新的次数放入把最新的次数放入applicati

34、on中保存中保存out.print(该网页的访问次数是:该网页的访问次数是:+number+次次); /输出目前的访问次数输出目前的访问次数% 第一次运行该页面时 关闭浏览器再次运行关闭Web服务器再次运行 用application对象完成的网页计数器在Web服务器关闭或重启之后数据会丢失,怎样去实现一个真正的网页计数器?3.3 pageContext3.3 pageContext对象对象pageContext对象使用户可以访问页面作用域中定义的所有内建对象。pageContext对象提供方法以访问内建对象在页面上定义的所有属性。pageContext对象作用范围仅仅在页面内。 pageCon

35、text对象常用方法 :方法名称方法名称方方 法法 描描 述述void setAttribute(String name,Object value)以名称/值的方式,将一个对象的值存放到pageContext中Object getAttribute(String name)根据名称去获取pageContext中存放的值pageContextpageContext对象对象在一个页面中分别完成“会话计数”、“应用程序计数”、“页面计数” 使用使用application、session、pageContext对象显示会话计数对象显示会话计数 页面计数:页面计数: 会话计数:会话计数: 应用程序计数:

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

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

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号