scriptlet脚本块主要是在service里面定义属性,jsp声明块主要放在类里面的最前面,可以让所有在类里的的方法调用。输出块主要是在类里面的某一个位置,见缝插针去输出的。
scriptlet脚本
<%...%>块,这个块中的代码,会被拷贝到jsp引擎生成的脚本的这个脚本所在位置
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<%
int a = 20;
%>
<head>
<title>$Title$</title>
<meta charset="utf-8">
</head>
<body>
<%
out.write(new java.util.Date().toString());
%>
<form action="/Encoding" method="post">
<input type="text" name="name"/>
<input type="submit"/>
</form>
</body>
<%
String name = request.getParameter("name");
session.getAttribute("name");
a += 10;
%>
</html>
生成的源码:
对比一下scriptlet脚本在页面流中的位置和生成的源码中的位置,实际就是把scriptlet脚本拷贝到源码输出流中对应的位置
jsp声明块
<%!..定义Servlet类中的方法和属性... %>
JSP声明块声明Servlet类中的方法和属性
<%!
public int sum(int a,int b){
return a + b;
}
%>
生成的源码中声明块的位置
输出块
<%="HelloWorld"%> 等同于<%out.println("Hello World ");%>
生成的源代码