JSP指令

  提供整个JSP页面的相关信息

  用于JSP页面与容器之间的通信

<%@ directive attribute1="value1" attribute2="value2" %>
<!-- 如果有多个属性,也可以分开写: -->
<%@ directive attribute1="value1" %>
<%@ directive attribute2="value2" %>
<!-- 实例 -->
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!-- 多个指令分开写 -->
<%@ page import="java.lang.*" %>
<%@ page import="java.util.*" %>

在JSP中,有三种类型的指令

  page指令——为当前页面提供处理指令

    页面指令的功能是设定整个JSP页面的属性和相关功能

    语法格式为:

<%@ page attribute1="value1" attribute2="value2"  %>
<!-- page指令也支持以XML为基础的语法,例如:-->
<jsp:directive.page attribute1="value1" attribute2="value2" />

属性名

默认值

language

脚本语言名称

"java"

Info

网页信息

contentType

MIME类型和JSP编码

"text/html;charset=ISO-8859-1"

import

类和包

none

buffer

缓冲区大小

8192

autoFlush

缓冲满,刷新还是抛出异常

"true"

session

访问页面是否创建会话

"true"

isThreadSafe

线程是否安全

"true"

errorPage

URL

none

isErrorPage

布尔值

"false"

  include指令——用于把另一个文件包含在JSP中

    include指令表示在JSP编译时插入一个包含文本或者代码的文件

    把文件中的文本静态地包含过去

    语法格式为:

<%@ include file="relativeURL" %>
<!--"relativeURL"为要包含进来的文件,可以是HTML、JSP文件,也可以是其它格式的文本文件。
include指令也支持以XML为基础的语法,如:-->
<jsp:directive.include file="relativeURL" />
<!-- error_500_page.jsp -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
Error_500;
<%@ include file="error_404_page.jsp" %>
</body>
</html>
<!-- error_404_page.jsp -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
Error_404;
</body>
</html>

    运行服务器,打开页面error_500_page

Error_500_page(<%@ include %>)

Error_500_page(<%@ include %>)翻译成的Java文件内容(局部)

提示:翻译后和编译后的文件可以在工程服务器里查找,我的文件目录是(可参考):D:\Javacode\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\Test\org\apache\jsp\jsp

仔细看就能发现,是error_500_page.jsp内容里面包含了error_404_page.jsp里面的所有内容,包含html、head、body等所有标签。如果存在重复标签或者id名就会出现一些不必要的麻烦。

注意:被包含的文件不要与包含文件存在重复HTML标签,而且不能是URL变量

  标准动作:<jsp:include>动作是一种动态包含

    修改error_500_page.jsp的语句

<%--把<%@ include file="error_404_page.jsp" %>修改为下面的代码--%>

<jsp:include page="error_404_page.jsp"></jsp:include>

Error_500_page(<jsp:include>)

Error_500_page(<jsp:include>)翻译成的Java文件内容(局部)

    由此可见,error_500_page.jsp内容里面没有包含error_404_page.jsp里面的内容,而是以一串指令代替。

  动态和静态的区别是什么?

- included动作比included指令在维护上有着明显优势,而included指令的功能更加强大,执行速度也比included动作快。

- included指令只能生成一个servlet,而included动作可以生成多个Servlet

- included指令包含的是被包含页面的真实代码,而included动作包含的是相应代码

- included指令发生在页面编译时,而included动作发生在页面请求时

- included指令做出的人任何修改必须重启当前Web才能生效,而included动作保存即生效

- included指令不能实现在请求区间内共享对象,而included动作支持在请求区间内共享对象

- included指令适用于静态页面包含,而included动作适合动态页面包含

  taglib指令——指定如何包含和访问自定义标签库

<jsp:forward>动作

  将客户端所发出来的请求,从一个JSP网页转发到另一个JSP页面

<!--语法格式为:-->
<jsp:forward page="relativeURL" />
<!--控制权交给了另一个JSP,和Java代码中的request的请求派发功能相似(可以访问WEB-INF目录)request.getRequestDispatcher("").forward(request,response);-->

JSP九大隐式对象

  在JSP中操纵请求、响应、会话以及其它Servlet中使用的对象

对象名

描述

作用域

request

代表与请求相关的HttpServletRequest对象

request

response

代表与响应相关的HttpServletResponse对象

page

pageContext

代表封装请求某个JSP页面时请求环境的pageContext对象

page

session

代表特定用户请求会话的HttpSession对象。该对象只有在JSP页面参与一个HTTP会话时才有意义

session

application

代表Web应用程序的ServletContext对象

application

out

代表与响应输出流相关的JspWriter对象

page

config

代表JSP 页面的Servlet相关的ServletConfig对象

page

page

等于Java编程语言中的this变量

