JavaWeb开发计算机系孙杰JSP基础语法本章内容1.JSP的基本概念2.JSP语法3.JSP内置对象4.JSP内置对象开发实例5.JSP与表单编程3.1JSP的基本概念什么是JSP:JavaServerPageJava的动态网页技术,是JavaWeb应用开发的界面技术;JSP是在Servlet技术基础上,为了方便页面开发的简化设计,是将Java逻辑与界面设计分开,开发更方便;HTML中嵌入Java脚本:HTML语法的java扩展,加入新的标签(%,%,…);3.1JSP的基本概念JSP的特点:从技术上改进了Servlet技术,Servlet是Java代码和HTML静态代码的混合代码;而JSP是将Java代码嵌入到HTML静态代码中,直观编写简单;JSP不需要编译(实际上是由服务器自动监测JSP文件的变化,由服务器将其翻译成Java代码后然后再进行编译并再第一次请求时创建一个Servlet实例。正因为如此,第一次访问JSP页面时会后延迟);JSP以静态代码为主,Java代码为辅;功能由强大的Java语言和J2EE平台提供支持;JSP文件结构及主要标签%@pagecontentType=text/html;charset=gb2312%%@pageimport=java.util.*“%...HTMLBODY其他HTML语言%符合JAVA语法的JAVA语句%其他HTML语言/BODY/HTMLJSP示例(Hello.jsp)%@pagecontentType=text/html;charset=gb2312%%@pageimport=java.util.*%HTMLBODY%for(inti=0;i2;i++){%你好br%}%/BODY/HTMLHTMLBODY你好br你好br/BODY/HTMLJSP执行过程*.jsp*.java*.classrequestresponse执行jspparserJSDKservletservlet分析器JSP执行过程查找对应的JSP文件是否存在YN是否是修改或创建后第一次调用Y调用JspParser将其编译成Servlet程序调用JSDK将对应的Servlet程序编译成Servlet字节码执行(若未载入则先载入)已有的对应的Java字节码NJSP示例(Hello_Date.jsp)%@pageimport=java.util.*%%@pagecontentType=text/html;charset=gb2312%HTMLBODY你好,今天是%Datetoday=newDate();%%=today.getDate()%号,星期%=today.getDay()%/BODY/HTMLimportjava.util.*;response.setContentType(text/html;charset=gb2312);out=pageContext.getOut();out.write(“\r\n\r\nHTML\r\nBODY\r\n你好,今天是\r\n);Datetoday=newDate();out.print(today.getDate());out.write(号,星期);out.print(today.getDay());out.write(\r\n/BODY\r\n/HTML\r\n);JSP文件servlet文件JSP示例(浏览结果)3.2JSP语法语法概述JSP原始代码中包含了JSP元素和Template(模板)data两类Templatedata指的是JSP引擎不处理的部分,即标记%……%以外的部分,例如代码中的HTML的内容等,这些数据会直接传送到客户端的浏览器JSP元素则是指将由JSP引擎直接处理的部分,这一部分必须符合JSP语法,否则会导致编译错误。jsp例子(hi.jsp)htmlheadtitleHi-JSP实验/title/headbody%StringMsg=ThisisJSPtest.;out.print(HelloWorld!);%h2%=Msg%/h2/body/htmlTemplatedataJSP元素JSP语法JSP语法分为三种不同的类型编译器指令(DIRECTIVE)例如:%@pageimport=“java.io.*”%脚本语法(SCRIPTING)动作语法(ACTION)例如:jsp:forward,jsp:getProperty,jsp:include1.脚本语法脚本语法包括“HTML注释”:!—comments--“隐藏注释”:%--comments--%“声明”“表达式”“脚本段”2.编译器指令编译器指令包括“包含指令”,“页指令”和“taglib指令”它们包含在“%@%”卷标里。两个主要的指令是page与include。3.动作语法动作语法包括jsp:forward,jsp:include,jsp:plugin,jsp:getProperty,jsp:setProperty和jsp:useBean。HTML注释JSP语法格式如下:!--comment[%=expression%]--或!--注释[%=表达式%]--这种注释发送到客户端,但不直接显示,在源代码中可以查看到。HTML注释(peixun2.1.jsp)htmlheadtitleHTML注释/title/headbody!--Thisfiledisplaystheuserloginscreen--未显示上一行的注释。/body/htmlHTML注释HTML注释(peixun2.2.jsp)htmlheadtitle要多加练习/title/headbody!--Thispagewasloadedon%=(newjava.util.Date()).toLocaleString()%--在源文件中包括当前时间。/body/htmlHTML注释IE中的源程序有注释隐藏注释JSP语法格式如下:%--注释--%不发送到客户端。隐藏注释(peixun2.3.jsp)htmlheadtitleACommentTest/title/headbodyh2ATestofComments/h2%--Thiscommentwillnotbevisibleinthepagesource--%/body/html隐藏注释在IE中查看源代码声明JSP语法格式如下:%!declaration;[declaration;]...%或%!声明;[声明;]...%声明(test2.4.jsp)%@pagelanguage=”java”import=”java.util.*”%htmlheadtitletest2.4.jsp/title/headbody%!inti=0;%%!inta,b,c;%%!Datedate;%/body/html表达式用于在页面上输出信息,语法格式如下:%=expression%或%=表达式%表达式(peixun2.4.jsp)%@pagelanguage=javaimport=java.util.*%htmlheadtitletest/title/headbodycenter%!Datedate=newDate();%%!inta,b,c;%表达式%a=12;b=a;c=a+b;%fontcolor=blue%=date.toString()%/fontbrba=%=a%/bbrbb=%=b%/bbrbc=%=c%/bbr/center/body/htmlpeixun2.4.jsp执行结果脚本JSP语法格式如下:%codefragment%或%代码%脚本(peixun2.5.jsp)%@pagelanguage=javaimport=java.util.*%%!intcondition;%htmlheadtitletest/title/headbody%condition=1;switch(condition){case0:out.println(Youmustselectcondition0!+br);break;case1:out.println(Youmustselectcondition1!+br);break;case2:out.println(Youmustselectcondition2!+br);break;default:out.println(Yourselectnotin\0,1,2\,selectagain!!+br);}%/body/html转义符:双引号\“,单引号\’,反斜杠\\,回车\r,换行\n,制表符\t,退格\b脚本执行结果包含指令include指令:向当前页中插入一个静态文件的内容。静态文件是指文件名称不能是变量,并且不能改变JSP语法格式如下:%@includefile=relativeURL%包含指令(peixun2.6.jsp)htmlheadtitletest/title/headbodybgcolor=whitefontcolor=blueThecurrentdateandtimeare%@includefile=“peixun2.6.1.jsp%/font/body/html“peixun2.6.1.jsp”%@pageimport=java.util.*%%=(newjava.util.Date()).toLocaleString()%包含指令Page指令“Page”指令用于定义JSP文件中的全局属性。JSP语法格式如下:%@page[language=java][extends=package.class][import={package.class|package.*},...][session=true|false][buffer=none|8kb|sizekb]Page指令[autoFlush=true|false][isThreadSafe=true|false][info=text][errorPage=relativeURL][contentType=mimeType[;charset=characterSet]|text/html;charset=ISO-8859-1][isErrorPage=true|false]%Page指令属性:1.language=java声明脚本语言的种类,目前只能用java。2.import={package.class|package.*},...需要导入的Java包的列表,这些包作用于程序段,表达式,以及声明。下面的包在JSP编译时已经导入了,所以就不需要再指明了:java.lang.*javax.servlet.*javax.servlet.jsp.*javax.servlet.http.*Page指令3.errorPage=relativeURL设置处理异常事件的JSP文件。4.isErrorPage=true|false设置此页是否为出错页,如果被设置为true,你就能使用exception对象page指令详说“%@page%”指令作用于整个JSP页面,同样包括静态