2020/1/191JavaWeb开发技术第2章JSP基础授课教师:伊飞网站:中国网页设计中国网页设计中国网页设计页面的基本组成一个JSP页面是由传统的HTML页面标记加上JSP标记和嵌入的Java代码组成。JSP页面组成:1.HTML标记2.JSP标记如指令标记、动作标记3.JSP脚本:是JSP页面中插入的Java代码,它又可以细分为变量和方法的声明、代码段和表达式。2020/1/19中国网页设计中国网页设计声明概述声明块包含在%!和%中。包括变量声明、方法声明和声明类三种。2020/1/19中国网页设计变量声明用于定义特定于JSP页面的变量,%!和%之间声明的变量在整个JSP页面内都有效,可以被该JSP页面中其他任何部分使用。其语法形式为:%!变量声明%声明的变量类型可以是Java语言中允许的任何数据类型。例:%!inta,b=100,c;Stringusername=“张三”;Datedate;%2020/1/19中国网页设计变量声明%!变量声明%可以写在JSP页面的任意位置,但习惯上写在JSP页面前面。如:%!Datedate;intstart,end,sum;%HTMLBODY2020/1/19中国网页设计变量声明JSP引擎将JSP页面中%!变量声明%声明的变量作为类的成员变量,所有用户共享JSP页面的成员变量,因些任何一个用户对JSP页面成员变量的操作,都会影响到其他用户。%@pagecontentType=text/html;charset=GB2312%HTMLBODY%!inti=0;%%i++;%P您是第%=i%个访问本站的客户。/BODY/HTML2020/1/19中国网页设计变量声明扩展声明在%!%内的变量和方法是成员变量和成员方法。声明在%%内的变量是一个方法的变量也就是局部变量。我们学习JAVA的时候就知道成员变量会被多个对象共享,而局部变量单独对象访问。%@pagecontentType=text/html;charset=GB2312%HTMLBODY%inti=0;%%i++;%P您是第%=i%个访问本站的客户。/BODY/HTML2020/1/19中国网页设计方法声明声明的方法在JSP页面有效,它编译成Servlet类的成员方法。可以由页面上所有脚本元素访问。其语法形式为:%!方法声明%方法声明方式跟Java中方法定义的形式一样,要给出方法返回类型、方法名、方法形参和方法体。在%%内不可以包含方法2020/1/19中国网页设计方法声明%@pagecontentType=text/html;charset=GB2312%HTMLBODY%!doublemulti(doublex,doubley){returnx*y;}doublediv(doublex,doubley){returnx/y;}%%out.println(调用multi方法计算12和18之积:);doublea=multi(12,18);out.println(a);out.println(BR调用div方法计算12除以4的商:);doubleb=div(12,4);out.println(b);%/BODY/HTML2020/1/19中国网页设计补充:表单(FORM)标记表单的基本语法:formaction=urlmethod=get/postinputtype=“textname=“username”/inputtype=submitvalue=提交/inputtype=resetvalue=重置//form*=GET有数据量限制,长度不超过255。POST无以上限制。2020/1/19中国网页设计补充:表单数据的获取Request对象可以通过request.getParameter(“username”);获取。%Stringusername=request.getParameter(username);out.println(你提交的用户名是:+username);%2020/1/19中国网页设计表单传值中文显示乱码的解决方法方法一:1.把Stringname=request.getParameter(name);修改为:Stringname=newString(request.getParameter(name).getBytes(ISO-8859-1),GB2312);2020/1/19中国网页设计方法二:使用转换函数转换toChinese()%!publicstaticStringtoChinese(Stringstrvalue){try{if(strvalue==null)returnnull;else{strvalue=newString(strvalue.getBytes(ISO-8859-1),GB2312);returnstrvalue;}}catch(Exceptione){returnnull;}}%2020/1/19中国网页设计方法二:使用转换函数转换toChinese()凡是涉及中文字符串,如从数据库中读取中文字符串,或变量名赋值时,使用toChinese函数:out.println(你提交的用户名是:+toChinese(username));2020/1/19中国网页设计声明类声明类是JSP页面对应的Servlet类的内部类,页面上所有脚本元素都可以创建该类的对象。其语法形式为:%!声明类%例2_4.jspformaction=2_4.jspmethod=getname=forminputtype=textname=catvalue=1inputtype=submitname=submitvalue=送出/form2020/1/19中国网页设计声明类%!publicclasssquare{doubler;square(doubler){this.r=r;}doublegetarea(){returnr*r;}doublegetlength(){returnr*4;}}%2020/1/19中国网页设计声明类%Strings=request.getParameter(cat);doubler;if(s!=null){r=Double.valueOf(s).doubleValue();}else{r=1;}squarecc=newsquare(r);//创建对象%P方的面积是:BR%=cc.getarea()%p方的周长是%=cc.getlength()%2020/1/19中国网页设计程序片Java程序片是包含在%和%之间的Java代码片段,包含一个或多个有效语句。其语法形式为:%Java代码%程序片中声明的变量称为JSP页面的局部变量多个客户请求一个JSP页面时,Java程序片将被执行多次,分别在不同的线程中执行。synchronized方法控制对类成员变量的访问,实现同步的机制。2020/1/19中国网页设计方法%!intcount=0;//被客户共享的countsynchronizedvoidsetCount()//synchronized修饰的方法{count++;}%%setCount();out.println(您是第+count+个访问本站的客户);%2020/1/19中国网页设计页面可以有多个代码段,它们被JSP引擎按顺序执行。2.在代码段中也可以声明变量,但这些变量是局部变量,它们在JSP页面内所有代码段部分和表达式部分有效。2020/1/19中国网页设计代码段的注意事项(续)3.当JSP页面包含多个Java代码段时,这些代码段之间可以插入一些标记元素。4.当客户请求一个JSP页面时,JSP引擎为每个客户产生一个线程,每个线程分别执行各自的_jspService()方法,因此一个客户对局部变量的操作不会影响其它客户。2020/1/19中国网页设计在“%=”和“%”之间插入Java表达式.2.表达式的值由服务器负责计算,并将计算结果用字符串形式发送到客户端显示。2020/1/19中国网页设计表达式%doublea=8;intx=12,y=10;%%=a+x*y-100/y+x%5%%=xy&&a0%%=Math.sin(x)+Math.cos(y)%BR求8的平方根:%=Math.sqrt(8)%2020/1/19中国网页设计表达式的注意事项(1)“%=”是一个完整的符号,“%”和“=”不能插入空格。(2)表达式可以包含任何Java表达式,只要表达式可以求值。(3)表达式中不能插入语句,也不能以分号结束。2020/1/19中国网页设计表达式的注意事项(4)表达式是Java代码段的一种简单书写方式,其功能和代码段等效。%=“number”+i%%out.print(“number”+i);%相当于假如i值为5,则:打印:number5图2-15表达式与Java代码段的功能等价示意图2020/1/19中国网页设计中国网页设计注释HTML注释是使用标签“!”和“”创建的语法形式:!--注释--htmlheadtitleHTML注释/title/headbody!--HTML注释--未显示上一行的注释。/body/html2020/1/19中国网页设计隐藏注释隐藏注释也称为JSP注释,只能在原始JSP文件中看到。语法形式:%--注释--%htmlbodyh2ATestofComments/h2%--Thiscommentwillnotbevisibleinthepagesource--%/body/html2_6.jsp2020/1/19中国网页设计脚本注释在JSP