JSP指示元素<%@ %> 与指示类型
JSP提示元素
<%@ 指示类型 [属性="值"]%>
指示类型
指示类型有三种,分别是taglib、include、page
taglib指示类型
用于引入标签库
引入JSTL1.1核心标签库:<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
include指示类型
用于将别的JSP页面包括进来进行,例如:
includeDemo.jsp
- <%@page contentType="text/html" pageEncoding="UTF-8"%>
- <%@include file="/WEB-INF/jspf/header.jspf"%>
- <h1>include 示範本體</h1>
- <%@include file="/WEB-INF/jspf/foot.jspf"%>
header.jspf
- <%@page pageEncoding="UTF-8" %>
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title>include 示範開頭</title>
- </head>
- <body>
foot.jspf
- <%@page pageEncoding="UTF-8" %>
- </body>
- </html>
上面这个程序在第一次执行时,将会把header.jspf与foot.jspf的内容包括进来作转译。实际执行时,容器会组合includeDemo.jsp、header.jspf与foot.jspf的内容后,再转译为Servlet,也就是说,相当于转译这个JSP:
- <%@page contentType="text/html" pageEncoding="UTF-8" %>
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="UTF-8">
- <title>include 示範開頭</title>
- </head>
- <body>
- <h1>include 示範本體</h1>
- </body>
- </html>
所以最后会生成一个Servlet(而不是三个),这是一种静态的包括方式。
page指示类型
page指示类型常用的属性有主要有:import、contentType、pageEncoding
import属性:可以在同一个import属性中,使用逗号分隔数个import的内容。
contentType属性:用来告知响应给浏览器的文件类型。
pageEncoding属性:用来设置转译、编译时使用的字符编码。
page指示类型其他属性
info属性:用于设置目前JSP页面的基本信息,这个信息最后会转换为Servlet程序中使用getServletInfo()所取得的信息。
autoFlush属性:用于设置输出串流是否要自动清除,默认是true。如果设置为false,而缓冲区满了却还没调用flush()将数据送出至客户端,则会产生异常。
buffer属性:用于设置至客户端的输出串流缓冲区大小,设置时必须指定单位,例如buffer="16kb"。默认是8kb。
errorPage属性:用于设置当JSP执行错误而产生异常时,该转发哪一个页面处理这个异常。
isErrorPage属性:设置JSP页面是否为处理异常的页面,这个属性要与errorPage配合使用。
extends属性:用来指定JSP网页转译为Servlet程序之后,该继承哪一个类。以Tomcat为例,默认是继承自HttpJspBase(HttpJspBase又继承自HttpServlet)。基本上几乎不会使用到这个属性。
language属性:指定容器使用哪种语言的语法来转译JSP网页,言下之意是JSP基本上可使用其他语言来转译,不过事实上目前只能使用Java的语法(默认使用java)。
session属性:设置是否在转译后的Servlet源代码中具有创建HttpSession对象的语句。默认是true,若某些页面不需作进程跟踪,设成false可以增加一些效能。
isELIgnored属性:设置JSP网页中是否忽略表达式语言(Expression Language),默认是false,如果设置为true,则不转译表达式语言。这个设置会覆盖web.xml中的<el-ignored>设置。
isThreadSafe属性:告知容器编写JSP时是否注意到线程安全,默认值是true。如果设置为false,则转译之后的Servlet会实现SingleThreadModel接口,每次请求时将创建一个Servlet实例来服务请求。虽然可以避免线程安全问题,这会引起性能问题,极度不建议设置为false。
web.xml配置JSP
可以在web.xml中统一设置JSP的网页编码、内容类型、缓冲区大小等,例如:
- <?xml version="1.1" encoding="UTF-8"?>
- <web-app xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- version="3.0">
- <display-name>Web Application</display-name>
- <jsp-config>
- <jsp-property-group>
- <url-pattern>*.jsp</url-pattern>
- <page-encoding>UTF8</page-encoding>
- <default-content-type>text/html</default-content-type>
- <buffer>16kb</buffer>
- </jsp-property-group>
- </jsp-config>
- </web-app>
也可以在web.xml中指定JSP开头与结尾要包含的网页,例如:
- <?xml version="1.1" encoding="UTF-8"?>
- <web-app xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- version="3.0">
- <display-name>Web Application</display-name>
- <jsp-config>
- <jsp-property-group>
- <url-pattern>*.jsp</url-pattern>
- <include-prelude>/WEB-INF/jspf/header.jspf</include-prelude>
- <include-coda>/WEB-INF/jspf/foot.jspf</include-coda>
- </jsp-property-group>
- </jsp-config>
- </web-app>
注意
指示元素如果如下编写:
- <%@page import="java.time.*" %>
- <%@page contentType="text/html" pageEncoding="UTF-8" %>
- Hello!
因为在编写JSP指示元素时,换行了两次,这两次换行的字符也会输出,所以最后产生的HTML会有两个换行字符,接着才是“Hello!”这个字符串输出。一般来说,这不会有什么问题,但如果想要忽略这样的换行,则可以在web.xml中设置:
- <?xml version="1.1" encoding="UTF-8"?>
- <web-app xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- version="3.0">
- <display-name>Web Application</display-name>
- <jsp-config>
- <jsp-property-group>
- <url-pattern>*.jsp</url-pattern>
- <trim-directive-whitespaces>true</trim-directive-whitespaces>
- </jsp-property-group>
- </jsp-config>
- </web-app>
JSP指示元素<%@ %> 与指示类型的更多相关文章
- JavaWeb学习总结第三篇--走进JSP页面元素
JavaWeb学习(三)—走进JSP页面元素 JSP:Java Server Pages,译为Java服务器页面.其脚本采用Java语言,继承了Java所有优点.JSP元素可以分为指令元素.脚本元素和 ...
- HTML 表单元素、 输入类型、Input 属性
<input> 元素 最重要的表单元素是 <input> 元素. <input> 元素根据不同的 type 属性,可以变化为多种形态. 注释:下一章讲解所有 HTM ...
- JSP动作元素——————理论篇
JSP动作元素的组成及作用 JSP使用Action来控制Servlet引擎的行为,可重复使用JavaBean组件. 常用Action: jsp:param 在 jsp:include.js ...
- JSP 动作元素
JSP动作元素 1. 动作元素分类 用来动态的包含文件.网页跳转及使用JavaBean组件等. 语法:<jsp:XXX />或者<jsp:XXX></jsp:XXX&g ...
- JavaWeb学习----JSP脚本元素、指令元素、动作元素
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- JSP页面元素
jsp-->Java Server Page jsp 页面元素: 静态内容 2. 指令 <%@ page contentType=”text/html” %> 设置指定页面内容类 ...
- JSP脚本元素、指令元素、动作元素
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- 复习:JSP基本的语法(JSP凝视 + JSP指令 + JSP脚本元素 + JSP动作元素)
JSP原理: 1. 对于每个请求.jsp容器都会创建一个新的线程来处理它: 2. Servlet容器载入jsp后转换成的servlet(.class文件)是常驻内存的,所以对应速度一般比較 ...
- #1122 JSP动作元素
JSP动作元素 与JSP指令元素不同的是,JSP动作元素在请求处理阶段起作用.JSP动作元素是用XML语法写成的. 利用JSP动作可以动态地插入文件.重用JavaBean组件.把用户重定向到另外的页面 ...
随机推荐
- idea 运行scala代码 报错:Exception in thread "main" java.lang.NoClassDefFoundError: scala/Predef$ java.lang.NoClassDefFoundError: scala/Function0 Error: A JNI error has occurred, please check your installati
各种报错信息如下: java.lang.NoClassDefFoundError: scala/Function0 at java.lang.Class.getDeclaredMethods0(Nat ...
- [Java初探04]__字符串(String类)相关
前言 接下来将暂时将重心偏移向实际操作,不在将大量时间花费在详细的知识点整理上,将会简略知识总结笔记的记录,加强实际练习的时间,实例练习篇也不再同步进行,我会将部分我觉得重要的源码更新在每节知识点后面 ...
- 详解C#特性和反射(三)
类型信息(Type Information)用来表示类型声明的信息,通过抽象基类System.Type的实例存储这些信息,当使用反射时,CLR获取指定类型的Type对象,通过这个对象即可访问该类型的任 ...
- 简单Demo 使用Code Fisrt步骤
使用Code Fisrt步骤 1.开启VS,创建控制台项目:CodeFirstDemo1 2.利用NuGet引进 Entity Framework类库 图住:右击项目名称,在弹出的选 ...
- 【胡思乱想】命令模式中,命令对象如何解耦Invoker和Receiver
首先,我们得清楚为何要解耦? 耦合的坏处就是,牵一发而动全身,比如,当我更改了类A或其子类的时候,类B也要进行修改.这里,解除耦合,就意味着,即使你Receiver怎么改,添加了多少,删除了多少.我I ...
- Jackson xml json
public class XMLTest { private static XmlMapper xmlMapper = new XmlMapper(); private static ObjectMa ...
- quartz ? * 区别
官方文档上提到问号时是这样说的: The '?' character is allowed for the day-of-month and day-of-week fields. It is use ...
- HDU 1535 Invitation Cards(逆向思维+邻接表+优先队列的Dijkstra算法)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1535 Problem Description In the age of television, n ...
- JavaScript学习总结(四)——this、原型链、javascript面向对象
一.this 在JavaScript中this表示:谁调用当前函数this就指向谁,不知道调用者时this指向window. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是 ...
- 《剑指offer》(第二版)Java实现
Github链接: <剑指offer>(第二版)Java实现 欢迎star!