ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:144.89KB ,
资源ID:7179697      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7179697.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(day11JSP内置对象和EL表达式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

day11JSP内置对象和EL表达式.docx

1、day11JSP内置对象和EL表达式课程大纲:1、Jsp概述与执行原理2、Jsp基本语法3、Jsp指令4、Jsp的内置对象和域对象(重点)5、Jsp最佳实践6、EL表达式(非常重要)学习目标:了解Jsp的运行机制,掌握jsp内置对象和域对象的使用以及EL的基本使用1 JSP概述与执行原理1.1 Jsp概述JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。JSP这门技术的最大的特点在于,写jsp就像在写html,但: 它相比html而言,html只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提

2、供动态数据。 相比servlet而言,servlet很难对数据进行排版,而jsp除了可以用java代码产生动态数据的同时,也很容易对数据进行排版。Jsp快速入门:在jsp页面中输出当前时间。比较servlet开发和JSP开发: 不管是JSP还是Servlet,虽然都可以用于开发动态web资源。但由于这2门技术各自的特点,在长期的软件实践中,人们逐渐把servlet作为web应用中的控制器组件来使用,而把JSP技术作为数据显示模板来使用。其原因为,程序的数据通常要美化后再输出: 让jsp既用java代码产生动态数据,又做美化会导致页面难以维护。 让servlet既产生数据,又在里面嵌套html代

3、码美化数据,同样也会导致程序可读性差,难以维护。因此最好的办法就是根据这两门技术的特点,让它们各自负责各的,servlet只负责响应请求产生数据,并把数据通过转发技术带给jsp,数据的显示jsp来做。1.2 Jsp执行原理在tomcat中找到JSP引擎动态产生的文件理解JSP引擎工作原理1)首先,客户端发出请求(request ),请求访问JSP网页2)接着,JSP Container将要访问的.JSP文件 转译成Servlet的源代码(.java文件)3)然后,将产生的Servlet的源代码(.java文件)经过编译,生成.class文件,并加载到内存执行4)最后把结果响应(response

4、 )给客户端2 Jsp基本语法2.1 JSP模板元素JSP页面中的HTML内容称之为JSP模版元素。 JSP模版元素定义了网页的基本骨架,即定义了页面的结构和外观。2.2 JSP脚本表达式JSP脚本表达式(expression)用于将程序数据输出到客户端 语法: 举例:当前时间: JSP引擎在翻译脚本表达式时,会将程序数据转成字符串,然后在相应位置用out.write() 将数据输给客户端。JSP脚本表达式中的变量或表达式后面不能有分号(;)。2.3 JSP脚本片段JSP脚本片断(scriptlet)用于在JSP页面中编写多行Java代码。语法: 注意:JSP脚本片断中只能出现java代码,不

5、能出现其它模板元素, JSP引擎在翻译JSP页面中,会将JSP脚本片断中的Java代码将被原封不动地放到Servlet的_jspService方法中。 JSP脚本片断中的Java代码必须严格遵循Java语法,例如,每执行语句后面必须用分号(;)结束。 在一个JSP页面中可以有多个脚本片断,在两个或多个脚本片断之间可以嵌入文本、HTML标记和其他JSP元素。 举例:这是JSP页面文本多个脚本片断中的代码可以相互访问,犹如将所有的代码放在一对之中的情况。如:out.println(x);单个脚本片断中的Java语句可以是不完整的,但是,多个脚本片断组合后的结果必须是完整的Java语句,例如:% f

