JSP基础内容提要4JSP语法1235主题网站网上调查内置对象总结与提高学习目标•掌握JSP的基本语法•熟练使用JSP内置对象•掌握JSP开发环境JSP内置对象概念和意义操作使用JSP基本语法JSP内置对象JSP的语法规范常用内置对象应用主题网站设计网上调查项目引入:主题网站预备知识——page指令•实例:%@pagecontentType=text/html;charset=GB2312%•作用:指定JSP页面的格式和文字编码(JSP程序必需);•实例:%@pageimport=java.io.*,“java.util.Date%•作用:为JSP页面引入java核心包中的类,可指定多个值。总结:page指令用来定义整个JSP页面的一些属性和这些属性的值。预备知识——静态include指令•格式:•%@includefile=“要插入的文件名“%•说明:文件可以是下列格式:–HTML文件;–JSP文件;–文本文件;–Java文件–……•分析:被插入的文件是彼此独立完整的文件吗?总结:把一个文件插入到当前JSP页面,合并成一个新的JSP页面知识储备——JSP注释•JSP程序注释格式:%//注释内容%注意:在注释内容中,可以出现除--%之外的任何内容,若需使用,必须使用转义字符“--%\”表示•客户端注释格式:!—客户端嵌入注释内容--•客户端动态注释:格式:!--静态注释内容%=表达式%静态注释内容--客户端注释嵌入动态数据,动态数据通过表达式来表示客户端注释是指在客户端HTML源码中显示的注释,JSP引擎不做任何解释,直接输出到客户端HTML源码JSP程序注释是对JSP程序进行的注释,服务器不会将其发送到客户端JSP表达式示例bodyh1JSP表达式/h1bPI的值:/b%=Math.PI%br/b100,99中最大的值:/b%=Math.max(100,99)%br/b100,99中最小的值:/b%=Math.min(100,99)%br/b3+2-5的值:/b%=3+2-5%br/b(3+2)==5的值:/b%=(3+2)==5%br/b(3+2)!=5的值:/b%=(3+2)!=5%br//body表达式演示:java表达式使用JSP表达式进行JSP编程JSP页面元素示例%@pagecontentType=text/html;charset=GBKlanguage=javaimport=java.util.Calendar%%!StringgetHello(Stringname){returnHi,+name+!;}%%Calendarnow=Calendar.getInstance();%JSP声明Java程序片JSP指令JSP页面元素•JSP页面的元素静态内容指令表达式Java程序JSP页面%Java代码%%=Java表达式%HTML静态文本以“%@”开始,以“%”结束。比如:%@includefile=Filename%声明动作%!函数或方法%以“jsp:动作名”开始,以“/jsp:动作名”结束比如:jsp:includepage=Filename/注释!--这是注释,但客户端可以查看到--%--这也是注释,但客户端不能查看到--%项目实现1.新建工程2.新建WebApplication3.html文件:head.html、welcome.html、special.htm、connectus.htm4.运用“include”指令,组合页面:%@includefile=“要插入的文件名“%5.JSP文件:welcome.jsp、special.jsp、connectus.jsp6.调试、运行项目功能改进——请大家完成练习•思路:•减少JSP文件个数;•超级链接的附带参数;•实现方法:1.链接方式:修改head.htm文件:ahref=index.jsp?choice=1专业首页/a2.获取链接地址:修改index.jsp文件:request.getParameter(choice);3.Include指令加载文件功能实现:——Form表单参数如下:ACTION:表单处理方式,指定数据传送“目的地”METHOD:数据传输方式,如post或get方法;ENCTYPE:传送表单数据的编码方式Form标记分析:传递数据吗?内置对象JSP页面隐式对象客户端响应请求响应请求服务器request内置对象•方法:getParameter(Strings)•作用:获取客户提交的信息;•使用:request.getParameter(Strings);•分析:“s”是表单控件的名称;•实例练习:获取用户提交数据的程序:request.jsp•分析:如果输入中文,出现什么情况JSP页面request对象客户端请求信息表示并存储客户端的请求请求服务器中文乱码处理处理思想:首先,将获取的字符串用ISO-8859-1进行编码,并将编码存放到一个字节数组中Stringstr=request.getParameter(“s”);Byteb[]=str.getBytes(“ISO-8859-1”);Str=newString(b);简写为:Stringstr=newString(request.getParameter(“s”).getBytes(“ISO-8859-1”));使用request对象的其他问题•实例:文本框中输入一个数字,计算其平方根代码1:%Stringdata2=request.getParameter(data);result=Math.sqrt(data2);%%=data2%的平方根是:%=result%代码2:%Stringdata2=request.getParameter(data);doubledata3,result;data3=Double.parseDouble(data2);//数据类型转换result=Math.sqrt(data3);%%=data2%的平方根是:%=result%代码3:%Stringdata2=request.getParameter(data);if(data2==null){data2=0;}//空对象处理doubledata3,result;data3=Double.parseDouble(data2);//数据类型转换if(data3=0){result=Math.sqrt(data3);%%=data2%的平方根是:%=result%%}else{%请输入一个整数%}%代码4(最终版):%Stringdata2=request.getParameter(data);if(data2==null){data2=0;}//空对象处理doubledata3,result;try{data3=Double.parseDouble(data2);//数据类型转换if(data3=0){result=Math.sqrt(data3);%%=data2%的平方根是:%=result%%}else{%请输入一个正数%}}catch(NumberFormatExceptione){%请输入数字字符%}%forward动作标签•格式:jsp:forwardpage=“要转向的页面”/jsp:forward•作用:从该指令处停止当前页面的继续执行,而转向其他JSP页面。•程序分析:forward.jsp%doublei=Math.random();if(i0.5){%jsp:forwardpage=“index.jsp/jsp:forward%}%param动作标签•格式:jsp:paramname=“名字”value=“指定给param的值”•作用:该标签可以与jsp:forward或者jsp:include标签一起使用,可以将param标签中的值传递到include指定或者forward指令要加载/转向的页面中。%doublei=Math.random();%jsp:forwardpage=come.jspjsp:paramname=numbervalue=%=i%//jsp:forward%Stringstr=request.getParameter(number);doublen=Double.parseDouble(str);%P您传过来的数值是:BR%=n%项目引入——网上调查•新建工程•页面设计:index.htm、newsselect.jsp、newsok.jsp预备知识——session内置对象Cookie:是一条极为短小的信息,能够被网站自动地放置在一台电脑的硬盘中。通过Cookie,网站可以识别你是第一次访问,或是又一次访问它。会话:从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开服务器结束,成为一个;Session用来保存客户端状态信息;客户端的每次访问都把上次的session记录传递给WebServer;WebServer读取客户端提交的session来获取客户端的状态信息;session常用方法•publicvoidsetAttribute(Stringkey,Objectobj);将Object指定的对象obj添加到session对象中,并为添加的对象指定一个索引关键字;•publicObjectgetAttribute(Stringkey);获取session对象中含有关键字是key的对象,由于任何对象都可以添加到session对象中,取回对象时,应强制转化为原来类型。•session.getId();获取session对象的编号类似方法:session.putValue(namesex,name+sex);Stringnamesex=(String)session.getValue(namesex);application对象•生命周期:服务器启动——服务器关闭•所有客户的application对象都是同一个。•例如:聊天室程序、计数器程序、留言板程序。•所有客户共享一个application对象•常用方法:getAttribute(Stringname)setAttibute(Stringname,Objectvalue)%application.setAttribute(“ChartRecord”,“hihi”);%%if(application.getAttribute(“ChartRecord”)!=null){StringchartRecord=(String)application.getAttribute(“ChartRecord”);}%out对象•表示输出流•javax.servlet.jsp.JspWriter类的实例•使用write()、print()和println()方法JSP页面out对象客户端创建输出流创建输出流以显示信息请求输出流在网页上显示输出流服务器out对象示例演示:示例htmlbody%out.print(“欢迎来到JSP:out对象”);out.write(“欢迎来到JSP:out对象”);%…/body/html使用out对象输出•使用out对象进行JSP编程总结•JSP表达式包括在%=%内;java程序包含在%%内;声明包含在%!%内•JSP指令共有三种类型,即page、include和taglib。JSP指令包括在%@和%内•page指令用于设置JSP页面的属性;include指令用于在JSP页面嵌入其他文件;forward动作标签用于页面跳转。•JSP中的内置对象:request、re