jsp语法

1   Elements 和 Template Data

Template Data:jsp container 不处理的部分,如heml的内容,会直接发到client端执行

Elements: 必须经由jsp container 处理的部分,大部分element都是以XML作为语法基础,并且大小写必须一致

element四中类型;Directive Element、Scripting Elements、Action Element是 和EL Element

标签两种写法,一种是带value属性的,一种是将value作为值来写的,即又开始和结尾标签


2   批注(conments)

客户端可以看到的批注:

<!-- comment [<%=expression %>] -->

如: <!-- 现在时间:[<%=(new java.util.Date()).toLocaleSing() %>] -->

会在html源文件中显示为:

<!-- 现在时间:January 1,2004 -->

这种和html很像,可以使用查看源代码来查看,不同的是,可以在批注上加上动态的表达式


开啊程序员专用的批注:

<%-- comment --%>

<% /** this is a comment **/ %>

这种在jsp编译时会被忽略掉,通常程序员可以用此来调试(debug)程序


3   Quoting 和 Escape 规则

在程序输入的内容如:out.printl(“ content”);

当content中又特殊符号如:%>  单引号 ‘ 双引号“ 斜线 / \时,都需要在前边加上斜线\ 作为转义  

起始标签<% 可以改为 &lt;%   结束标签可以改为%\>

否则可能引起网页错误500


4   Directive Elements

指令(Directives):主要用来提供整个jsp网页相关的信息,应用来设定jsp网页相关属性,如:网页编码方式、语法、信息等。

起始符号:<%@

终止符号:%>

内文为一些指令和一连串的属性设定,如:<%@ directive {attribute = "value"} * %>

三种指令:page、include 和 taglib

page: 设定整个jsp页面的属性和相关功能,语法:

<%@ page attribute1 = "value" attribute2 = "value2"  %>

page拥有11和属性:

language = ”scriptingLanguage" :指定jsp Container要用什么语言来编译jsp网页,目前可以用java,日后可能有:c、c++、perl等,默认为java

extends = "className" :定义次jsp网页产生的servlet是继承的哪个父类

import = "importList" :定义jsp网页可以使用哪些java API  多个写在一个import里边时,需要用都好隔开

session = "true|flase" :决定jsp网页是否可以使用session对象,默认为true

buffer = "none | size in kb"  :决定输出流是否有缓冲区,默认为8kb缓冲区

autoFlush = "true| false" :决定输出流缓冲区是否自动清除,缓冲区满后后出现(exception)异常,默认为ture

isThreadSafe = "true|false" :主要告诉此jsp container,此jsp网页可以处理超过一个以上的请求,默认为true

info = "text" :主要表示此jsp的相关信息

errorPage = "error-url" :发生异常时,此页面会被指向哪一个页面url

contentType = "ctinfo" :表示mime 类型和jsp网页的编码方式

pageEncoding = "ctinfo" :表示jsp网页的编码方式

isELIgnored = "true | false“ : 表示jsp网页是否忽略el表达式


include指令:在jsp编译时,可以插入一个包含文件或者代码的文件,这个包含的过程是静态的,包含的文件可以使jsp网页、html网页、文本文件或是一段java程序

包含文件中要避免使用html中的标签,以避免和原来的jsp页面中的标签相混淆

语法:<%@ include file = "value"  %>      只有这一个属性  file   value 表示的是file的路径

这一指令为静态包含,所谓静态包含指:file不能为一个变量的URL,如:

< % @include file = "<%= URL %>" %>  即为错误的

同时,file所致的路径必须是相对于此JSP网页的路径,路径中无任何参数

位置可以在body里边


taglib指令:能够让用户自定义新的标签

语法:<%@ taglib url = "taglibraryURI" prefix = ”tagPrefix”  %>

属性:

uri = “taglibraryURI” : 说明taglibrary的存放位置

prefix = “tagPrefix” :主要用来区分多个自定义的标签

如:

<%@ tablib uri = "/supertags/" prefix = "super" %>

..................

<super: doMagic>

.........

..........

</super:doMagic>


5   Scripting Elements

1)声明(declarations)

2)Scriptlets

3)表达式(Expressions)


声明:

语法:<%! declaration  %> 里边可以使变量或者方法

若想在每一个页面都用到一些声明,可以把这些写在一个jsp中,然后用<%@include %>  /  <jsp:include >把元素包含进来

