pre:下面所有的jsp标准语法都有对应的xml兼容标签表示方式。
jsp中的java代码,jsp和servlet的对应关系
1、<%= Java Expression %>
eg:Current time:<%= new java.util.Date() %>
xml expression:<jsp:expression>Java Expression</jsp:expression>
jsp1.2及之后的版本中,只要程序设计者没有在同一页面中混合使用XML方式和标准的jsp方式(<%= ... %>),就要求服务器支持这种语法。
2、<% Java Code %>
eg:<%
String queryData ="";
if(){}else{}
%>
xml expression : <jsp:scriptlet>Java Code</jsp:scriptlet>
3、<%! Filed or Method Definition %>
xml expression:<jsp:declaration> Filed or Method</jsp:decalration>
4、jsp/servlet对应关系
上面的1、2都会被加进编译生成的servlet类中的_jspService方法,而这个方法总会北service方法调用。
而3会独立出来编程servlet的属性或方法。
Tomcat下jsp编译后的servlet可在tomdir/work/localhost目录中查看。
jsp page指令:控制所生成的servlet的结构
<%@ page import="java.util.*,java.logging.*" %> 导入jsp变为servlet时应该导入的包。
<%@ page contentType="MIME-Type; cahrset = Character-Set" %> 和 <% response.setContentType("application/vnd.ms-execel"); %>作用相同。
jsp页面默认的MIME类型是text/html(默认字符集是ISO-8859-1)
如果只想更改字符集,可以使用<%@ page pageEncoding="Shift_JIS" %>
<%@ page session="true" %><%-- Default --%>
属性控制页面是否参与HTTP会话。
还有其他属性:
isELlgnored属性:忽略(true)JSP 2.0 表达式语言(EL),还是进行正常的求值。
buffer属性指定out变量(类型为JspWriter)使用的缓冲区大小。服务器实际使用的缓冲区>=给定的值
<%@ page buffer="32kb" %> 表示缓存到32KB,页面完成或明确对输出执行清空(如使用response.flushBuffer),否则不降文档发送给客户。如果缓冲区禁用,要求设置包头或状态代码的jsp元素出现在文件的顶部,如果每一句输出的响应时间过长,禁用缓冲区会使客户更快看到部分结果。buffer="none"表示禁用。
autoFlush属性:控制当缓冲区充满后,是应该自动清空输出(默认true),还是溢出之后抛出一个异常。、
info属性,在servlet中通过getServletInfo方法获取的字符串。
erroePage属性用来指定页面专用的错误页面,如果要为整个web制定错误页面或者为不同类型的错误制定错误页面,需要使用web.xml中的error-page元素。
eg:
ComputeSpeed.jps:
……
<%@ page errorPage="/WEB-INF/SpeedErrors.jsp" %>
……
SpeedErrors.jsp
……
<%@ page isErrorPage="true"%><%-- Default:false --%>
……
<%= exception %>
……
<% exception.printStackTrace(new PrintWriter(out)); %>
……
isThreadSafe属性:
jsp:page的isThreadSafe属性和servlet的SingleThreadModel接口一样,不推荐使用,应该使用显式的同步措施。
extends属性指定jsp页面所生成的servlet的超类。一般用不到。
language属性制定页面使用的脚本语言
jsp:page的xml兼容语法:
<jsp:directive.directiveType attribute="value" />