一.page指令

1. 可以使用page指令来控制JSP转换器转换当前JSP页 面的某些方面。例如,可以告诉JSP用于转换隐式对象 out的缓冲器的大小、内容类型,以及需要导入的Java 类型,等等。 page指令的语法如下:

<%@ page attribute1="value1" attribute2="value2" %>

2. @和page间的空格不是必须的,attribute1、 attribute2等是page指令的属性。如下是page指令属性的 列表:

  • import 导入j'ava类
  • session 值为true:本页面加入会话管理;  值为false则相反;默认值为True,访问该页面时,若当 前不存在javax.servlet.http.HttpSession实例,则会创 建一个。
  • buffer 以KB为单位,定义隐式对象out的缓冲大 小。必须以KB后缀结尾。默认大小为8KB或更大 (取决于JSP容器)。该值可以为none,这意味着没 有缓冲,所有数据将直接写入PrintWriter。
  • autoFlush 默认为true,自动刷新缓冲区,若为false,则只有调用隐式对象flush时才会刷新 
  • isThreadSafe:定义该页面的线程安全级别。不推荐 使用 JSP 参数,因为使用该参数后,会生成一些 Servlet容器已过期的代码。
  • info:返回调用容器生成的Servlet类的getServletInfo 方法的结果。
  • errorPage: 定义当页面出错时,用来处理错误的页面
  • isErrorPage: 标识页面是一个错误处理页面
  • contentType: 定义本页面隐式对象response的内容 类型,默认是text/html。
  • pageEncoding: 定义本页面的字符编码,默认是 ISO-8859-1。
  • isELIgnored: 配置是否忽略EL表达式。EL是 Expression Language的缩写。
  • language: 定义本页面的脚本语言类型,默认是 Java,这在JSP 2.2中是唯一的合法值。
  • extends: 定义JSP实现类要继承的父类。这个属性 的使用场景非常罕见,仅在非常特殊理由下使用。
  • deferredSyntaxAllowedAsLiteral:定义是否解析字符 串中出现“#{”符号,默认是False。“{# ”是一个表达 式语言的起始符号。
  • trimDirectiveWhitespaces:定义是否不输出多余的空 格/空行,默认是False。

二. include

1. 可以使用include指令将其他文件中的内容包含到当 前JSP页面。一个页面中可以有多个include指令。若存 在一个内容会在多个不同页面中使用或一个页面不同位 置使用的场景,则将该内容模块化到一个include文件非 常有用。 include指令的语法如下:

<%@ include file ="url" %>

其中,@和include间的空格不是必须的,URL为被 包含文件的相对路径,若URL以一个斜杠(/)开始, 则该URL为文件在服务器上的绝对路径,否则为当前 JSP页面的相对路径。

例如: 下面include.html 里的内容 将插入到include所在位置

<!-- include.html -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p> this is include page </p>
</body>
</html>
<%-- newFile.jsp %-->
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title> //这里会插入include.html的内容
</head>
<body>
<%@ include file="/WEB-INF/include.html" %>
</body>
</html>

三. 脚本元素

一个脚本程序是一个Java代码块,以<% 开始, 以%>结束;定义在一个脚本中的变量可以在另一个脚本程序中使用

四.表达式

每个表达式都会被容器执行,并使用隐式对象out的打印方法输出结果,表达式以"<%="开始以 "%>"结束,例如,在下面一行文中,黑体字为一个 表达式:

Today is <%=java.util.Calendar.getInstance().getTime()%>

注意,表达式无须分号结尾。 JSP容器首先执行 java.util.Calendar.getInstance().getTime(),并将计算结果 传递给out.print(),这与如下脚本程序的效果一样:

Today is
<%
out.print(java.util.Calendar.getInstance().getTime());
%>

五.声明

1.可以声明能在JSP页面中使用的变量和方法。声明 以“<%!”开始,并以“%>”结束。例如,清单3.7的 declarationTest.jsp页面展示了一个JSP页面,该页面声 明了一个名为getTodaysDate的方法。

<%!
public String getTodaysDate() {
return new java.util.Date();
}
%>
<html>
<head><title>Declarations</title></head>
<body>
Today is <%=getTodaysDate()%>
</body>
</html>

2.在JSP页面中,一个声明可以出现在任何地方,并 且一个页面可以有多个声明。

三.使用声明

可以使用声明来重写JSP页面,实现类的init和 destroy方法。通过声明jspInit方法,来重写init方法。通 过声明jspDestroy方法,来重写destory方法。这两种方 法说明如下:

  • jspInit。这种方法类似于 javax.servlet.Servlet 的 init 方法。JSP 页面在初始化时调用jspInit。不同于init 方法,jspInit没有参数。还可以通过隐式对象config 访问ServletConfig对象。
  • jspDestroy。这种方法类似于Servlet的destroy方法, 在JSP页面将被销毁时调用。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<%@ page import="java.text.DateFormat" %>
