




已阅读5页,还剩52页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章JSP语法详解 3 1JSP文件的组成 3 3JSP脚本元素 3 4JSP指令元素 3 5JSP动作元素 3 2JSP注释方式 一个简单的JSP页面 JSP页的创建 第一个JSP程序 运行效果 JSP转义字符 转义字符是以 开头的特殊字符 在屏幕上是不能显示的 而且在程序中无法用一般形式的字符表示 只能用这种特殊形式表示 常见的转义字符如表所示 3 2JSP注释方式 3 2 1HTML注释 3 2 2JSP隐藏注释 3 2 3脚本段注释 注释语句可以帮助程序员识别和理解程序代码 在JSP页面中主要存在3种注释方式 分别为HTML注释 JSP隐藏注释及脚本段注释 HTML注释 HTML注释的语法格式如下 HTML注释将被发送到客户端 但不直接显示 用户在客户端源代码中可以查看到 例如 JSP隐藏注释 JSP注释语句在传输到客户端的过程中会被过滤掉 不会发送到客户端 JSP隐藏注释语法格式如下 例如 脚本段注释 脚本段中包括两种注释方式 单行注释和多行注释 1 单行注释 单行注释是以 符号后面的所有内容为注释内容 服务器对该内容不能进行任何操作 脚本段在客户端通过查看源代码是不可见的 单行注释的格式如下 注释内容 2 多行注释 多行注释通过 和 符号进行标记 这两个标记必须成对出现 在它们之间输入的注释内容可以换行 多行注释格式如下 注释内容1注释内容2注释内容3 3 3JSP脚本元素 3 3 1声明语句 3 3 2脚本段 3 3 3JSP表达式 JSP中脚本元素包括3部分 在JSP页面中需要通过特殊的约定来表示这些元素 并且对于客户端这些元素是不可见的 它们都是由服务器执行 声明语句 声明语句 Declaration 在JSP页面中定义方法和变量 其声明格式如下 在页面中通过声明元素声明的方法和变量 在整个页面内都有效 它们将称为JSP页面被转换为类文件后中的方法和属性 并且他们会被多个线程即多个用户共享 也就是说 其中的任何一个线程对声明的变量或方法的修改都会改变它们原来的状态 它们的生命周期从创建到服务器关闭后结束 注意 在 与 之间不要空格 声明的语法与在Java语言中声明变量和方法是一样的 示例 网站计数器 网站计数器本网页访问次数是 次 脚本段 脚本段 Scriptlets 就是JSP代码片段或脚本片段 嵌在 标记中 在脚本段中可以定义变量 调用的方法和进行各种表达式运算 且每行语句后面加入分号 这种Java代码在Web服务器响应请求时会运行 脚本段使用格式如下 说明 脚本程序的使用比较灵活 实现的功能是JSP表达式无法实现的 JSP表达式 JSP表达式用来把Java数据向页面直接输出信息 其使用格式如下 JSP表达式与JSP页面中嵌入到脚本段中的out print 方法实现的功能相同 如果表达式输出的是一个对象 则该对象的toString 方法被调用 表达式将输出toString 方法返回的内容 例如 运行结果 3 4JSP指令元素 3 4 1页面指令元素 page3 4 2包含指令元素 include3 4 3提供动作指令元素 taglib JSP指令元素主要包括3种 Page指令 Include指令及taglib指令 以 标记开始 以 标记结束 页面指令元素 page 1 page指令即页面指令 用于定义JSP文件中有效的属性 该指令可以放在JSP页面中的任意位置 Page指令包含多种属性 通过设置这些属性可以影响到当前的JSP页面 Page指令中除import属性外 其他属性只能在指令中出现一次 Page指令语法格式如下 页面指令元素 page 2 page指令各属性所具有的功能如下 language 设置当前页面中编写JSP脚本使用的语言 import 用于向JSP文件中导入需要用户的类包 在Page指令中可多次使用该属性来导入多个包 contentType 设置响应结果的MIME类型 默认MIME类型是text html 默认字符编码为ISO 8859 1 当多次使用Page指令时 该属性只有第一次使用有效 session 说明当前页面是否支持session 默认值为ture 表示支持session buffer 设置out对象使用的缓冲区的大小 如设置为none 说明不使用缓存 而直接通过out对象进行输出 如果将该属性指定为数值 则输出缓冲区的大小不应小于该值 默认值为8KB autoFlush 设置输出流的缓冲区是否自动清除 默认设置值为true 说明当缓冲区已满时 自动将其中的内容输出到客户端 如果设置为false 则当缓冲区中的内容超出其设置的大小时 会产生 JSPBufferoverflow 溢出异常 isThreadSafe 默认值为true 说明当前JSP页被转换为Servlet后 会以多线程的方式来处理来自多个用户的请求 如果设置为false 则转换后的Servlet会实现SigleThreadModel接口 该Servlet将以单线程的方式来处理用户请求 即其他请求必须等待直到前一个请求被处理结束 页面指令元素 page 3 page指令各属性所具有的功能 续 info 设置为任意字符串 如当前页面的作者或其他相关的页面信息 可以通过Servlet getServletInfo 方法来获取设置的字符串 errorPage 指定一个当前页面出现异常时所要调用的页面 如果属性值是以 开头的路径 则将在当前Web应用的根目录下查找文件 否则 将当前页面的目录下查找文件 isErrorPage 设置为true 说明在当前页面中可以使用excpetion异常对象 若在其他页面中通过errorPage属性指定了该页面 则当调用页面出现异常时候 会跳转到该页面 并且在该页面中可以通过exception对象输出错误信息 相反 如果将该属性设置为false 则在当前页面中不能使用execption对象 该属性默认值为false isELlgnored 可以使JSP容器忽略表达式语言 其值只能是ture或false 设置为true则忽略表达式语言 设置为false 则不忽略表达式语言 extends 设置当前JSP页产生的Servlet是继承哪个父类 在JSP中通常不会设置该属性 JSP容器会提供转换后的Servlet继承的父类 并且如果设置该属性 一些改动会影响JSP的编译能力 pageEncoding 用来设置JSP页字符的编码 默认值是 ISO 8859 1 包含指令元素 include include指令用于在当前的JSP页面中在当前使用该指令的位置嵌入其他的文件 如果被包含文件有可以执行的代码 则显示代码执行结果 include指令的语法格式如下 include指令只存在file属性 表示此file的路径 路径名指的是相对路径 不需要指定端口 协议或域名等 该属性不支持任何表达式 也不允许传递任何参数 注意 如果该属性值以 开头 那么指定的是一个绝对路径 将在当前应用的根目录下查找文件 如果是以文件名称或文件夹名开头 那么指定的相对路径将在当前页面的目录上查找文件 include示例 提供动作指令 标签库指令 元素 taglib taglib指令可以在页面中使用这些基本标记或自定义的标记来完成特殊的功能 在JSP页面中启动客户端定制行为 taglib指令语法格式如下 taglib元素具有两个属性 uri 指定标签库存放位置 prefix 该属性指定了标签的前缀 此前缀不能使用已被sun公司声明保留字 前缀名不能为jsp jspx java javax servlet sun 和sunw 3 5JSP动作元素 3 5 1包含文件 3 5 2请求转发 3 5 3声明使用JavaBean 3 5 4设置JavaBean属性值 3 5 5获取JavaBean属性值 3 5 6声明使用Java插件 与 3 5 7参数传递 与 3 5 8其他动作元素 包含文件 1 该元素允许包含动态或静态文件 如果包含的文件是静态的 它仅仅是把包含文件的内容加到JSP文件中去 包含静态文件的使用格式如下 如果包含的文件是动态的 这个被包含文件也会被JSP编译器执行 并且在编译时可以传递参数 包含动态文件使用格式如下 包含文件 2 属性及子元素 page属性 该属性指定了被包含文件的路径 其值可以是相对路径的表达式 当路径是以 开头时 则按照当前应用的路径查找该文件 如果路径是以文件名或目录名称开头 那么 将按照当前的路径查找被包含的文件 flush属性 该属性标识当输出缓冲区满时 是否清空缓冲区该属性默认值为false 通常情况下设置为true 子元素 该子元素可以向被包含的动作页面中传递参数 包含文件 3 与include指令的区别 1 是直接包含源代码 包含请求的HTML代码 并且支持JSP表达式和Struts应用中的请求模式 2 通过包含一个JSP页面 在包含的页面中相关的response操作都被忽略 也就是说当前操作不能通过response对象重定向到其他页面 如果用包含的JSP页面 在该页面中所有的response操作都会正常运行 3 元素请求代码时 可以带参数 而不可以带参数 4 从执行速度角度上讲 比请求速度快 因为仅处理一个请求 而处理两个请求 两个servlet 5 从实际应用角度上讲 用于检测用户是否登录 网站标识或网站的一些静态不变的信息 而用于发送一个请求 并接收返回的HTML 并可以加入参数 09 13 59 Include指令和动作的区别 示例 date jsp document write Include指令和动作的区别 示例 test jsp把date jsp页面用include插入test jsp页面中 include的两种用法 flush false 有关jsp中include的两种用法 敬请关注 使用include动作还是include指令 对不经常变化的内容 用include指令是合适的 如果需要的内容是经常变化的 则需要动作元素 使用include指令 如果被包含的文件发生改变 那么 用到它的所有Jsp页面都需要更新 仅当include动作不能满足要求时 我们才应该使用include指令 既然include指令产生难以维护的代码 为什么还要使用它 因为include指令更为强大 include指令允许所包含的文件中含有影响主页面的Jsp代码 比如响应报头的设置和字段 方法的定义 例子 subpage jsp mainpage jsp 当然使用include动作时这是不可能的 因为num变量未定义 主页面不能成功的转换成servlet 请求转发 该元素用于将客户端请求从一个页面转发到另一个JSP页面 HTML或相关的资源文件中 当该元素被执行后 当前页面将不再被执行 而是去执行该元素指定的目标页面 使用格式如下 如果转发目标是一个动态文件 还可以向该文件中传递多个参数 具体使用格式如下 参数及元素说明 page属性 该属性指定了目标文件的路径 元素 该元素用来向动态的目标文件中传递参数 请求转发和请求重定向 本质区别 请求转发 存储在request中的信息会被保留并被带到目标页面中 请求重定向 重新生成一个request请求 然后将请求重定向到指定URL 存储在request对象中的信息都会丢失 表象区别 请求转发 地址栏中看不到目标页面请求重定向 地址栏中可以看到目标页面用途上的区别 请求转发 只能将请求转发给同一个WEB应用中的组件 重定向 重定向还可以重新定向到同一站点不同应用程序中的资源 甚至可以定向到一绝对的URL 执行上的区别 重定向跳转后必须加上return 要不然页面虽然跳转了 但是还会执行跳转后面的语句 转发是执行了跳转页面 下面的代码就不会在执行了 jsp forward示例 forword jsp date jsp 声明使用JavaBean 该元素可以在JSP页面中创建一个JavaBean实例 并且通过属性的设置可以将该实例存储到JSP中的指定范围内 使用格式如下 其他元素设置 如 声明使用JavaBean 属性说明id属性 该属性指定一个变量 在所定义的范围内或Scriptlet中将使用该变量来对所创建的JavaBean实例进行引用 该变量必须符合Java中变量的命名规则 scope属性 该属性指定了所创建JavaBean实例的存取范围 默认属性值是 page 元素被执行时 首先会在scope属性指定的范围来查找指定的JavaBean实例 如果该实例已经存在 则引用这个JavaBean 若不存在将重新创建 并将其保存在scope属性指定的范围内 声明使用JavaBean 声明使用JavaBean class属性 该属性指定了一个完整的类名 指定的类名不能是抽象的 它必须具有公共的 没有参数的构造方法 在没有设置type属性时 必须设置class属性 程序首先会在session范围内查找是否存在名为userInfo的UserInfo类的实例 如果不存在 那么会通过new操作符实例化UserInfo来获取一个实例 并以userInfo为实例名称存储到session范围内 声明使用JavaBean type属性 该属性用于设置由id属性指定的变量类型 可以指定要创建实例的类本身 类的父类或是一个接口 如 在session范围内 如果已经存在name实例 则将该实例转换为type属性指定的String类型 并赋值给id属性指定的变量 若指定的实例不存在 则出现异常 声明使用JavaBean beanName属性 该属性可以是类文件 JavaBean实例或包含JavaBean的串行化文件 ser文件 当JavaBean不存在指定范围内时 才可以使用此属性 它必须使用type属性来指定要将何种类型的Bean实例化 1 beanName属性不能与class属性一起使用 并且区分大小写 2 使用beanName主要用来实例化一个串行化的Bean 而不是用来从一个类创建一个全新的实例 如果Bean还没有创建 beanName属性传给java beans instantiate 方法 由类装载器对类进行实例化 它首先假定存在一个串行化的Bean 带扩展名 ser 然后会将其激活 如果这个操作失败 它就会实例化一个新的实例 使用java beans Beans instantiate方法 从一个class或连续模版中实例化一个Bean 同时指定Bean的类型 beanName可以是package和class也可以是表达式 它的值会传给Beans class属性与type属性并用 class属性与type属性可以指定同一个类 格式如下 假定UserBase类是UserInfo类的父类 上述代码的执行流程如图 图3 8class属性与type属性并用执行流程 声明使用JavaBean 元素的使用 1 不存在Body的格式如下 2 存在Body的格式如下 Class与type属性并用 示例 相当于ClassAname newClassA 相当于ClassBname newClassA beanName属性与type属性并用 beanName属性与type属性可以指定同一个类 格式如下 beanName属性与type属性并用和class属性与type属性并用的代码执行流程是完全相同的 声明使用JavaBean 元素的使用 1 不存在Body的格式如下 2 存在Body的格式如下 声明使用JavaBean 这两种使用方法是有区别的 对于元素的第2种使用格式 在页面中应用元素创建一个JavaBean时 如果该JavaBean是第1次被实例化 那么元素体内的内容会被执行 若已经存在了指定的JavaBean实例 则元素内的内容就不再被执行 对于第1种使用格式 无论在指定的范围内是否已经存在一个指定的JavaBean实例 元素后面的内容都会被执行 用户注册实例 下面通过用户注册的实例来说明如何使用元素 在用户注册页面中 将用户注册的表单信息填写完毕后 进行提交表单操作 表单会被提交到showUserInfo jsp页面 在该页面中应用元素将用户输入的信息赋值给由元素所创建的JavaBean中的对应熟悉 具体实现步骤如下 1 创建名称为UserInfo java类文件 用于存储用户注册的基本信息 具体代码如下 user java packagecom wy model publicclassUserInfo privateStringaccount privateStringpassword privateStringrealname privateStringemail privateStringsex publicStringgetAccount returnaccount publicvoidsetAccount Stringaccount this account account 用户注册实例 2 创建用户输入注册信息的页面index jsp 在该页面中的form表单将被提交到showUserInfo jsp中 并且表单中的5个表单元素的名称account password realname email和sex与UserInfo类中的5个属性是相同的 只有这样 才能应用元素将表单元素与UserInfo类中的属性进行一一映射 用户注册信息的页面index jsp的关键代码如下 index jsp 账号 Email地址 3 创建接收用户注册form表单的JSP页面showUserInfo jsp 在该页面中显示用户注册信息 账号 密码 设置JavaBean属性值 1 该元素通常情况下与元素一起使用 它调用JavaBean中的setXXX 方法 将请求中的参数赋值给由元素创建的JavaBean中对象的简单属性或索引属性 该属性的使用格式如下 元素的属性 name 该属性用来指定一个存在JSP中某个范围中的JavaBean实例 设置JavaBean属性值 2 元素的属性 property 该属性说明request请求中的所有参数值将被一一赋给JavaBean中与参数具有相同名字的属性 property 属性名称 该属性取值为JavaBean中的属性时 则只会将request请求中与该JavaBean属性同名的一个参数的致赋给这个JavaBean属性 property 属性名称 param 参数名称 param属性指定一个request请求中的参数 property属性指定JavaBean中的某个属性 该方法允许将请求中的参数赋值给JavaBean中与该参数不同名的属性 获取JavaBean属性值 该属性用来从指定的JavaBean中读取指定的属性值 并输出到页面中 该JavaBean必须具有getXXX 方法 元素的使用格式如下 元素
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 蜂产品加工工综合考核试卷及答案
- 人工合成晶体工成本控制考核试卷及答案
- 按摩咨询接待服务方案
- 韩束网店营销策划方案
- 建筑方案设计师考核
- 2025版司法局《刑事自诉案件反诉状》(空白模板)
- 玉米须茶营销方案策划
- 屋顶建筑垃圾转运方案设计
- 宿舍建筑方案设计图纸
- 城乡规划建筑方案设计
- 2026高考物理一轮复习-第十章-第54课时-专题强化:测电阻的其他几种方法-专项训练【含答案】
- 多囊卵巢综合征的超声诊断
- 售后索赔流程管理办法
- 2025 高中地理核心素养之综合思维培养(气候与建筑)课件
- 幼儿园中国茶文化课件
- DB3205∕T 1105-2023 房屋安全鉴定服务规范
- 食堂燃气操作人员培训
- 2025年中国医院创新转化报告-中国医学创新联盟
- 2025年6月黑吉辽蒙高考地理真题完全解读
- 2023年宪法学习宪法知识竞赛试题及答案
- 汇率预测模型优化-洞察及研究
评论
0/150
提交评论