6、or (int i=1; i 2.4 JSP声明JSP页面中编写的所有代码,默认会翻译到servlet的service方法中, 而Jsp声明中的java代码被翻译到_jspService方法的外面,即实例变量。语法:所以,JSP声明可用于定义JSP页面转换成的Servlet程序的静态代码块、成员变量和方法 。 多个静态代码块、变量和函数可以定义在一个JSP声明中,也可以分别单独定义在多个JSP声明中。JSP隐式对象的作用范围仅限于Servlet的_jspService方法,所以在JSP声明中不能使用这些隐式对象。 2.5 JSP注释JSP注释的格式: JSP引擎在将JSP页面翻译成Servle

7、t程序时,忽略JSP页面中被注释的内容。3 Jsp指令JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。在JSP 2.0规范中共定义了三个指令:page指令Include指令taglib指令3.1指令基本语法JSP指令的基本语法格式: 举例:如果一个指令有多个属性,这多个属性可以写在一个指令中,也可以分开写。 例如: 也可以写作:3.2 Page指令 page指令用于定义JSP页面的各种属性,无论page指令出现在JSP页面中的什么地方,它作用的都是整个JSP页面,为了保持程序的可读性和遵循良好的编程习惯,pag

8、e指令最好是放在整个JSP页面的起始位置。page指令的属性:language=指明JSP支持的语言,默认为java语言*import=当前JSP页面中,需要导入的包,其中import可以写多次session=true表示需要服务器创建session/false不需要服务器创建session,默认truebuffer=none|8kb|sizekbJSP输出使用的缓存大小,默认8kbautoFlush=true表示当缓存满时,web容器是自动刷新到客户端/false需要手工刷新到客户端,默认trueisThreadSafe=true表示web服务器确保线程安全/false不确保线程安全,默认t

9、rueinfo=text表示jsp的相关描述信息,可以通过getServletInfo()取得该jsp的信息*errorPage=当前jsp页面出错后,转发到的目标页面*isErrorPage=true(当某个jsp页面有该属性时,web容器会自动创建exception对象使用page指令解决JSP中文乱码:JSP程序存在有与Servlet程序完全相同的中文乱码问题 输出响应正文时出现的中文乱码问题 读取浏览器传递的参数信息时出现的中文乱码问题JSP引擎将JSP页面翻译成Servlet源文件时也可能导致中文乱码问题(UTF-8) =如何解决JSP引擎翻译JSP页面时的中文乱码问题=1)通过pa

10、ge指令的contentType属性说明JSP源文件的字符集编码2)page指令的pageEncoding属性说明JSP源文件的字符集编码3.3 Include指令 include指令用于引入其它JSP页面,如果使用include指令引入了其它JSP页面,那么JSP引擎将把这两个JSP翻译成一个servlet。所以include指令引入通常也称之为静态引入。语法: 其中的file属性用于指定被引入文件的相对路径。 file属性的设置值必须使用相对路径,如果以“/”开头,表示相对于当前WEB应用程序的根目录(注意不是站点根目录),否则,表示相对于当前文件。细节: 被引入的文件必须遵循JSP语法。

11、 被引入的文件可以使用任意的扩展名,即使其扩展名是html,JSP引擎也会按照处理jsp页面的方式处理它里面的内容,为了见明知意,JSP规范建议使用.jspf(JSP fragments)作为静态引入文件的扩展名。 由于使用include指令将会涉及到2个JSP页面,并会把2个JSP翻译成一个servlet,所以这2个JSP页面的指令不能冲突(除了pageEncoding和导包除外)。4 JSP 9个隐藏对象和4个域对象4.1 什么是隐含对象?不用我们手工去创建的对象,由容器根据页面设置而产生直接可以使用request HttpServletRequestresponse HttpServle

12、tResponsesession HttpSessionapplication ServletContextconfig ServletConfigexception (特殊情况下使用)page this(本JSP页面)out JspWriter(带缓冲的PrintWriter)pageContext (使普通Java类可访问WEB资源,自定义标签常用)4.2 out隐藏对象out隐式对象用于向客户端发送文本数据。 out对象是通过调用pageContext对象的getOut方法返回的,其作用和用法与ServletResponse.getWriter方法返回的PrintWriter对象非常相似

13、。 JSP页面中的out隐式对象的类型为JspWriter,JspWriter相当于一种带缓存功能的PrintWriter,设置JSP页面的page指令的buffer属性可以调整它的缓存大小,甚至关闭它的缓存。 只有向out对象中写入了内容,且满足如下任何一个条件时,out对象才去调用ServletResponse.getWriter方法,并通过该方法返回的PrintWriter对象将out对象的缓冲区中的内容真正写入到Servlet引擎提供的缓冲区中:设置page指令的buffer属性关闭了out对象的缓存功能 out对象的缓冲区已满 整个JSP页面结束out隐式对象的工作原理图4.3 pa

14、geContext对象 pageContext对象是JSP技术中最重要的一个对象,它代表当前JSP页面的运行环境,这个对象不仅封装了对其它8大隐式对象的引用,它自身还是一个域对象,可以用来保存数据。并且,这个对象还封装了web开发中经常涉及到的一些常用操作,例如包含和跳转其它资源、检索其它域对象中的属性等。通过pageContext获得其他对象getException方法返回exception隐式对象 getPage方法返回page隐式对象getRequest方法返回request隐式对象 getResponse方法返回response隐式对象 getServletConfig方法返回conf

