JSP基本语法
JSP网页由两部分组成
- Template Data:固定模板数据
- Elements:元素数据
Template Data: JSP容器不处理的部分,如HTML的内容,直接送到客户端执行。
Elements:必须经由JSP容器处理的,而大部分都以XML作为语法基础,且大小写必须一致。
Elements分为四类:
- 指令元素:提供JSP网页的相关信息和属性。语法格式一般为 <%@elements ….%>
- java脚本:<% …%>,<%!...%>
- 动作元素:<jsp:…>
- 表达式语言:${…}
jSP中的批注
- 客户端可见的(通过浏览器可以看到源码)
<!-- 现在时间为:January 29 , 2006 -->
<!-- 现在时间为:<%= (new java.util.Date()).toLocaleString() %> -->
- 程序员专用的,客户端不可见
<%-- comment --%>
<% /** this is a comment **/ %>
JSP中的转义规则
为了避免显示内容和HTML标签产生语法混淆,部分标签在当内容显示的时候要修改:
- 斜线 \ —— \\
- <% —— <%
- %> —— %\>单引号‘ -- \’
- 双引号” —— \”
- ${ —— \${
JSP脚本元素
<%%>,<%!%>称为界定符,其中包含java 代码,如变量或方法声明,表达式求值脚本元素分为三类:
- 声明元素:
<%! int i=0; %>
<%! 变量或方法声明 %>可一次声明多个变量或方法,编译后最终转换成servlet代码,变量和方法只在当前一个页面有效
变量为页面级的全局变量,若有N个请求执行该JSP页面,将启动多个线程共享此变量。建议改用<% %
- 表达式元素:
<%= expression %>
<%= getName() %><%= i %>
注意:Expression的值必须能转换成字符串,否则异常
在expression中不能用;作为其结束符号
Expression能包含任何java语法
等价于<%out.print(expression)%>
- Scriptlets:
<% 合乎JAVA标准语法的程序片断 %>
Scriptlet能够包含多个语句,变量,表达式;
注意:
可使用声明中定义的变量和方法
包含的小程序片段必须符合java语法规范
可以使用JSP中包含的隐含对象
可使用表达式或<jsp:useBean>声明过的对象
若有注释其方法和java中的注释方法一样。
JSP指令元素
指令 主要用来提供整个JSP网页相关的信息,并且用来设定JSP网页的相关属性,例如:网页的编码方法、语言、信息等等
起止符号为:<%@...%>内文部分为一些指令和一连串的属性设定:
<%@ directive attr1=“value1” attr2=“value2”… %>包含三种指令:
- page: 页面属性指令
- include:包含指令
- taglib: 自定义标签指令
Page指令:设定整个JSP网页的属性和相关功能。
<%@page attri1=“ ” attri2=“ ” .... %>
Attribute可选值:
- Import =“ ” 指明该JSP可以使用那些JAVA API
- session=“true/false” 指明该JSP是否可以用session对象
- pageEncoding=“ ” 指明该JSP网页的编码方式
- contentType =“ ” 表示MIME类型和JSP的编码方式
- buffer=”none/size kb” 设置缓冲区,默认8KB
- autoFlush=“true/false” 是否自动清楚缓冲
- Langugae=指明小脚本片断使用的语言,默认java
- Extends =“ ” 指明生成的servlet继承那个父类
- errorPage=“ ” 异常后的重定向UTL
- isThreadSafe=true|false
<%@page contentType=“text/html;charset=gbk” %>
注意点:导入多个包的时候可以分开写,也可以用,隔离
除import属性外,其他属性只能设置一次
Include指令:在JSP编译时插入一个包含文本或代码的文件,这个包含过程是静态的。
<%@include file=“relativeURLspec” %>包含的文件类型:jsp,html,文本,java程序段。
relativeURLspec值不能是变量URL。
<%@include file=“<%= URL%>” %>relativeURLspec后不能加任何参数。
relativeURLspec所指的路径必须是相对于此JSP的网页的路径。
文件中要避免有<html></html><body></body>
JSP动作
动作控制标签用于执行一些标准的JSP网页动作。例如:页面跳转,引入javabean对象等。动作指令必须通过 JSP引擎来实现。
动作指令以xml语法为基础,严格区分大小写。
常用动作指令
- <jsp:include>
包含指令:用来动态包含另一个jsp页面
- <jsp:forward>
转发指令:用来将请求转发至一个新的页面
- <jsp:param>
参数标签:一般与其他动作指令搭配使用
<jsp:include>动作指令
<jsp:include>元素允许你包含动态和静态文件。被包含文件中不要带有HTML标签
若是静态文件,内容直接加到JSP网页中
若是动态文件,被包含的文件也会被JSP引擎编译执行。
语法格式:<jsp:include page={“urlSpec” | “ <%=urlExpress%>”}” flush=“true | false” />
或
<jsp:include page={“urlSpec” | “<%=urlExpress%>”}” flush=“true | false” ><jsp:param name=“pn” value=“{ pv | <%=expression %>}”/>
</jsp:include>
示例:
1、<jsp:include page=“Hello.html”/>
2、<jsp:include page=“script/login.jsp”><jsp:param name=“username” value=“rose”/>
<jsp:param name=“password” value=“1234”/>
</jsp:include>
<jsp:include> 与<%@include >的区别
动态包含使用<jsp:include> 标签来实现
- <jsp:include page=“included.jsp” flush=“true” />它总是会检查所含文件中的变化,适合用于包动态页面,并且可以带参数。
- 动态包含可以给被包含的页面传递参数
静态包含使用include伪码实现
- 不会检查所含文件的变化,适用于包含静态页面
- 静态包含不能给被包含的页面传递参数
<jsp:forward>动作指令
<jsp:forward>操作将客户端所发出的请求从当前页面转交到另一个HTML或JSP页面。
<jsp:forward>标签之后的程序将不会在执行。
语法格式:
<jsp:forward page={“ relativeURL ” | “ <%=urlExpress%> ”}” />
或
<jsp: forward page={“ relativeURL ” | “ <%=urlExpress%> ”}” >
<jsp:param name=“pn” value=“{ pv | <%=expression %>}”/>
</jsp: forward >
<jsp:param>指令
<jsp:param>用来提供key/value值,常与<jsp:include><jsp:forward>一起使用。
<jsp:param name=“pname” value=“pvalue”/>
当与<jsp:include>和<jsp:forward>一起用时,被包含的网页或转向后的网页会先看看request对象里面除原来的参数值之外,是否有新的参数值,如果有,则新参数值会替换原来的参数值