版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、JSP笔记之四(上)第四章JSP语法进阶(上)4.1 JSP指令4.1.1 JSP指令元素JSP指令元素即,采用格式所写的JSP句子,其中directive主要是page或include,以及其它一些不太常用的指令。例如,可以通过page指令设置网页字符集的类型、引入的包、错误处理等。格式中,directive是指令名称,attr是指令的属性,属性可以有多个,value是属性的取值。1page指令page指令定义了JSP网页文件的全局属性,描述与页面相关的指示信息。在一个JSP页面中,page指令可以出现多次,但是除import外,每一种属性却只能出现一次。习惯上把page指令放在JSP页面的
2、最前面。其格式如下:比较常用的属性有:(1) 这一句设置MIME的类型为text/html,网页所用字符集为简体中文国标码gb2312(有时字符集可以改为GBK)。contentType属性用于设置JSP文件的MIME和字符集。这一项必须在文件的顶部、任何一个其他字符在文件中出现之前。设置文字格式GBK的另一种方法:request.setCharacterEncoding(“GBK”);(这是后话)(2)import属性的值是一系列用逗号分开的列表,指明想要引入的包和类。当为import指定多个属性值时,也可以写成多个import句子。如:这三行语句与上面的一行语句等价。当使用import引入
3、了包和类后,就可以使用与这些包和类相关的方法和对象了注意 java.lang.*、javax.servlet.*、javax.servlet.jsp.*和javax.servlet.http.*包已经作为缺省值被JSP引入,所以不需要在网页中再次引入。(3)属性language的用法:(4)属性buffer的用法:用于指定out对象使用时的缓冲区大小或不使用缓冲区。page指令还有很多属性,参见教材。2include指令设计一个Web应用网站可能需要编写若干个JSP页面,如果这些JSP页面都需要显示某些同样的信息,如每个JSP页面上都可能需要一个导航条,方便用户在各个JSP页面之间切换,那么每
4、个JSP页面都可以使用include指令标记在页面的适当位置整体嵌入一个相同的文件。标记:该指令标记的作用是在JSP页面上出现该指令的位置处静态嵌入一个文件。被嵌入的文件必须是可访问和可使用的。所谓静态嵌入,就是Tomcat服务器在编译阶段就完成文件的嵌入操作,即将当前的JSP页面和要嵌入的文件合并成一个新的JSP页面,Tomcat服务器再将这个新的JSP页面转译成Java文件。注意,必须保证新合并成的JSP页面符合JSP语法规则,即能够成为一个JSP页面文件。比如,当前JSP页面已经有如下语句: 则被嵌入的文件如果也是一个JSP页面,则绝对不能再有这句:因为一个页面不能两次使用page指令为
5、contentType属性设置值。否则出现语法错误。例1 include指令应用方法1网页文件名example.jsp 被插入的文件Hello.txt:(也可插入*.jsp文件)祝贺北京成功举办奥运会3. 动作标记include注意区分include指令标记和include动作标记。include动作标记是在JSP页面运行时才处理文件。其优点是能更灵活地处理所需要的文件,缺点是执行速度比include指令标记的方式要慢一些。标记:写法:或子标记4.1.2 include指令应用举例这个案例将上一章的最后一个例子拓展案例9数据排序,改为:在主包含文件include.jsp中使用include指令
6、引入排序函数bubble例2 include指令应用方法2主网页文件名:sort.jsp数据排序 数据排序排序前数据顺序为:%int a=23,4,62,7,34,54,92,21;/定义数组 int i,n,k;for(i=0;i 排序之后数据顺序为:%for(i=0;i 被包含的文件程序名为bubble.jsp%!void bubble(int a)int i,j,temp;for(i=0;ii;j-)/内层循环对相邻元素进行比较 if(aj运行后,效果与拓展案例9相同4.1.3 案例拓展拓展案例10缓冲输出:演示了page指令中buffer属性的用法拓展案例11错误
7、处理页:演示了page指令中errorPage属性的用法4.2 内部对象request和【案例8】个人信息调查表和ASP一样,JSP中也提供了一些特殊的对象来设计网页。和一般类的对象不同,这些对象在使用前不需要声明,直接就可以在网页中使用,所以称为“内置对象”。常用的有request、response、session、application、out 。4.2.1 request对象接收表单传来的数据request对象是非常重要、非常常用的一个内部对象。用于服务器获得客户端网页的信息。如用户提交的信息,或客户机自己内部的信息。request最常用的方法是getParameter()、getPar
8、ameterValues()。使用方法如下:1文本框数据的采集getParameter方法:在一些网页中常常见到文本框、单选框、复选框、下拉框等,提供给用户输入信息。这些网页我们约定称为“前台网页”。在用户输入数据到这些框中时,网页设计者先要插入一个表单,将这些框括起来。即 /前台网页上一段语句中,提到“处理文件名”,其实就是后台网页文件。而上面的这一段语句应该在前台网页中。后台网页中,对应的文本框name1变量的值由request.getParameter(“name1”) 获得,即可由request内部对象的getParameter方法来得到客户机传来的信息,而接收到的信息是String类
9、型的,可以按Java中String类数据来处理。如在后台网页文件中加入:% String nn; String pp; nn=request.getParameter(name1); pp=request.getParameter(password1); out.println(+Your name is :); out.println(nn); out.println(+Your password is :); out.println(pp);%就可以获得前台网页的二个文本框name1和password1中用户输入的内容了。例1 简单JSP网页制作登录界面制作本案例主要说明如何使用JSP建立
10、交互式网页。前台网页文件名front.jsp简单登录界面 用户名: 密码: 后台网页文件名back.jsp新建网页 1%String nn = request.getParameter(name); String pw = request.getParameter(passwd); out.println(Your name is: + nn + );out.println(Your passwd is: + pw);%程序front.jsp运行后,界面如下图所示:图1-1运行界面图1-2输入信息后,点击“确定”按钮,跳到后台网页图1-3输入信息提交后的界面2. 方法getParameterV
11、alues若一个表单域有多个输入值,则需要用到方法getParameterValues(“”)。有时,复选框、下拉框、组合框这些表单域使用相同的name名,但却可以接收多个选项,这时若使用getParameter方法就无法接收所有数据(只能接收到第一个数据),只能改为用数组方式接收,即用request对象的另一个方法-getParameterValues()。如:String cities =request.getParameterValues(“select1”);for(int i=0;icities.length;i+)out.println(“”+citiesi);在下题的第2种情况中
12、,对getParameterValues(“”)的用法有所示范。例2 列表框在页面交互中的应用第1种 不允许复选的下拉框前台网页文件名city.jsp下拉菜单下拉菜单上海市北京市青岛市济南市 其处理文件(后台网页)名city_back.jsp下拉菜单演示下拉菜单演示您选择的城市是“运行效果如下说明:图2-1运行界面图2-2提交后的界面第2种允许复选的下拉框前台网页文件名cities.jsp允许复选的下拉框允许复选的下拉框北京市上海市济南市青岛市天津市其后台网页文件名cities_back.jsp允许复选的下拉框允许复选的下拉框您选择的城市是:%String citys=request.getP
13、arameterValues(city);if(citys!=null)for(int i=0;icitys.length;i+)out.println();out.println(citysi+ );%图2-3复选列表框的运行界面图2-4复选列表框提交后的界面例3网页中单选按钮的使用前台网页文件名identification.jsp网页中单选按钮使用 身份: 教师 学生 性别: 男 女 后台网页文件名identification_back.jsp网页中单选按钮使用您是,是性运行后,效果如下图3-1提交信息界面图3-2处理用户输入界面例4网页中复选框的使用前台网页文件名check.jsp网页中
14、复选框使用您希望选修课程: /注意,下面3个复选框用相同的名字 JSP程序设计 JSP实战案例 JavaScript程序设计 其后台网页文件名check_back.jsp网页中复选框使用您希望选修课程: % request.setCharacterEncoding(GBK); String names = request.getParameterValues(name);/因此,后台只能用词组方法接收 if(names != null) for(int i=0; inames.length; i+) out.println(namesi + ); %运行效果如下:图4-1输入信息界面图4-2显
15、示运行结果网页下面是一个混合使用getParameter()和getParameterValues()方法的例子。例5 书上第131页图4-10的例子: 注意网页是自处理文件。网页文件名radiocheck.jsp单选按钮与复选框% /将单选按钮选项值赋给str1 String str1 = request.getParameter(radiobutton); /将复选按钮多个选项内容赋给数组str2 String str2=request.getParameterValues(check); if(str1!=null & str2!=null) out.println(你经使用的是+str
16、1+上网); out.println(经常上网的地方是:);if(str2!=null)for(int i=0;i 你使用什么方式上网? ADSL 拨号上网 无线接入 DDN专线 你经常在什么地方上网? 家里 学校 网吧 运行后效果如下:图5-1 初始界面图5-2 点击“提交”后的界面3获得用户输入信息方法3- 方法getParameterNames()也可以用request的第3种方法获得用户输入信息:getParameterNames()。其用法为:用request的getParameterNames()方法将信息收取到一个枚举对象(即一个集合)中,该集合中放的是客户机传来的所有变量的名字
17、。用关于集合对象的操作方法获得这些变量名,然后用getParameter(“变量名”)获得传递来的该变量的值。示例如下:例:Enumeration e = request.getParameterNames();/e是一个集合对象while (e.hasMoreElements() String name = (String) e.nextElement();out.println(name);out.println(request.getParameter(name);getParameterNames的使用比较复杂。下面的例子将“选择城市”的那个例子-“可以复选的下拉框”改造成为用getP
18、arameterNames()方法来完成。例6 可以复选的下拉框:运行效果同例2前台网页文件名cities2.jsp允许复选的下拉框允许复选的下拉框北京市上海市济南市青岛市天津市后台网页文件名cities2_back.jsp允许复选的下拉框允许复选的下拉框您选择的城市是:%Enumeration e=request.getParameterNames();while(e.hasMoreElements()String name=(String)e.nextElement();if(name.equals(city)String cities=request.getParameterValues
19、(name);for(int i=0;icities.length;i+)out.println(+citiesi+);%4.2.2 request对象接收超链接传递过来的数据用户在客户机的浏览器显示网页时,除了用表单传递数据,也可以通过超链接来传递数据。表单传递方式优于超链接传递方式,因为后者只能传递固定的数据。前台网页中,对于超链接语句:链接文本稍做修改就可以传递数据。改为:链接文本例: JSP教程这样,当用户点击超链接文本”JSP教程”时,浏览器马上转去网页hyperlinkquery.jsp且携带变量str,其值为”JSP教程”。相应地,在后台网页hyperlinkquery.jsp中
20、,用和前段相同的方法可以收到这个数据:执行后,打印出“JSP教程”。见例7的第一种上例中,也可以携带多个变量值,如下例所示: JSP教程马上,后台也作相应改动:显然,这样传递过来的值是事先设计好的,是不变的,死的。例7 超链接和request配对使用方法举例:以下3个例子都是自处理文件。第一种 网页文件名getQueryString.jsp-教材第121页图4-5获取查询字符串JSP教程查询字符串为:运行后,效果如书图4-5中所示。初始时,如下:点击超链接“JSP教程”后,如下:可以看到,第二个图和书中的图4-5右图稍有不同,这是因为上段程序中使用getParameter()方法,而不是使用g
21、etQueryString()方法。第二种 网页文件名getParameter.jsp-教材第123页图4-6获取查询字符串中的变量值JSP教程str1值为:str2值为:num值为:运行后,效果如书图4-6。初始界面为: 点击超链接“JSP教程”后,效果如下:第三种 网页文件名getParameterValues.jsp-教材第124页图4-7获取一个变量的多个值JSP教程%/获取查询字符串中的变量str的多个值,将其赋给字符串数组sString s=request.getParameterValues(str);if(s!=null)/判断字符串是否为空for(int i=0;is.len
22、gth;i+)/通过循环显示数组元素内容out.println(第+(i+1)+个值为+si+);%运行后,效果如书图4-7。初始界面:点击超链接“JSP教程”后,效果如下:request除了上述3个方法外还有一些方法,如获取客户机的主机名、IP地些、端口号等。参见书中的介绍。注意:注1:有关数据类型转换的java语句片使用request对象的方法接收到的数据固定是String类型,那么int等类型的数据又怎么处理呢?处理方法是:先在后台网页中将这些数据当String类型接收下来,然后再对其进行转换,用到的方法有:Integer.parseInt()、Double.parseDouble()等
23、。使用这些句子会遇到一些问题,可能会发生异常。如下所示:上段程序中,Integer.parseInt()、Double.parseDouble()在内容为null或不能转为数字的情况下会发生异常和汇编错误,为防止这种情况,将上一段程序改为:注2:有关字符串是否相等的java语句片1. 等号只能用在有一方是null时:str1= =null 或str1!=null或str.length= =02. 若两边字符串都不空,要判断它们是否相等,不能用”=”:str1.equals(str2)3. pareto(str2)= =0 返回0表示2个字符串相等。注3:关于汉化问题若在提交的字符串中有中文字符,需要使用page指令将字符集设置为ISO8859_1,即将第一行的page句子改为:4.2.3 个人信息调查表案例8个人信息调查表本例实现一个简单的个人信息调查表:前台页面inputInfo.htm , 后台页面personInfo.jsp。前台网页文件名inputInfo.htm输入个人信息个人信息调查表姓 名:年 龄:学 历: 博士 硕士 本科 大专 高中 初中 Email: 爱好: 运动 旅游 服装 阅读 音乐
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 营养护理学重点课件
- 2026-2030中国酸奶饮品市场调研及发展策略研究报告
- 高中化学选择性必修一4.3 习题精练(原卷版)
- 高中化学选择性必修一3.2.2 习题精练(原卷版)
- 阿尔茨海默病诊断规范共识2026
- 数据科学与工程行业案例教程 习题及答案 第6章课后习题答案
- 第八章微专题12 测量电阻的其他方法课件2027届高考物理一轮复习
- 职业技术学校计算机教研组教研工作总结
- 太阳能板接地系统一体化施工建设方案
- Had数据基础技术 4
- 2026届浙江省普通高等学校招生全国统一考试仿真历史试题(含答案)
- 安徽省A10联盟2026届高三5月最后一卷历史试卷(含答案及解析)
- 智慧护理:护理创新的实践探索
- 2025-2030年老年交友相亲行业深度调研及发展战略咨询报告
- 2026年上海市春考语文试卷及答案
- 山东省青岛市2026年中考英语试题
- 2026年普通动物学通关试题库及参考答案详解【达标题】
- 2026年及未来5年市场数据中国妥尔油脂肪酸行业市场竞争格局及发展趋势预测报告
- 20kV及以下配电网工程预算定额(2022版)全5册excel版
- 《智慧旅游运营实务》 课件全套 模块1-6 智慧旅游发展认知 - 智慧旅游规划指引
- 2026年十五五时期东北全面振兴取得新突破战略规划深度解读
评论
0/150
提交评论