15、ig隐式对象getServletContext方法返回application隐式对象getSession方法返回session隐式对象 getOut方法返回out隐式对象pageContext封装其它8大内置对象的意义。pageContext作为域对象 pageContext对象的方法 public void setAttribute(java.lang.Stringname,java.lang.Objectvalue) public java.lang.ObjectgetAttribute(java.lang.Stringname) public voidremoveAttribute(ja

16、va.lang.Stringname)pageContext对象中还封装了访问其它域的方法 public java.lang.ObjectgetAttribute(java.lang.Stringname,intscope) public void setAttribute(java.lang.Stringname, java.lang.Objectvalue,intscope) public voidremoveAttribute(java.lang.Stringname,intscope)代表各个域的常量 PageContext.APPLICATION_SCOPE PageContext.

17、SESSION_SCOPE PageContext.REQUEST_SCOPE PageContext.PAGE_SCOPE findAttribute方法 (*重点,先后查找各个域中的属性)4.4 四大域对象到此为止,web开发接触到了4个域对象: pageContext(称之为page域) request(称之为request域) session(称之为session域) servletContext(称之为application域)这4个域对象是学习web的重点,也是笔试经常考察的知识点。明确如下问题: 这4个对象的生命周期? 什么是域?为什么把这4个对象叫做域对象呢? 哪种情况下用哪种

18、域对象。引入和跳转到其他资源 PageContext类中定义了一个forward方法和两个include方法来分别简化和替代RequestDispatcher.forward方法和include方法 传递给这些方法的资源路径,如果路径以“/”开头,表示相对于当前WEB应用程序的根目录,否则,表示相对于当前JSP所映射到的访问路径。5 Jsp最佳实践 不管是JSP还是Servlet,虽然都可以用于开发动态web资源。但由于这2门技术各自的特点,在长期的软件实践中,人们逐渐把servlet作为web应用中的控制器组件来使用,而把JSP技术作为数据显示模板来使用。其原因为,程序的数据通常要美化后再输

19、出: 让jsp既用java代码产生动态数据,又做美化会导致页面难以维护。 让servlet既产生数据,又在里面嵌套html代码美化数据,同样也会导致程序可读性差,难以维护。 因此最好的办法就是根据这两门技术的特点,让它们各自负责各的,servlet只负责响应请求产生数据,并把数据通过转发技术带给jsp,数据的显示jsp来做。6 EL表达式6.1 EL表达式概述EL表达式语言是JSP2.0才引入的 补充jsp对Java Bean访问的能力 可以说是对useBean, getProperty, setProperty等动作的增强语法 文字 运算符 变量和JavaBean属性数据输出 存取器 隐含对

20、象可以自由设置是否支持表达式语言6.2 EL表达式语法语法形式$例如:$boy$boy.name 在 EL 表达式中,数字、字符串、布尔值和 null 都可以被指定为文字值(常量)。字符串可以用单引号或双引号定界。布尔值被指定为 true 和 false 。$100 100 $-168.18 -168.18 $3.8E18 3.8E18 $3.8e-18 3.8e-18 $3.14159265 3.14159265 $Hello JSP EL! Hello JSP EL! 等价于 $Hello JSP EL. Hello JSP EL. $true/can be TRUE? true $fal

21、se/can be FALSE? false $str=null true 6.3 EL 运算符算术运算符+、-、*、/(或 div)和 %(或 mod)关系运算符=(或 eq)、!=(或 ne)、(或 gt)、=(或 ge)逻辑运算符&(或 and)、|(或 or)和 !(或 not)验证运算符empty其中,empty 判断一个变量是否为null或是否包含有效数据:if(name=null|name.equlas()等价于$empty name - true存取器输出对象属性值,输出数组或集合中对应索引值. 输出对象属性值例子:对象列表Map容器6.4 EL中的隐含对象EL提供了自己的一套

22、隐含对象,方便在页面内对各种常用数据信息的访问.EL隐藏对象JSP隐藏对象pageScope/pageContextpageContextrequestScope request sessionScope session applicationScope appication param request.getParameter() paramValues在提交表单里,有多个输入域同名getParameterValues headerrequest.getHeader(),按照key value的形式取出 value:是一个String类型的值headerValues按照key value的方式取出,但headerValues里面的value是一个String类型的数组cookierequest.getCookies() initParamcontext param EL表达式的支持可以自由设置是否支持表达式语言, :缺省为false,表示可以使用EL配置web.xml也可达到同样的效果(同时存在,那种起作用?)(禁用脚本和EL) 默认都是false在页面中通过page指令设置isELIgnored属性的优先级比在web.xml中通过设置的高

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1