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)是覆盖在父窗体上的子窗体.通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动.子窗体可提供信息.交互等. 如果您想要单独引用该插件的功能,那么您需要引用 ...
随机推荐
- ORAchk-数据库健康检查好帮手
ORAchk 之前被称为RACcheck,后来它的检查范围进行了扩展,改名为了ORAchk,它是在数据库系统进行健康检查的一个专用工具,这个工具主要用来检查软件的配置是否符合要求以及一些最佳实践是否被 ...
- UIImagePickerController按钮的中文问题
UIImagePickerController按钮的中文问题 执行以下两步即可 1. 在targets中设置region为China 2. 在project中添加支持中文
- orcl数据库查询重复数据及删除重复数据方法
工作中,发现数据库表中有许多重复的数据,而这个时候老板需要统计表中有多少条数据时(不包含重复数据),只想说一句MMP,库中好几十万数据,肿么办,无奈只能自己在网上找语句,最终成功解救,下面是我一个实验 ...
- iptables简单规则记录
先来一句:好记性不如烂笔头! 1.iptables简介 iptables是基于包过滤的防火墙,它主要工作在osi模型的2,,4层,也可以工作在7层(iptables + squid) 2.原理 防火墙 ...
- sql标量函数与表值函数
标量函数 ),)) returns int as begin return (select UserID from UserInfo where UserName=@UserName and User ...
- September 16th 2017 Week 37th Saturday
We are all in the gutter, but some of us are looking at the stars. 身处艰难,但仍有人仰望星空. When standing on t ...
- .Net开发八年,坐标杭州,上个月换工作感觉现在.Net岗位很少,希望和同在杭州的同行们交流一下
.Net开发八年,坐标杭州,中间做过2年Java, 目前新入职一家做防伪溯源的中型公司,200人左右, 之前在一家500人规模的软件公司工作过4年,后面2年工作过3家互联网创业公司, 上个月换工作感觉 ...
- 【笔记】JS脚本为什么要放在body最后面以及async和defer的异同点
1.没有defer或async 浏览器遇到脚本的时候会暂停渲染并立即加载执行脚本(外部脚本),"立即"指的是在渲染该 script 标签之下的文档元素之前,也就是说不等待后续载入的 ...
- Css中路径data用法
Data URI scheme是在RFC2397中定义的,目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入. data:,文本数据 data:text/plain,文本数据 data: ...
- MDRT_<>$表
数据库中有好多的MDRT打头的表,而这些表的字段都是一样的,那这些表是做什么用呢? MDRT_<>$: 用来存储与空间索引相关的信息.这些表与常规表不一样,不能做复制,删除,新建等.如果对 ...