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

 

posted @ 2016-10-20 18:09  dawn-tangzedong  阅读(323)  评论(0编辑  收藏  举报