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>