日期:2014-05-16 浏览次数:20589 次
<%!
int a = 1;
private String sayHello(){return "hello";}
%>
<%
int a = 1;
%>
<h1>Hello World</h1>
第一步,先编译为一个xml文件,结果如下 <jsp:declare>
int a = 1;
private String sayHello(){return "hello";}
</jsp:declare>
<jsp:scriptlet>
int a = 1;
</jsp:scriptlet>
<h1>Hello World</h1>第二步,再编译为一个java文件, 大致结果如下 public class _xxx_test{
int a = 1;
private String sayHello(){return "hello";}
public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{
JspWriter out = xxxx.getWriter();
// 创建其他的隐含对象
int a = 1;
out.write("<h1>Hello World</h1>");
// 释放资源
}
}从中可以看出编译过程, 编译器依次读入文本, 遇到<%@就认为这是个jsp指令, 指令是对编译和执行这个jsp生效的.<%
String s = "test%>"
%>编译出来的结果大致如下: public class _xxx_test{
public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{
JspWriter out = xxxx.getWriter();
// 创建其他的隐含对象
String s = "test
out.write("\"\r\n%>");
// 释放资源
}
}<%
int a = 1;
%><jsp:scriptlet>int a = 1;</jsp:scriptlet>
public class _xxx_test{
public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException{
JspWriter out = xxxx.getWriter();
ExprEnv exprEnv = xxx.create();
out.write("abc");
org.xxx.xxx.Expr _expr_xxx = xxx.createExpr("${user.name}");
_expr_xxx.write(out, exprEnv);
out.write("123\r\n");
}
}