JSP脚本元素(声明 %! 表达式 %= 脚本 %)
JSP脚本元素包括声明、表达式、脚本
声明(declaration):用于在JSP页面中声明合法的变量和方法。以“<%!”开始,以“%>”结束。
在JSP页面中,一个声明可以出现在任何地方,并且一个页面可以有多个声明。
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ page import="java.util.Date"%> <!DOCTYPE html> <%-- 声明一个方法 --%> <%!
public String getTodaysDate() { return (new Date()).toString(); }
%>
<html> <head> <meta charset="utf-8"> <title>Declarations</title> </head> <body> Today is <%=getTodaysDate() %> </body> </html>
表达式(expression):计算表达式的值,并使用隐式对象out将结果以字符串的形式输出。以“<%=”开始,以“%>”结束。
表达式不需要分号结尾。
Today is <%=java.util.Calendar.getInstance().getTime() %>
JSP容器首先执行java.util.Calendar.getInstance().getTime(),然后将结算结果传递给内置对象out输出,即
Today is <% out.println(java.util.Calendar.getInstance().getTime()); %>
脚本(scripts):合法的Java代码。以“<%”开始,以“%>”结束。
定义在一个脚本程序中的变量可以被其后续的脚本程序使用。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ page import="java.util.Enumeration" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Scriptlet example</title> </head> <body> <b>Http headers:</b> <br /> <%-- 第一个脚本 --%> <% for(Enumeration<String> e = request.getHeaderNames(); e.hasMoreElements();){ String header = e.nextElement(); out.println(header + ": " + request.getHeader(header) + "<br />"); } String message = "Thank you."; %> <br /> <%-- 第二个脚本 --%> <% out.println(message); %> </body> </html>
禁用脚本元素
在部署描述符中(web.xml)定义<scripting-invalid>元素
下面将一个应用程序中的所有JSP页面的脚本都关闭了
注意在部署描述符中只能有一个<jsp-config>元素
<jsp-config> <jsp-property-group> <url-pattern> *.jsp</url-pattern> <scripting-invalid>true</scripting-invalid> </jsp-property-group> </jsp-config>