JavaWeb总结(十二)
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总结(十二)的更多相关文章
- JavaWeb 后端 <十二> 之 过滤器 filter 乱码、不缓存、脏话、标记、自动登录、全站压缩过滤器
一.过滤器是什么?有什么? 1.过滤器属于Servlet规范,从2.3版本就开始有了. 2.过滤器就是对访问的内容进行筛选(拦截).利用过滤器对请求和响应进行过滤
- JavaWeb学习 (十二)————使用Session防止表单重复提交
在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提 ...
- JVM(十二):方法调用
JVM(十二):方法调用 在 JVM(七):JVM内存结构 中,我们说到了方法执行在何种内存结构上执行:Java 方法活动在虚拟机栈中的栈帧上,栈帧的具体结构在内存结构中已经详细讲解过了,下面就让我们 ...
- 前端开发中SEO的十二条总结
一. 合理使用title, description, keywords二. 合理使用h1 - h6, h1标签的权重很高, 注意使用频率三. 列表代码使用ul, 重要文字使用strong标签四. 图片 ...
- CRL快速开发框架系列教程十二(MongoDB支持)
本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...
- 我的MYSQL学习心得(十二) 触发器
我的MYSQL学习心得(十二) 触发器 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数 ...
- Web 前端开发精华文章推荐(jQuery、HTML5、CSS3)【系列十二】
2012年12月12日,[<Web 前端开发人员和设计师必读文章>系列十二]和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HT ...
- 第十二章Fundamental Data Types 基本数据类型
目录: 12.1 数值概论 12.2整数 12.3浮点数 12.4 字符和字符串 12.5布尔变量 12.6枚举类型 12.7具名常量 12.8数组 12.9创建你自己的类型 12.1 数值概论 ...
- [分享] IT天空的二十二条军规
Una 发表于 2014-9-19 20:25:06 https://www.itsk.com/thread-335975-1-1.html IT天空的二十二条军规 第一条.你不是什么都会,也不是什么 ...
- Bootstrap <基础三十二>模态框(Modal)插件
模态框(Modal)是覆盖在父窗体上的子窗体.通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动.子窗体可提供信息.交互等. 如果您想要单独引用该插件的功能,那么您需要引用 ...
随机推荐
- 单独配置 Ehcache
package com.shy.ehcache; import net.sf.ehcache.Cache; import net.sf.ehcache.CacheManager; import net ...
- Linux chown命令详解
chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID:组可以是组名或者组ID:文件是以空格分开的要改变权限的文件列表,支持通配符. chown常见命令参数 Usage: cho ...
- buff/cache 内容释放
oscache远程服务器特别卡,top命令查看获得 buff/cache 占据内存特别大,使用以下命令清理缓存: swap清理: swapoff -a && swapon -a 注意: ...
- 《C++ Primer Plus》读书笔记之十一—类继承
第十三章 类继承 1.类继承:扩展和修改类. 2.公有继承格式:冒号指出B类的基类是A,B是派生类. class B :public A { ... }: 3.派生类对象包含基类对象.使用公有派生,基 ...
- windows 查看端口号,杀进程
查看端口号: 开始--运行--cmd netstat –and 杀进程: windows任务管理器 查看--显示列-PID 相关知识: 一台机器的80端口被httpd (apache) ...
- 面向对象程序设计_课堂作业_01_Circle
The 1st classwork of the C++ program 题目: Create a program that asks for the radius of a circle and p ...
- centos 增加网卡
CentOS 6添加网卡的方法 (2013-11-26 17:19:44) 转载▼ 标签: it 分类: Linux 前段时间安装了1台XEN server虚拟机,之前只用了1个网卡,ip是10.11 ...
- 用 Visual Studio Code 调试运行在 homestead 环境中的 laravel 程序
由于之前做 .net 开发比较熟悉 visualstudio,所以自 visualstudio code 发布后就一直在不同场合使用 vscode ,比如前端.node等等.最近在做 laravel ...
- centos6.2/6.3/6.4+nginx+mysql5.5+php5.3.14
一.安装所需软件包yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype free ...
- 1087. [SCOI2005]互不侵犯King【状压DP】
Description 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上 左下右上右下八个方向上附近的各一个格子,共8个格子. Input 只有一行, ...