




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JSP笔记之四第四章JSP内置对象(上)4.1 内部对象request 和ASP一样,JSP中也提供了一些特殊的对象来设计网页。和一般类的对象不同,这些对象在使用前不需要声明,直接就可以在网页中使用,所以称为“内置对象”。常用的有request、response、session、application、out 。4.2.1 request对象接收表单传来的数据request对象是非常重要、非常常用的一个内部对象。用于服务器获得客户端网页的信息。如用户提交的信息,或客户机自己内部的信息。request最常用的方法是getParameter()、getParameterValues()。使用方法如下:1文本框数据的采集getParameter方法:在一些网页中常常见到文本框、单选框、复选框、下拉框等,提供给用户输入信息。这些网页我们约定称为“前台网页”。在用户输入数据到这些框中时,网页设计者先要插入一个表单,将这些框括起来。即 /前台网页上一段语句中,提到“处理文件名”,其实就是后台网页文件。而上面的这一段语句应该在前台网页中。后台网页中,对应的文本框name1变量的值由request.getParameter(“name1”) 获得,即可由request内部对象的getParameter方法来得到客户机传来的信息,而接收到的信息是String类型的,可以按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建立交互式网页。前台网页文件名front.jsp 用户名: 密码: 后台网页文件名back.jsp%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. 方法getParameterValues若一个表单域有多个输入值,则需要用到方法getParameterValues(“”)。有时,复选框、下拉框、组合框这些表单域使用相同的name名,但却可以接收多个选项,这时若使用getParameter方法就无法接收所有数据(只能接收到第一个数据),只能改为用数组方式接收,即用request对象的另一个方法-getParameterValues()。如:String cities =request.getParameterValues(“select1”);for(int i=0;icities.length;i+)out.println(“”+citiesi);在下题的第2种情况中,对getParameterValues(“”)的用法有所示范。例2 列表框在页面交互中的应用第1种 不允许复选的下拉框前台网页文件名city.jsp其处理文件(后台网页)名city_back.jsp运行效果如下说明:图2-1运行界面图2-2提交后的界面第2种允许复选的下拉框前台网页文件名cities.jsp允许复选的下拉框允许复选的下拉框北京市上海市济南市青岛市天津市其后台网页文件名cities_back.jsp允许复选的下拉框允许复选的下拉框您选择的城市是:%String citys=request.getParameterValues(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网页中复选框使用您希望选修课程: 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显示运行结果网页下面是一个混合使用getParameter()和getParameterValues()方法的例子。3获得用户输入信息方法3- 方法getParameterNames()也可以用request的第3种方法获得用户输入信息:getParameterNames()。其用法为:用request的getParameterNames()方法将信息收取到一个枚举对象(即一个集合)中,该集合中存放的是客户机传来的所有变量的名字。用关于集合对象的操作方法获得这些变量名,然后用getParameter(“变量名”)获得传递来的该变量的值。示例如下:例:Enumeration e = request.getParameterNames();/e是一个集合对象while (e.hasMoreElements() String name = (String) e.nextElement();out.println(name);out.println(request.getParameter(name);getParameterNames的使用比较复杂。下面的例子将“选择城市”的那个例子-“可以复选的下拉框”改造成为用getParameterNames()方法来完成。例5 可以复选的下拉框:运行效果同例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(name);if(cities!=null)int l=cities.length;out.println();for(int i=0;il;i+)out.println(i+1+. +citiesi+);%4关于网页交互中的标头:当用户访问一个JSP页面时,会提交一个HTTP请求给Tomcat服务器。这个请求包括一个请求行、HTTP头和信息体,例如:POST/E.jsp/HTTP.1.1/请求行,规定了向访问的页面请求提交信息的方式,如post/get等方法,以及请求的页面的文件名字和使用的通信协议。host:localhost:8080/头,host称为头名字,而localhost:8080是头host的值。Accept-encoding:gzip,deflate/一个头,Accept-encoding是头名,gzip,deflate是该头的值。一个典型的请求通常包含很多的头,有些头是标准的,有些头与特定的浏览器有关。尽管接收用户提交的HTTP请求中表单的信息,来进行相应处理非常重要,但实际上,使用request对象调用相关方法可以获取请求的许多细节信息。request对象的常用方法见教材。4.1.2 request对象接收超链接传递过来的数据用户在客户机的浏览器显示网页时,除了用表单传递数据,也可以通过超链接来传递数据。表单传递方式优于超链接传递方式,因为后者只能传递固定的数据。前台网页中,对于超链接语句:链接文本稍做修改就可以传递数据。改为:链接文本例: JSP教程这样,当用户点击超链接文本”JSP教程”时,浏览器马上转去网页hyperlinkquery.jsp且携带变量str,其值为”JSP教程”。相应地,在后台网页hyperlinkquery.jsp中,用和前段相同的方法可以收到这个数据:执行后,打印出“JSP教程”。见例7的第一种上例中,也可以携带多个变量值,如下例所示: JSP教程马上,后台也作相应改动:显然,这样传递过来的值是事先设计好的,是不变的,死的。例6 超链接和request配对使用方法举例:以下3个例子都是自处理文件。第一种 网页文件名getQueryString.jsp获取查询字符串JSP教程查询字符串为:运行后,效果如书图4-5中所示。初始时,如下:(因为还没有点击超链接,所以没有传值,所以str收到的值为null。)点击超链接“JSP教程”后,如下:(点击超链接后,str收到的值为:JSP教程)第二种 网页文件名getParameter.jsp获取查询字符串中的变量值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.length;i+)/通过循环显示数组元素内容out.println(第+(i+1)+个值为+si+);%运行后,效果如书图4-7。初始界面:点击超链接“JSP教程”后,效果如下:request除了上述3个方法外还有一些方法,如获取客户机的主机名、IP地些、端口号等。参见书中的介绍。注意:注1:关于空对象null(非常重要)使用request对象获取信息时要小心空对象null。比如:在网页中,用:String text1=request.getParameter(“boy”);获取提交的字符串信息,并且在后面的代码使用这个字符串对象(如if(text.equals(“面包”).) ,则在使用之前一定要做null处理。因为,Tomcat服务器在运行这个JSP页面生成的字节码文件时,可能用户还没来得及输入信息,因此上述的text1可能还是null空对象。如果还没有创建对象,就使用了该对象,Java解释器就会出现NullPointerException异常的汇编错误。因此,为了避免出现这种汇编错误,要对空对象进行处理,以提高程序的健壮性。方法如下:String text1=request.getParameter(“boy”);if(text1=null)Text1=”;注2:有关数据类型转换的java语句片使用request对象的方法接收到的数据固定是String类型,那么int等类型的数据又怎么处理呢?处理方法是:先在后台网页中将这些数据当String类型接收下来,然后再对其进行转换,用到的方法有:Integer.parseInt()、Double.parseDouble()等。反之,从int(double)转换为String型,则要用到:String.valueOf()。如: String str=String.valueOf(132); 则执行后,str=”132”。使用这些句子会遇到一些问题,可能会发生异常。如下所示:上段程序中,Integer.parseInt()、Double.parseDouble()在内容为null或不能转为数字的情况下会发生异常和汇编错误,为防止这种情况,将上一段程序改为:注3:有关字符串是否相等的java语句片1. 等号只能用在有一方是null时:str1= =null 或str1!=null或str.length= =02. 若两边字符串都不空,要判断它们是否相等,不能用”=”:str1.equals(str2)3. pareto(str2)= =0 返回0表示2个字符串相等。注4:关于汉化问题第1种方法:若在网页中有中文字符,需要使用page指令将字符集设置为gb2312,即将第一行的page句子改为:第2种方法:类似于第1种,如下:第3种方法:类似于第1种,如下:第4种方法:类似于第1种,如下:第5种方法:如果你的网页中有文本框或其它控件,当提交中文数据后该数据不能正常显示,而英文数据都能正常显示,则每
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 鱼我所欲也课件
- 高顿网校注会课件价格
- 济南市2024-2025学年九年级上学期语文期末测试试卷
- 高铁供电安全知识培训课件
- 电芯基础知识培训
- 电脑知识培训教材课件
- 电力设施迁改合同(货币补偿)
- rtk考试题及答案
- pisa考试试题及答案
- 电网基础知识培训课程内容课件
- 银行科技架构管理办法
- 小学冠词教学课件
- 110接处警课件培训
- 大模型时代:生成式AI发展与科技创新范式
- 江苏欧立可化工新材料有限公司年产10万吨石油添加剂N-甲基苯胺项目环评资料环境影响
- 黄浦区2024-2025学年六年级下学期期末考试数学试卷及答案(上海新教材沪教版)
- 2025-2030中国香皂市场销售动态及竞争策略分析报告
- 劳动仲裁内部培训
- 中国方言课件图文教学
- 中国市政工程专业市场深度调查评估及投资方向研究报告
- 女职工普法宣传教学课件
评论
0/150
提交评论