此声明是全局变量写法(强烈建议不用此方法)


Scriptlet:包含有效的程序片段,合乎java语法的就可以

格式:<% code fragmeng %>  fragment 即为java程序语句

可以:声明将要用到的变量和方法、显示出表达式、使用隐含对象和javaBean声明过的对象、当jsp收到客户端请求时,Scriplet会执行,如同servlet的doGet和doPost,显示的内容会被存在out对象中,然后利用out对象的printLn()方法显示出结果。


表达式(Exception):

语法:<%= exception %>

表达式在执行后会被自动转化为字符串,然后显示出来

不能使用分号来作为表达式的结束符,但在Scriplet中就用的分号

这可以包括java的值也可以包括jsp元素的属性值


6   Action Elements

拥有20个,分为六类

1)   <jsp:include>:可以包含动态或者静态的文件,静态时,只是一些信息,直接加载到jsp页面,动态时,jsp container会编译执行,此标签会自动判断文件时动态还是静态

属性有:page   flush

page: 可以代表一个相对路径,文件位置或者是表达式

flush:true或者false,当缓冲区满是,将会被清空(true)。默认值为false

使用的时候还可以用param传递一个或者多个参数,如:

<jsp:include page = "hello.jsp" />

<jsp: param name = "username" valude = "browser" />

<jsp: param name = "password" valude = "124"/>

</jsp:include>


2)   <jsp:forward>: 只有一个属性page ,即将要导向的网页,值或者算出来的表达式

语法: <jsp:forward page = {"relativeurl" | "<%= expression%>"} />

or

<jsp:forward page = {"relativeurl" | "<%= expression%>"} >

<jsp:param name = "pn" value = "{pv | <%=expression%>}"/>

</jsp:forward>


3)   <jsp:param>:用来提供key/value 的信息,可以和include、forward、plugin 一起搭配使用

语法:<jsp:param name = "paramname" value = "paramvalue" />

属性name和value即名称和值

注:当在jsp之间转向时,request对象中如果已经有过此参数,则新的值的优先级会比较高


4)   <jsp:plugin>:用于在浏览器中播放或者显示一个对象(为Applet或者Bean)

当jsp网页被编译执行时,此标签会替换成<object> 标签或者<embed> 标签。它会指定对象Applet或者Bean ,同样会指定类的名字和位置,还会指定从哪里下载这个java组件

语法:<jsp:plugin type = "bean" |"applet " 将被执行的对象的类型,没有默认值

code = "objectCode" 将被执行的java类的名称,必须以.class结尾,并且.class类文件必须存在于codebase属性所指定的目录中

codebase = "objetcodebase" 被执行的java类的目录的属性,默认为jsp网页所在的目录

[align = "alignment"] 图形、对象、Applet的位置:botton、top、middle、left、right

[archive = "archiveList”] 用于一些预先需要加载的类

[height = "height"]  长或者宽,单位是像素

[hspace = "hspace"] 显示时屏幕左右所需要留下的空间,单位是像素

[jreversion ="jreversion"] 执行时jre所需要的版本

[name = "componentname"] 名称

[vspace = "vspace"]

[width = "width"]

[nspluginurl = 'url"] 用户能够使用的jre的下载地址、辞值为一个标准的url

[iepluginurl = ["url"]

<jsp:fallback>   reason  </jsp:falback> 当java类不能执行是所提示的错误

</jsp:plugin>


5)<jsp:element>:一个属性name ,此用来定义新标签

 <jsp:attribute>  : 用来定义属性

 <jsp:body>


7 错误处理

jsp在执行是,在两个阶段容易出现错误

1) jsp网页-》Servlet类   转换错误

原因:在撰写jsp页面是的语法错误,导致jsp container无法将jsp网页编译成servlet类文件(.class) 例如:500 Internal Server Error错误

解决:重新检查一下jsp页面编写是否有误或者是jsp container本身的bug

2) Servlet类处理每一个请求时  请求处理错误

原因:往往不是语法错误,而是逻辑上的错误

解决:这种通常会转到另一个ErrorPage.jsp来处理

如:<%@ page contentType = "text/html; charset = GB2312" erorPage = "Error.jsp" %>

平时看到的错误页面其实就是执行的errorpage的结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值