在JSP中定义了一些称之为JSP指令和Action的元素,JSP指令是为了JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。在JSP页面中使用Action元素可以完成各种通用的JSP页面功能,也可以实现一些处理复杂业务逻辑的专用功能。
以下是今天JSP课程的重点内容:
Ⅰ.JSP课程―JSP指令
1.JSP指令的基本语法格式:
<%@指令属性名="值"%>
举例:
- <%@pagecontentType="text/html;charset=gb2312"%'>%@pagecontentType="text/html;charset=gb2312"%>
注意:属性名部分是大小写敏感的。
2.在目前的JSP2.0中,定义了page、include和taglib这三种指令,每种指令中又都定义了一些各自的属性。
3.如果要在一个JSP页面中设置同一条指令的多个属性,可以使用多条指令语句单独设置每个属性,也可以使用同一条指令语句设置该指令的多个属性。
<1>第一种方式:
- <%@pagecontentType="text/html;charset=gb2312"%>
- <%@pageimport="java.util.Date"%>
<2>第二种方式:
- <%@pagecontentType="text/html;charset=gb2312"import="java.util.Date"%>
4.page指令:
<1>定义:用于定义JSP页面的各种属性,无论page指令出现在JSP页面中的什么地方,它作用的都是整个JSP页面,为了保持程序的可读性和遵循良好的编程习惯,page指令最好是放在整个JSP页面的起始位置。
<2>JSP2.0规范中定义的page指令的完整语法:
- <%@page
- [language="java"]
- [extends="package.class"]
- [import="{package.class|package.*},..."]
- [session="true|false"]
- [buffer="none|8kb|sizekb"]
- [autoFlush="true|false"]
- [isThreadSafe="true|false"]
- [info="text"]
- [errorPage="relative_url"]
- [isErrorPage="true|false"]
- [contentType="mimeTyp[;charset=characterSet]"|"text/html;charset=ISO-8859-1"]
- [pageEncoding="characterSet|ISO-8859-1"]
- [isELIgnored="true|false"]
- %>
5.include指令:
<1>定义:include指令用于通知JSP引擎在翻译当前JSP页面时将其他文件中的内容合并进当前JSP页面转换成的Servlet源文件中,这种在源文件级别进行引入的方式称之为静态引入,当前JSP页面与静态引入的页面紧密结合为一个Servlet。
<2>语法:
- <%@includefile="relativeURL"%>
其中的file属性用于指定被引入文件的相对路径。
Ⅱ.JSP课程――JSP标签:
1.JSP还提供了一种称之为Action的元素,在JSP页面中使用Action元素可以完成各种通用的JSP页面功能,也可以实现一些处理复杂业务逻辑的专用功能。
2.Action元素采用XML元素的语法格式,即每个Action元素在JSP页面中都以XML标签的形式出现。
3.JSP规范中定义了一些标准的Action元素,这些元素的标签名都以jsp作为前缀,并且全部采用小写,例如,<jsp:include>、<jsp:forward>等等。
4.JSP标签内容:
<1><jsp:include>标签用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为动态引入。
语法:
- <jsp:includepagejsp:includepage="relativeURL|<%=expression%>"flush="true|false"/>
page属性用于指定被引入资源的相对路径,它也可以通过执行一个表达式来获得。
flush属性指定在插入其他资源的输出内容时,是否先将当前JSP页面的已输出的内容刷新到客户端。
<2><jsp:forward>标签用于把请求转发给另外一个资源。
语法:
- <jsp:forwardpagejsp:forwardpage="relativeURL|<%=expression%>"/>
page属性用于指定请求转发到的资源的相对路径,它也可以通过执行一个表达式来获得。
<3><jsp:param>标签:
当使用<jsp:include>和<jsp:forward>标签引入或将请求转发给的资源是一个能动态执行的程序时,例如Servlet和JSP页面,那么,还可以使用<jsp:param>标签向这个程序传递参数信息。
语法1:
- <jsp:includepagejsp:includepage="relativeURL|<%=expression%>">
- <jsp:paramnamejsp:paramname="parameterName"value="parameterValue|<%=expression%>"/>
- </jsp:include>
语法2:
- <jsp:forwardpagejsp:forwardpage="relativeURL|<%=expression%>">
- <jsp:paramnamejsp:paramname="parameterName"value="parameterValue|<%=expression%>"/>
- </jsp:include>
<jsp:param>标签的name属性用于指定参数名,value属性用于指定参数值。在<jsp:include>和<jsp:forward>标签中可以使用多个<jsp:param>标签来传递多个参数。
Ⅲ.JSP课程―JSP中文乱码问题:
1.JSP程序存在有与Servlet程序完全相同的中文乱码问题:
<1>输出响应正文时出现的中文乱码问题;
<2>读取浏览器传递的参数信息时出现的中文乱码问题。
2.JSP引擎将JSP页面翻译成Servlet源文件时也可能导致中文乱码问题:
<1>JSP引擎将JSP源文件翻译成的Servlet源文件默认采用UTF-8编码,而JSP开发人员可以采用各种字符集编码来编写JSP源文件,因此,JSP引擎将JSP源文件翻译成Servlet源文件时,需要进行字符编码转换。
<2>如果JSP文件中没有说明它采用的字符集编码,JSP引擎将把它当作默认的ISO8859-1字符集编码处理。
3.如何解决JSP引擎翻译JSP页面时的中文乱码问题。
<1>通过page指令的contentType属性说明JSP源文件的字符集编码;
<2>page指令的pageEncoding属性说明JSP源文件的字符集编码;
<3>在部署描述符中说明一组JSP源文件的字符集编码。