北方民族大学计算机学院JSP语法基础Web程序设计Outline01020304提纲ScriptletPage指令Include指令Forward指令1。JSP页面的基本结构JSP页面可由5种元素组合而成:①普通的HTML标记符;②JSP标记,如指令标记、动作标记;③成员变量和方法;④Java程序片;⑤Java表达式例子2-1.jsp%@pagecontentType=text/html;charset=GB2312%!--jsp指令标签--%@pageimport=java.util.Date%!--jsp指令标签--%!Datedate;//数据声明intsum;publicintadd(intm,intn)//方法声明{returnm+n;}%HTMLBODYbgcolor=cyan!—html标记--FONTsize=4P程序片创建Date对象:%Datedate=newDate();//java程序片out.println(BR+date);sum=add(12,34);%BR在下一行输出和:BR%=sum+100%!--Java表达式--/FONT/BODY/HTML例子页面结构解析%@pagecontentType=text/html;charset=GBK%jsp指令标签定义当前页面的属性contentType希望客户解析器来解析执行的方式例子3-1!—charset=ISO-8859-1字节编码,GBK亚洲文字双字节符,gb2312中国汉字编码规范%@pageimport=java.util.Date%jsp指令标签import引入java的核心类申明Java成员变量和方法,多个客户共享%!Datedate;//数据声明intsum;publicintadd(intm,intn)//方法声明{returnm+n;}%HTMLBODYbgcolor=cyanFONTsize=4P!—html标记--插入Java程序片:%Datedate=newDate();//创建Date对象//这里的变量是局部变量out.println(BR+date);sum=add(12,34);%BR在下一行输出和:BR%=sum+100%!--Java表达式,必须能求值,服务器计算,以字符形式显示在客户端--/FONT/BODY/HTML例子2_2.jsp%@pagecontentType=text/html;charset=GBK%HTMLBODYBGCOLOR=pinkFONTsize=4%!inti=0;%%i++;%P您是第%=i%个访问本站的客户。%intj=0;j++;%P这里是局部变量%=j%/BODY/HTML成员变量被所有用户共享局部变量只对当前客户线程有效JSP注释在JSP中支持两种注释的语法操作,一种是显式注释,这种注释客户端是允许看见的,另外一种是隐式注释,此种注释客户端是无法看见的。显式注释语法:!--注释内容--html注释隐式注释语法:格式一://注释,单行注释java注释格式二:/*注释*/多行注释java注释格式三:%--注释--%,JSP注释Scriptlet在JSP中最重要的部分就是Scriptlet(脚本小程序),所有嵌入在HTML代码中的Java程序都必须使用Scriplet标记出来,在JSP中一共有三种Scritplet代码:第一种:%%:在此Scriptlet中可以定义局部变量、编写语句第二种:%!%:在此Scritplet中,可以定义全局变量、方法、类第三种:%=%:用于输出一个变量或一个具体内容第一种Scriptlet:%%%//定义局部变量intx=10;Stringinfo=“你好;//编写语句out.println(h2x=+x+/h2);out.println(h2info=+info+/h2);%第二种Scriptlet:%!%%!publicstaticfinalStringINFO=helloworld;//定义全局常量%%!publicintadd(intx,inty){//定义方法returnx+y;}%%!classPerson{//定义Person类privateStringname;//定义name属性privateintage;//定义age属性publicPerson(Stringname,intage){//通过构造方法设置属性内容this.name=name;//为name属性赋值this.age=age;//为age属性赋值}publicStringtoString(){//覆写toString()方法returnname=+this.name+;age=+this.age;}}%%//编写普通的Scriptletout.println(h3INFO=+INFO+/h3);//输出全局常量out.println(h33+5=+add(3,5)+/h3);//调用方法out.println(h3+newPerson(zhangsan,30)+/h3);//生成对象%第三种Scriptlet:%=%%Stringinfo=同学们好;//定义局部变量inttemp=30;//定义局部变量%h3info=%=info%/h3%--使用表达式输出变量--%h3temp=%=temp%/h3%--使用表达式输出变量--%h3name=%=Jobs%/h3%--使用表达式输出常量--%2指令1——pagepage指令是在JSP开发中较为重要,使用此属性,可以定义一个JSP页面的相关属性,包括设置MIME类型、定义需要导入的包、错误页的指定等page指令语法:%@page属性=内容%主要属性No.指令属性描述1autoFlush可以设置true或false,如果设置为true,当缓冲区满时,到客户端的输出被刷新;如果设置为false,当缓冲区满时,将出现异常,表示缓冲区溢出。默认为true,例:autoFlash=true。2buffer指定到客户端输出流的缓冲模式。如果为none则表示不设置缓冲区;如果指定数值,那么输出的时候就必须使用不小于这个值的缓冲区进行缓冲。此属性要和autoFlush一起使用。默认不小于8K,根据不同的服务器可以设置。3contentType定义JSP字符的编码和页面响应的MIME类型,如果是中文的话则使用如下形式:contentType=text/html;charset=GBK4errorPage定义此页面出错时的要跳转的显示页,例:errorPage=error.jsp,要与isErrorPage属性一起使用。5extends主要定义此JSP页面产生的Servlet是从那个父类扩展而来,例:extends=父类名称。6import此jsp页面要导入那几个操作包,例:import=java.util.*。7info此JSP页面的信息,例:info=textinfo。8isErrorPage可以设置true或false,表示此页面是否为出错的处理页,如果设置成true,则errorPage指定的页面出错时才能跳转到此页面进行错误处理;如果设置成false,则无法处理。9isThreadSafe可以设置true或false,表示此页面是否是线程安全的,如果为true,表示一个JSP页面可以处理多个用户的请求;如果为false,则此JSP一次只能处理一个用户请求。10language用来定义要使用的脚本语言,目前只能是“java”,例:language=java。11pageEncodingJSP页面的字符编码,默认值为pageEncoding=iso-8859-1,如果是中文则可以设置为:pageEncoding=GBK。12session可以设置true或false,指定所在页面是否参与HTTP会话。默认值为true,例:session=true。设置文件编码使用contentType除了指定MIME类型之外,还使用了charset进行了页面编码的指定,当然,在page指令中也可以使用pageEncoding进行编码的指定。%@pagelanguage=“java”默认contentType=“text/html;charset=GBKpageEncoding=GBK%CENTERH2欢迎大家光临软件工程实训中心!/H2H3网址:指令2——Include使用包含操作,可以将一些重复的代码包含进来继续使用,静态嵌入静态包含语法%@includefile=要包含的文件路径%例子p3_1.jsp(三个文件之间有包含关系)info.htm文件内容:htmlbodyh2fontcolor=redinfo.htmfont/h2htmlbodyinfo.jsp文件内容:htmlbodyh2fontcolor=green%=info.jsp%font/h2htmlbodyP3_1.jsp文件内容:%@pagecontentType=text/htmlpageEncoding=GBK%htmlheadtitleWeb程序设计课程/title/headbodyh1静态包含操作/h1%@includefile=info.htm%%@includefile=info.jsp%/body/html静态包含的处理流程动态包含使用jsp:include指令可以完成动态包含的操作,与之前的静态包含不同,动态包含语句,可以自动区分被包含的页面是静态还是动态。动态包含语法:不传递参数:jsp:includepage={要包含的文件路径|%=表达式%}flush=true|false/传递参数:jsp:includepage={要包含的文件路径|%=表达式%}flush=true|falsejsp:paramname=参数名称value=参数内容/...可以向被包含页面中传递多个参数/jsp:include例子p3-2动态指令include格式一%@pagecontentType=“text/html”pageEncoding=GBK%htmlbodyh1静态包含操作/h1%@includefile=info.htm%%@includefile=info.jsp%h1动态态包含操作/h1jsp:includepage=“info.htm”/jsp:includepage=info.jsp“//body/html注意这里的引号运行的时候可能有问题例子p3-3:使用动态include指令并传递参数%@pagecontentType=text/htmlpageEncoding=GBK%htmlheadtitle,Web程序设计课程/title/headbody%Stringusername=Jobs;//定义一个变量%h1动态包含并传递参数/h1jsp:includepage=receive_param.jspjsp:paramname=“uservalue=%=username%/jsp:paramname=inf