您好,欢迎访问三七文档
Java高级部分:JavaServerPage(JSP)2课程目录•课程目标–理解JSP的概念、工作机制、语法、内置对象–可以进行一般的JSP编程•学员对象–学习过基础Java,对Web有一些了解•课程安排–讲授+上机操作3课程内容•JSP概念•JSP语法•JSP内置对象•与JSP相关的HTML表单•JSP与客户机的交互4JSP的概念JavaServerPage•Servlet简化设计,逻辑与界面设计分开,开发更方便;•HTML语法的java扩展,加入新的标签(%,%,…);•强大的组件(JavaBean)支持功能;5JSP文件结构及主要标签%@pagecontentType=text/html;charset=gb2312%%@pageimport=java.util.*“%...HTMLBODY其他HTML语言%符合JAVA语法的JAVA语句%其他HTML语言/BODY/HTML6JSP示例(Hello.jsp)%@pagecontentType=text/html;charset=gb2312%%@pageimport=java.util.*%HTMLBODY%for(inti=0;i2;i++){%你好br%}%/BODY/HTMLHTMLBODY你好br你好br/BODY/HTML7JSP执行过程•*.jsp*.java*.classrequestresponse执行jspparserJSDKservletservlet分析器8JSP•执行过程查找对应的JSP文件是否存在YN是否是修改或创建后第一次调用Y调用JspParser将其编译成Servlet程序调用JSDK将对应的Servlet程序编译成Servlet字节码执行(若未载入则先载入)已有的对应的Java字节码N9JSP示例(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文件10JSP示例(浏览结果)11JSP语法概述•JSP原始代码中包含了JSP元素和Template(模板)data两类•Templatedata指的是JSP引擎不处理的部分,即标记%……%以外的部分,例如代码中的HTML的内容等,这些数据会直接传送到客户端的浏览器•JSP元素则是指将由JSP引擎直接处理的部分,这一部分必须符合JSP语法,否则会导致编译错误。12jsp例子(hi.jsp)htmlheadtitleHi-JSP实验/title/headbody%StringMsg=ThisisJSPtest.;out.print(HelloWorld!);%h2%=Msg%/h2/body/htmlTemplatedataJSP元素13JSP语法•JSP语法分为三种不同的类型编译器指令(DIRECTIVE)例如:%@pageimport=“java.io.*”%脚本语法(SCRIPTING)动作语法(ACTION)例如:jsp:forward,jsp:getProperty,jsp:include14脚本语法•脚本语法包括–“HTML注释”:!—comments--–“隐藏注释”:%--comments--%–“声明”–“表达式”–“脚本段”15编译器指令•编译器指令包括“包含指令”,“页指令”和“taglib指令”•它们包含在“%@%”卷标里。•两个主要的指令是page与include。16动作语法动作语法包括jsp:forward,jsp:include,jsp:plugin,jsp:getProperty,jsp:setProperty和jsp:useBean。17HTML注释•JSP语法格式如下:•!--comment[%=expression%]--或•!--注释[%=表达式%]--•这种注释发送到客户端,但不直接显示,在源代码中可以查看到。18HTML注释(jsp2.1.jsp)htmlheadtitleHTML注释/title/headbody!--Thisfiledisplaystheuserloginscreen--未显示上一行的注释。/body/html19HTML注释20HTML注释(jsp2.2.jsp)htmlheadtitle要多加练习/title/headbody!--Thispagewasloadedon%=(newjava.util.Date()).toLocaleString()%--在源文件中包括当前时间。/body/html21HTML注释22IE中的源程序有注释23隐藏注释•JSP语法格式如下:%--注释--%•不发送到客户端。24隐藏注释(jsp2.3.jsp)htmlheadtitleACommentTest/title/headbodyh2ATestofComments/h2%--Thiscommentwillnotbevisibleinthepagesource--%/body/html25隐藏注释26在IE中查看源代码27声明•JSP声明语法格式如下:•%!declaration;[declaration;]...%或•%!声明;[声明;]...%28声明(jsp2.4.jsp)%@pagelanguage=”java”import=”java.util.*”%htmlheadtitlejsp2.4.jsp/title/headbody%!inti=0;%%!inta,b,c;%%!Datedate;%/body/html29表达式•用于在页面上输出信息,语法格式如下:•%=expression%或•%=表达式%30表达式(jsp2.4.jsp)%@pagelanguage=javaimport=java.util.*%htmlheadtitletest/title/headbodycenter%!Datedate=newDate();%%!inta,b,c;%31表达式%a=12;b=a;c=a+b;%fontcolor=blue%=date.toString()%/fontbrba=%=a%/bbrbb=%=b%/bbrbc=%=c%/bbr/center/body/html32jsp2.4.jsp执行结果33脚本段•JSP脚本语法格式如下:•%codefragment%或•%代码%34脚本段(jsp2.5.jsp)%@pagelanguage=javaimport=java.util.*%%!intcondition;%htmlheadtitletest/title/headbody35%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脚本段(jsp2.5.jsp)36脚本段执行结果37包含指令•include指令:向当前页中插入一个静态文件的内容。•JSP语法格式如下:•%@includefile=relativeURL%或•%@includefile=相对位置%38包含指令(jsp2.6.jsp)htmlheadtitletest/title/headbodybgcolor=whitefontcolor=blueThecurrentdateandtimeare%@includefile=“jsp2.6.1.jsp%/font/body/html39“jsp2.6.1.jsp”%@pageimport=java.util.*%%=(newjava.util.Date()).toLocaleString()%40包含指令41Page指令•“Page”指令用于定义JSP文件中的全局属性。JSP语法格式如下:%@page[language=java][extends=package.class][import={package.class|package.*},...][session=true|false][buffer=none|8kb|sizekb]42Page指令[autoFlush=true|false][isThreadSafe=true|false][info=text][errorPage=relativeURL][contentType=mimeType[;charset=characterSet]|text/html;charset=ISO-8859-1][isErrorPage=true|false]%43Page指令属性:1.language=java声明脚本语言的种类,目前只能用java。2.import={package.class|package.*},...需要导入的Java包的列表,这些包作用于程序段,表达式,以及声明。下面的包在JSP编译时已经导入了,所以就不需要再指明了:java.lang.*javax.servlet.*javax.servlet.jsp.*javax.servlet.http.*443.errorPage=relativeURL设置处理异常事件的JSP文件。4.isErrorPage=true|false设置此页是否为出错页,如果被设置为true,你就能使用exception对象Page指令45page指令详说•“%@page%”指令作用于整个JSP页面,同样包括静态的包含文件。但是“%@page%”指令不能作用于动态的包含文件,比如“jsp:include”。•可以在一个页面中用上多个“%@page%”指令,但是其中的属性只能用一次,不过也有例外,那就是import属性。因为import属性和Java中的import语句类似(参照JavaLanguage,import语句引入得是Java语言中的类),所以此属性就能多用几次。•无论把“%@page%”指令放在JSP
本文标题:jsp
链接地址:https://www.777doc.com/doc-3424649 .html