版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、JSP简介 JSP的优势 JSP页面构成 JSP的生命周期 JSP的处理过程 JSP异常处理机制 以下的Servlet代码有何缺陷?.out.print(部门信息管理);out.print();out.print(table”);out.print();out.print(在线招聘系统注册);out.print(“”);.所有的内容必须在Java代码中完成,包括HTML代码同样需要嵌入到程序代码中来生成静态内容不利于分工 因HTML代码出现的小问题也需要由熟悉Java Servlet的程序员来解决 1.1 为什么需要JSP?JSPJava Server Pages是指:在HTML中嵌入Java
2、脚本语言由应用服务器中的JSP引擎来编译和执行嵌入的Java脚本语言命令将生成的整个页面信息返回给客户端JSP页面页面 数据库数据库服务器服务器应用应用服务器服务器编译、执行编译、执行客户端客户端嵌入嵌入Java脚本语言脚本语言 1234返回页面信息返回页面信息JSP技术解决界面显示问题 Servlet主要解决内部逻辑问题商品显示列表功能 内容动态生成与静态表示分离可重复使用的组件简化页面开发跨平台 JSP基础入门今天是:静态内容指 令表达式ScriptletHTML静态文本以“ ” 完毕,例如:声 明标准动作以“jsp:动作名开场,以“”完毕,例如:注释输出当前日期你好,jack!今天是指令
3、静态内容Scriptlet表达式注释在浏览器中观看运行结果u查看网页源文件可以通过源代码查看HTML注释的内容所有注释内容都不可见合理、详细的注释有利于代码后期的维护和阅读在JSP文件的编写过程中,共有3种注释方法HTML的注释方法:JSP注释标记:在JSP脚本中使用 缺点:不安全,加重了网络传输的负担页面初始化处理客户端请求并做出应答 退出JSP 该方法中可以进行一些资源的分配,或者初始化变量和属性 JSP处理客户请求并应答时会调用_jspService()方法JSP在页面结束之前(主要是关闭服务器)会调用_jspDestroy()方法 服务器根据接收到的客户请求来加载被请求的JSP文件We
4、b服务器中的JSP引擎将被加载的JSP文件转化为Servlet代码JSP引擎将生成的Servlet代码编译成class文件服务器执行这个class文件服务器将执行结果发送到浏览器进行显示客户端JSP文件文件Servlet文件文件class文件文件Servlet实例实例1.请求请求JSP页面页面2.转换转换3.编译编译3. 执行执行5.返回响应返回响应JSP容器容器JSP执行过程执行过程 % String citys=beijin,shanghai,wuhan;/这里故意设置了一个异常这里故意设置了一个异常for(int i=0;i不捕获异常时的显示结果软件用户感到突然,不知所措改进之后显示友好
5、的界面6.1 在Java Web中的异常出现错误页面的异常通常是同一种类型,为每个页面书写相同的捕获异常代码,不利于代码重用有一些异常的处理无法通过页面设置完成,例如:用户输入网站中一个不存在的文件,这时应告诉用户文件不存在在Web应用程序中trycatch捕获异常有什么缺陷?如何解决这些问题? java.lang.NullPointerException /nullPointer.jsp. . . 500 /500.jsp . . . 1.配置web.xml为每个类型配置异常处理为每个错误代码配置异常处理400错误:错误请求401错误:访问被拒绝403错误:文件被禁止访问404错误:文件没有
6、找到405错误:文件在运行过程中发生末知错误空指针错误空指针错误 HIS系系统统 对象没有实对象没有实例化例化 2.编写异常处理页面 加入isErrorPage page指令 3.编写测试页面 4.运行结果 JSP表达式表达式Expression用于向页面中输出信息 格式: JSP表达式普通变量含返回值的方法Java表达式普通变量可以返回值的方法Java表达式 产生的随机变量值是: /定义一个Test类public class Test /定义一个返回值的方法doWithpublic static String doWith(String people) return +people+; 本次
7、幸运之星是: =家家乐超市收银系统家家乐超市收银系统=应付款:应付款: =家家乐超市收银系统家家乐超市收银系统=表达式可以应用在JSP页面中的如下位置 生成动态的链接地址 使form表单提交到不同的页面为通过循环语句生成的元素命名 a href=链接到链接到 form action=” % for int i=1;ifile:input type=”text” name=”file”file1:file2:声明标识格式:注意几点在“%”与“!”之间无须加空格 声明的语法与在Java语言中声明变量和方法时一样 在页面中通过“声明标识声明的变量和方法,在整个页面内都有效,它们将成为JSP页面被转换
8、为类文件中的属性和方法,并且会被多个线程即多个用户共享 变量或方法的生命周期从创建到服务器关闭后结束 实现一个简单的网页计数器 网页计数器网页计数器 你是第你是第位访客位访客关闭浏览器关闭Tomcat如果把代码修改如下 : 你是第位访客能实现网页计数器吗?脚本程序Scriptlet)格式:注意它在形式上与表达式的区别在于“”中没有“=” 中间是一段Java代码,不是表达式,每条Java语句要以分号结尾位于Scriptlet中定义的变量和方法不会被其他线程共享,当前用户对该变量的操作不会影响到其它用户 当变量所在的页面关闭后就会被销毁 通过“声明标识声明的变量与位于Scriptlet中变量的区别
9、 num的值是:的值是: num1的值是:的值是:第一次运行结果 刷新3次运行结果 什么是指令标识通过指令标识可以使服务器按照指令的设置来执行动作通过指令可设置在整个JSP页面范围内有效的属性在一个指令中可以设置多个属性,这些属性的设置可以影响到整个页面 page指令page指令称为页面指令,利用页面指令可以定义在整个JSP页面范围内有效的属性 include指令include指令用于在运行时将HTML文件或JSP页面嵌入到另一个JSP页面 taglib指令taglib指令的作用是在JSP页面中,将标签库描述符文件TLD引到该页面中,并设置前缀,利用标签的前缀去使用标签库描述符文件中的标签 P
10、age指令格式:page指令可以放在JSP页面中的任意位置,但习惯上放在文件的开始部分,提高程序的可读性 page指令具有多种属性,通过这些属性的设置可以影响到当前的JSP页面属性名属性名作用作用extends 用于指定一个JSP页面转换为Servlet后继承的类 session默认值为true,表示当前页面支持session。设为false表示不支持session buffer 设置out对象使用缓冲区的大小 info该属性可设置为任意字符串,如当前页面的作者或其它有关的页面信息 errorPage 该属性用来指定一个当前页面出现异常时所要调用的页面 isErrorPage 表示此页面是否为
11、错误处理页面,默认为false isELIgnored 表示此页面是否忽略EL表达式。默认为false,表示不会忽略EL表达式 pageEncoding 用来设置JSP页面字符的编码,默认值为”ISO-8859-1” include指令格式:include指令只支持file属性,该属性指定要在编译时嵌入的文件名 页面的名称应当在编译时已知,文件的内容将被嵌入include指令所在的 JSP页面为什么要使用include指令使用include指令引用外部文件,可减少代码冗余 Logo图片区侧栏动态内容页 尾遇到这样的页面模板怎么办?在JSP中,因为对部分Java对象做了声明,因此即使不声明这些对
12、象,也可以使用。 这些内建对象在JSP页面初始化时生成,由容器实现和管理,不需要由JSP开发人员进行实例化。 在所有的JSP页面中都能使用这些内建对象,起到简化页面的作用。out对象主要用来向客户端输出各种数据类型的内容,并且管理应用服务器上的输出缓冲区。 缓冲区默认值一般是8KB,可以通过页面指令page来改变默认值。 在使用out对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他输出让出缓冲空间。out对象被封装为javax.servlet.jsp.JspWriter类的对象,在实际应用中out对象会通过JSP容器变换为java.io.PrintWriter类的对
13、象。 out对象的常用方法:2.1 out输出对象out对象的print()方法:out对象的print()方法是把数据输出到页面。输出的数据可以是整型、字符型、布尔型等。print()方法既可输出单纯的文字,例如:“你好”,也可以输出HTML标记。 % out.print(out.print()方法示例); out.print(我是一只); out.print(); out.print(小); out.print(小); out.print(小); out.print(); out.print(鸟); out.print(想要飞也飞不高); out.print(=out.print()方法示
14、例=); %out对象的clearBuffer()方法:out对象的clearBuffer()方法可清除缓冲区数据。 % out.print(); out.print(hello!hello!hello!hello!); out.print(); out.clearBuffer(); %没有任何输出结果out对象的flush()方法:out对象的flush()方法可把缓冲区中的数据输出到网页上。 数据送入缓冲区后,需要清除缓冲区中的数据,但在清除缓冲区前,还需将缓冲区数据送入页面中显示,此时可使用flush()方法。 % out.print(); out.print(hello!hello!h
15、ello!hello!); out.print(); out.flush();/在清除缓冲区之前,先输出缓冲区的数据 out.clearBuffer();/清空缓冲区 %out对象的close()方法:out对象的close()方法是关闭输出流。如果out对象的输出流已经关闭,则不能再向页面输出数据。 % for(int i=1;i=1;j-) out.print();for(int j=1;j=2*i-1;j+) out.print(); out.print(); out.print(ok); out.print(输出流已经关闭!); out.close();/关闭输出流 out.print
16、(再次输入数据,该数据不会显示); %request对象表示客户端的请求,包含了所有的请求信息。例如:请求的来源,Cookies和客户端请求相关的数据。可以在JSP页面中直接使用request对象,通过它的方法来获取请求相关数据。request对象常用方法 :方法名称方法名称方方 法法 描描 述述String getParameter(String name)根据页面表单组件名称获取请求页面提交的数据String getParameterValues(String name)获取页面请求中一个表单组件对应多个值时用户的请求数据String getRequestURI()获取请求字符串的客户端地
17、址String getRemoteAddr()获取客户端的IP地址String getServiceName()获取服务器名Object getAttribute(String name)返回由name指定的属性值void setAttribute(String name,Object obj)设置名字为name的request参数值request对象应用举例: 用用 户户 名:名: 性别:性别: 男男 女女学历:学历: option value= selected高中高中 option value= 大专大专 option value= 本科本科 option value= 研究生研究生 认
18、知途径:认知途径: input name=chkCognition type=checkbox id=chkCognition value= 报纸报纸input name=chkCognition type=checkbox id=chkCognition value= 网络网络input name=chkCognition type=checkbox id=chkCognition value= 媒体媒体input name=chkCognition type=checkbox id=chkCognition value= 其它其它 . . . /获取提交过来的用户名获取提交过来的用户名 S
19、tring 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.getParameter
20、Values(chkCognition); /获取服务器名获取服务器名 String serviceName=request.getServerName(); /获取获取IP地址地址 String ip=request.getRemoteAddr();. . .response内建对象处理JSP生成的响应,然后将响应结果发送给客户端。response对象常用方法:方法名称方法名称方方 法法 描描 述述void sendRedirect(String name)发送一个响应给浏览器,指示其请求另一个URLvoid setContentType(String name)设置响应生成的内容的类型和字
21、符编码void setHeader(String name,String value)设置指定名称的Http文件头的值response对象应用举例实现将表格中的内容,导入excel。实现浏览器定时刷新。 条码条码 名称名称 单价单价 出产地出产地 62109876543 牙膏 ¥3.4 上海 62109876786 手机 ¥500 深圳 session对象表示用户的会话状况。用此项机制可以轻易识别每一个用户,能保存和跟踪用户的会话状态。购物车最常使用session的概念,当用户把商品放入购物车时,再去添加另外的商品到购物车时,之前选购的商品仍然在购物车内,且用户不用反复去做身份验证。 如果用户
22、关闭浏览器,则会终止会话。 session对象常用方法: 方法名称方法名称方方 法法 描描 述述void setAttribute(String name,Object value)以名称/值的方式,将一个对象的值存放到session中Object getAttribute(String name)根据名称去获取session中存放的值void removeAttribute(String name)删除session中与name相关联的属性boolean isNew()判断session对象中是否存在新数据void invalidate()将保存在session中的数据全部清除3.1 ses
23、sion对象用session对象重构购物车为购物车增加退回商品、减少数量、清空购物车等功能。运行效果:编写产生商品并放入购物车的页面putCarjsp 放入购物车放入购物车进入购物车进入购物车 编写显示购物车showCar.jsp页面 购物车中的商品如下:购物车中的商品如下: 商品商品数量数量操作操作 % Object keyset=car.keySet().toArray(); /得到得到Map的键集合的键集合 for(int i=0;i a href=backShopServlet?shop=退回商品退回商品 a href=decreaseServlet?shop=减少数量减少数量 清空购
24、物车清空购物车 返回返回 编写用于实现“退回商品功能的Serlvet命名为BackShopServlet.java /获取要退回的商品获取要退回的商品int shop=Integer.parseInt(request.getParameter(shop);/从从session中获取购物车中获取购物车Map car=(Map)request.getSession().getAttribute(car);/从购物车中删除该商品从购物车中删除该商品car.remove(shop);/转发到显示购物车页面转发到显示购物车页面request.getRequestDispatcher(showCar.js
25、p).forward(request, response); u编写用于实现“减少数量功能的Servlet命名为DecreaseServlet.java int shop=Integer.parseInt(request.getParameter(shop); /获取要退回的商品获取要退回的商品Map car=(Map)request.getSession().getAttribute(car); /从从session中获取购物车中获取购物车CarItem carItem=(CarItem)car.get(shop); /获取购物车项获取购物车项if(carItem.getQuantity()
26、1)/如果数量大于如果数量大于1 carItem.setQuantity(carItem.getQuantity()-1); /则把数量减少则把数量减少1 else /否则数量等于否则数量等于1,直接在购物车中删除直接在购物车中删除 car.remove(shop); /转发到显示购物车页面转发到显示购物车页面 request.getRequestDispatcher(showCar.jsp).forward(request, response); 编写用于实现“清空购物车功能的Servlet命名为ClearCarServlet.java public class ClearCarServle
27、t extends 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.setContentTyp
28、e(text/html;charset=gbk);PrintWriter out = response.getWriter();/移除移除session中的购物车中的购物车 request.getSession().removeAttribute(car); /转发到显示购物车页面转发到显示购物车页面request.getRequestDispatcher(showCar.jsp).forward(request, response); application对象用于保存所有应用系统中的公有数据,服务器启动并且自动创建application对象。只要没有关闭服务器,application对象将
29、一直存在,所有用户可以共享application对象。 session对象和用户会话相关,不同用户的session是完全不同的对象,而用户的application对象都是相同的一个对象,即共享这个内建的application对象。 application对象常用方法: 方法名称方法名称方方 法法 描描 述述void setAttribute(String name,Object value)以名称/值的方式,将一个对象的值存放到application中Object getAttribute(String name)根据名称去获取application中存放的值String getRealPat
30、h(String path)返回虚拟路径的真实路径application对象实现网页计数器 % int number=0;/设置设置number变量用于保存网页次数变量用于保存网页次数 if (application.getAttribute(num)=null)/如果不存在此属性,表明第一次运行如果不存在此属性,表明第一次运行 number=1; else /从从application中获取上一次的访问计数器中获取上一次的访问计数器 number=Integer.parseInt(application.getAttribute(num).toString(); number+;/计数器加计
31、数器加1 application.setAttribute(num,new Integer(number); /把最新的次数放入把最新的次数放入application中中保存保存out.print(该网页的访问次数是:该网页的访问次数是:+number+次次); /输出目前的访问输出目前的访问次数次数% 第一次运行该页面时 关闭浏览器再次运行关闭Web服务器再次运行 用application对象完成的网页计数器在Web服务器关闭或重启之后数据会丢失,怎样去实现一个真正的网页计数器?pageContext对象使用户可以访问页面作用域中定义的所有内建对象。pageContext对象提供方法以访问内建对象在页面上定义的所有属性。pageContext对象作用范围仅
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年食堂承包经营废弃物处理与资源化利用合同3篇
- 2025版门卫人员招聘与培训服务合同样本4篇
- 2025年度消防系统安全评估与整改合同3篇
- 2024食品安全保密协议:食品添加剂生产与保密合同3篇
- 模具租赁及后续加工定制服务合同2025年版3篇
- 2024年项目投资合同:共担风险3篇
- 2025年度租赁权附带智能家居安装合同3篇
- 2024知名品牌家电销售代理合同
- 2025版公共广场绿化管理与景观维护服务合同4篇
- 二零二五版货车租赁与智能物流服务合同3篇
- 2025-2030年中国草莓市场竞争格局及发展趋势分析报告
- 奕成玻璃基板先进封装中试线项目环评报告表
- 广西壮族自治区房屋建筑和市政基础设施全过程工程咨询服务招标文件范本(2020年版)修订版
- 人教版八年级英语上册期末专项复习-完形填空和阅读理解(含答案)
- 2024新版有限空间作业安全大培训
- GB/T 44304-2024精细陶瓷室温断裂阻力试验方法压痕(IF)法
- 年度董事会工作计划
- 五年级上册口算练习400题及答案
- 高三数学寒假作业1
- 1例左舌鳞癌手术患者的围手术期护理体会
- (完整)100道两位数加减两位数口算题(难)
评论
0/150
提交评论