page

exception

代表JSP页面抛出的Trowable对象。这个对象只能在JSP错误页面中使用

page

JavaWeb总结(十二)的更多相关文章

  1. JavaWeb 后端 <十二> 之 过滤器 filter 乱码、不缓存、脏话、标记、自动登录、全站压缩过滤器

    一.过滤器是什么?有什么? 1.过滤器属于Servlet规范,从2.3版本就开始有了. 2.过滤器就是对访问的内容进行筛选(拦截).利用过滤器对请求和响应进行过滤

  2. JavaWeb学习 (十二)————使用Session防止表单重复提交

    在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...

  3. JVM(十二):方法调用

    JVM(十二):方法调用 在 JVM(七):JVM内存结构 中,我们说到了方法执行在何种内存结构上执行:Java 方法活动在虚拟机栈中的栈帧上,栈帧的具体结构在内存结构中已经详细讲解过了,下面就让我们 ...

  4. 前端开发中SEO的十二条总结

    一. 合理使用title, description, keywords二. 合理使用h1 - h6, h1标签的权重很高, 注意使用频率三. 列表代码使用ul, 重要文字使用strong标签四. 图片 ...

  5. CRL快速开发框架系列教程十二(MongoDB支持)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  6. 我的MYSQL学习心得(十二) 触发器

    我的MYSQL学习心得(十二) 触发器 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数 ...

  7. Web 前端开发精华文章推荐(jQuery、HTML5、CSS3)【系列十二】

    2012年12月12日,[<Web 前端开发人员和设计师必读文章>系列十二]和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HT ...

  8. 第十二章Fundamental Data Types 基本数据类型

    目录: 12.1 数值概论 12.2整数 12.3浮点数 12.4 字符和字符串 12.5布尔变量 12.6枚举类型 12.7具名常量 12.8数组 12.9创建你自己的类型 12.1   数值概论 ...

  9. [分享] IT天空的二十二条军规

    Una 发表于 2014-9-19 20:25:06 https://www.itsk.com/thread-335975-1-1.html IT天空的二十二条军规 第一条.你不是什么都会,也不是什么 ...

  10. Bootstrap <基础三十二>模态框(Modal)插件

    模态框(Modal)是覆盖在父窗体上的子窗体.通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动.子窗体可提供信息.交互等. 如果您想要单独引用该插件的功能,那么您需要引用  ...

随机推荐

  1. css.map作用

    看一段sass代码: 嵌套书写的结构在sass中经常会被用到. 编译之后的样式是这样的: 在开发工具上我们看到的是编译后的文件,而非编译前的源文件. 这个时候就产生一个问题了.在生产环境中,我希望看到 ...

  2. 32位Windows7 利用多余的不能识别的电脑内存 RAMDISK5.5教程

    32位Windows7 利用多余的不能识别的电脑内存 RAMDISK5.5教程 环境:Windows7 32位 Ultimate 内存8GB 只能识别2.95GB内存 ramdisk5.5只适用于Wi ...

  3. 基于NSString处理文件的高级类

    基于NSString处理文件的高级类 我已经把处理文件的类简化到了变态的程度,如果你还有更简洁的方法,请告知我,谢谢! 使用详情: 源码: // // NSString+File.h // Maste ...

  4. windows下搭建vue开发环境

    Vue.js是一套构建用户界面的 “渐进式框架”.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合.2016 ...

  5. Linux chattr 命令详解

    常见命令参数 A:即Atime,告诉系统不要修改对这个文件的最后访问时间. S:即Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘. a:即Append Only,系统只允 ...

  6. windows server 2016 无法联网问题

    首先,联网分解为两个问题,一.WLAN(无线网).二.以太网(有线网) 一 .WLAN问题解决方案 1.打开服务器管理器 2.添加角色和功能 3.一直点下一步到“功能”,勾选 DirectPlay 和 ...

  7. September 21st 2017 Week 38th Thursday

    What fire does not destroy, it hardens. 烈火摧毁不了的东西,只会变得更坚固. The true gold can stand the test of fire, ...

  8. 关于strip(切割)和 split(分开) 的区别

    plit(), 以括号里的东西为标准,把字符串分开成一个列表 strip(), "删除",括号里出现的东西,从两头开始往中间删除,直到遇到阻碍.中间就算有,也不会受影响 s10 = ...

  9. .Net WebApi 支持跨域访问使用 Microsoft.AspNet.WebApi.Cors

    首先导入Cors库,通过程序包管理控制台导入 Install-Package Microsoft.AspNet.WebApi.Cors 引用库之后,我们需要进行简单的配置. 现在WebApiConfi ...

  10. 本地YUM源制作

    YUM相关概念 什么是YUM YUM(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管 ...