<%!
public String getTodaysDate(){
return DateFormat.getDateInstance(DateFormat.LONG).format(new java.util.Date());
}
%>
<%!
public void jspInit(){
System.out.println("jspInit ...");
}
public void jspDestory(){
System.out.println("jspDestory()");
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p></p>
Today is <%=getTodaysDate() %>
</body>
</html>

生成的servlet页面

<%--部分页面 %-->
public final class NewFile_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent,
org.apache.jasper.runtime.JspSourceImports { public String getTodaysDate(){
return DateFormat.getDateInstance(DateFormat.LONG).format(new java.util.Date());
} public void jspInit(){
System.out.println("jspInit ...");
}
public void jspDestory(){
System.out.println("jspDestory()");
} private static final javax.servlet.jsp.JspFactory _jspxFactory =
javax.servlet.jsp.JspFactory.getDefaultFactory(); private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants; private static final java.util.Set<java.lang.String> _jspx_imports_packages; private static final java.util.Set<java.lang.String> _jspx_imports_classes; static {
_jspx_imports_packages = new java.util.HashSet<>();
_jspx_imports_packages.add("javax.servlet");
_jspx_imports_packages.add("javax.servlet.http");
_jspx_imports_packages.add("javax.servlet.jsp");
_jspx_imports_classes = new java.util.HashSet<>();
_jspx_imports_classes.add("java.text.DateFormat");
} private volatile javax.el.ExpressionFactory _el_expressionfactory;
private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager; public java.util.Map<java.lang.String,java.lang.Long> getDependants() {
return _jspx_dependants;
}

六.禁用脚本元素

随着JSP 2.0对表达式语言的加强,推荐的实践是: 在JSP页面中用EL访问服务器端对象且不写Java代码。 因此,从JSP 2.0起,可以通过在部署描述符中的定义一个scripting-invalid元素,来禁用 脚本元素。

    <jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<scripting-invalid>true</scripting-invalid>
</jsp-property-group>
</jsp-config>

JSP 指令 脚本元素 表达式 声明的更多相关文章

  1. JSP脚本元素(声明 %! 表达式 %= 脚本 %)

    JSP脚本元素包括声明.表达式.脚本 声明(declaration):用于在JSP页面中声明合法的变量和方法.以“<%!”开始,以“%>”结束. 在JSP页面中,一个声明可以出现在任何地方 ...

  2. JSP JSP工作原理 JSP语法 JSP声明 JSP注释 JSP指令 jsp九大隐式/内置对象

    1 什么是JSP   1)为什么说,Servlet是一个动态Web开发技术呢?     Servlet是基于服务端的一种动态交互技术,     HttpServletRequest表示客户端到服务端的 ...

  3. jsp篇 之 脚本元素

    jsp的脚本元素 : 第一种:表达式 (类似输出语句) 表达式 形式:<%= %> 看源码发现[翻译]到java文件中的位置: [out.print(..)]里面的参数. 所以System ...

  4. JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象

    Day38 JSP JSP的运行过程具体如下: (1)客户端发出请求,请求访问JSP文件. (2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果 ...

  5. JSP——JavaServer Page中的隐式对象(implicit object)、指令(directive)、脚本元素(scripting element)、动作(action)、EL表达式

    目录 1.JSP概述 2.注释(comment) 2.1.JSP注释 2.2.HTML注释 3.隐式对象(implicit object) 3.1.隐式对象清单 3.2.request对象 3.3.o ...

  6. JSP基础:JSP指令、JSP注释、JSP脚本、JSP声明、JSP表达式

    JSP指令分为:page指令.include指令.taglib指令. page指令:通常位于JSP页面的顶端,同一个页面可以有多个页面指令. 语法:<%@ page language=" ...

  7. JSP基础总结(运行机制、脚本元素、指令元素、动作元素)

    JSP的运行机制: 1.转译阶段:JSP页面转换成Servlet类: 2.请求阶段:Servlet类执行,将相应结果发送至客户端. 流程解释: 1.用户访问某个JSP页面 2.服务器找到相应的JSP页 ...

  8. JavaWeb学习----JSP脚本元素、指令元素、动作元素

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  9. JSP脚本元素、指令元素、动作元素

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

随机推荐

  1. jquery禁用a标签

    jquery禁用a标签方法1 01 02 03 04 05 06 07 08 09 10 11 12 $(document).ready(function () {         $("a ...

  2. pwnable.kr fb

    fb-1 pt 连接到服务器,发现 有三个文件,fd脚本,fd.c脚本的源程序,flag是要看的东西,无权限 来我们分析一下源码 如果只传进去一个值,print” pass argv[1] a num ...

  3. python 模块 - pymongo模块

    mongoDB 数据库: pymongo 操作: import pymongo # 连接mongo数据库 client = pymongo.MongoClient(host='localhost', ...

  4. Light oj 1018 - Brush (IV) 状态压缩

    题目大意: 给出n个点的坐标,求至少画多少掉直线才能连接所有点. 题目思路:状态压缩 首先经行预处理,求出所有状态下,那些点不在该状态内 以任意两点为端点求出这条直线的状态 枚举所有状态,找出不在当前 ...

  5. JavaScript编程基础2

    1,数据类型相关操作 使用typeof x函数查看变量的数据类型: typeof "John" // 返回 string typeof 3.14 // 返回 number type ...

  6. 利用jTessBoxEditor工具进行Tesseract-OCR样本训练

    jTessBoxEditor依赖java虚拟机 , 所以要先安装 java. jTessBoxEditor下载地址: https://sourceforge.net/projects/vietocr/ ...

  7. kali linux 安装virtualbox报错(rc=-1908)

    解决步骤: apt-get install dkms # 如何安装了dkms就跳过这步 apt-get install linux-headers-`uname -r` # 这个符号是TAB上方的符号 ...

  8. STL 智能指针

    转自: https://blog.csdn.net/k346k346/article/details/81478223 STL一共给我们提供了四种智能指针:auto_ptr.unique_ptr.sh ...

  9. Centos7.5 VMtools的安装与卸载

    一.安装 1.自带tools:  选择VMware工具栏 => 虚拟机 => 安装VMtools 2.挂载光驱 3.tar -zxvf VMwareTools-10.3.2-9925305 ...

  10. Python笔记 【无序】 【二】

    序列list() ——把一个可迭代对象[可以是字符串,元组]转化为列表,可不带参数——生成空列表,或者带一个迭代器作为参数tuple() ——可迭代对象转化为元组str(obj) ——把obj对象转换 ...