Java开发之JSP指令
一、page指令
page指令是最常用的指令,用来说明JSP页面的属性等。JSP指令的多个属性可以写在一个page指令里,也可以写在多个指令里。但需要注意的是,无论在哪个page指令里的属性,任何page允许的属性都只能出现一次,否则会出现编译错误。import属性除外,可以出现多次。属性名称区分大小写。
属性名称 | 取值范围 | 描述 |
language | java | 指明解释该JSP文件时采用的语言。一般为Java语言。默认为Java。 |
extends | 任何类的全名 | 指明编译该JSP文件时继承哪个类。jsp为Servlet,因此当指明继承普通类时需要实现Servlet的init、destroy等方法。 |
import | 任何包名,类名 | 引入该JSP中用到的类、包等。import是唯一可以声明多次的page指令属性。一个import属性可以引用多个类,中间用英文逗号隔开,如<%@ page import="java.util.List,java.util.ArrayList"%>。 |
session | true,false | 指明该JSP内是否内置Session对象。如果为true,则内置Session对象,可直接使用。否则不内置Session对象。默认为true。 |
autoFlush | true,false | 是否运行缓存。如果为true,则使用out.println()等方法输出的字符串并不是立刻到达客户端服务器的,而是暂存在缓存里,缓存满或者程序执行完毕或者执行out.flush()操作时才到客户端。默认为true。 |
buffer | none或者数字+kb | 指定缓存大小。当autoFlush设为true时有效,例如:<%@ page buffer="10kb"%>。 |
isThreadSafe | true,false | 指定是否线程安全。如果为true,则运行多个线程同时运行该JSP程序,否则只运行一个线程运行,其余线程等待。默认为false。 |
isErrorPage | true,false | 指定该页面是否为错误处理页面,如果为true,则该JSP内置有一个Exception对象exception,可直接使用,否则没有,默认为fasle。 |
errorPage | 某个JSP页面的相对路径 | 指明一个错误显示页面,如果该JSP程序抛出了一个未捕捉的异常,则转到errorPage指定的页面。errorPage指定的页面通常isErrorPage属性为true,且内置的excception对象为未捕捉的异常。 |
contentType | 有效的文档类型 |
客户端浏览器根据该属性判断文档类型,例如: HTML格式为text/html 纯文本格式为text/plain JPG图像为image/jpeg GIF图像为image/gif WORD文档为application/msword |
info | 任意字符串 | 指明JSP的信息。该信息可以通过Servlet.getServletInfo()方法获取到。 |
trimDirectiveWhitespaces | true,false | 是否去掉指令前后的空白字符。默认为false。 |
trimDirectiveWhitespaces=“false”(默认为false)时HTML代码效果图:
trimDirectiveWhitespaces=“true”时HTML代码效果图:
注意:在HTML文件中,空行是不影响显示效果的。但如果输出的是XML文件,则可能有问题,因为某些XML解析器不允许XML文件前面有空行。
二、include指令
1.重点说明
include指令只有一种格式:<%@ include file="relativeURL"%>。relativeURL为本应用程序内另一个JSP文件或者HTML文件的路径。include指令用来实现JSP页面的的区块化。
2.代码实践和效果图
Head.jsp(导航栏内容)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head> <title>My JSP 'Head.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head> <body>
<table width="100%" cellspacing=1 bgcolor=#999999>
<tr>
<td bgcolor=#666666 colspan="7"
style="color:#FFFFFF; font-size:40px; height:60px;">
Hello World
</td>
</tr>
<tr>
<td bgcolor=#DDDDDD align="center">首页</td>
<td bgcolor=#DDDDDD align="center">百科</td>
<td bgcolor=#DDDDDD align="center">文档</td>
<td bgcolor=#DDDDDD align="center">下载</td>
<td bgcolor=#DDDDDD align="center">关于</td>
<td bgcolor=#DDDDDD align="center">邮件</td>
<td bgcolor=#DDDDDD align="center">社区</td>
</tr>
</table>
</body>
</html>
Foot.jsp(版权内容)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head> <body>
<table width="100%" cellspacing=1 bgcolor=#CCCCCC>
<tr>
<td align="center" bgcolor=#666666 style="color: #FFFFFF;font-size:14px;height:20px;">
Copyright 2015-2016 ©King
</td>
</tr>
</table>
</body>
</html>
Include.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page trimDirectiveWhitespaces="true" %><!-- 是否去掉指令前后的空白字符。默认为false -->
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head> <body>
<%@ include file="Head.jsp" %> <!--include指令 -->
<p style="line-height:22px; text-indent:2em;">拉布拉多猎犬因原产地在加拿大的纽芬兰与拉布拉多省而得名。
拉布拉多犬是一种中大型犬类,个性忠诚、大气、憨厚、温和、阳光、开朗、活泼,智商极高,也对人很友善,
是非常适合被选作经常出入公共场合的导盲犬或地铁警犬及搜救犬和其他工作犬的狗品种,
跟哈士奇(西伯利亚雪撬犬)和金毛猎犬并列三大无攻击性犬类,拉布拉多智商位列世界犬类第七。</p>
<%@ include file="Foot.jsp" %> <!--include指令 -->
</body>
</html>
3.include行为和include指令
JSP还提供了另一种包含文件的行为(include行为):<jsp:include page="relativeURL">命令。该命令与include指令使用方法基本一致。不同的是include指令是把Head.jsp和Foot.jsp的源代码添加到Include.jsp中然后再编译成一个class文件,属于先包含后编译。而include行为则是运行时单独执行Head.jsp和Foot.jsp,然后把执行结果包含到Include.jsp中,属于先运行后包含行为。
除了上面两种方法包含文件外,还可以在web.xml中通过JSP配置来包含文件。
<jsp-config>
<jsp-property-group>
<include-prelude>/Head.jspf</include-prelude><!--在执行JSP之前执行的文件 -->
<include-coda>/Foot.jspf</include-coda><!--在执行JSP之后执行的文件 -->
</jsp-property-group>
</jsp-config>
三、taglib指令
JSP支持标签技术。使用标签功能能够实现视图代码重用。要使用标签功能必须先声明标签库以及标签前缀。taglib指令用来指明JSP页面内使用的JSP标签库。taglib指令有两个属性,uri为类库的地址,prifix为标签的前缀。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
</head>
<body>
<c:forEach var="item" items="${arrays}">
<c:out value="item"></c:out>
</c:forEach>
</body>
</body>
</html>
Java开发之JSP指令的更多相关文章
- Java开发之JSP行为
一.Java Bean行文 1.重点说明 Java Bean行为是一组与Java Bean相关的行为,包括useBean行为.setProperty行为.getProperty行为等.Java Bea ...
- javaweb开发之jsp
一.WEB应用的目录结构 通常我们是在IDE中创建web应用程序,IDE自动为我们实现了WEB的目录结构,下面来看如何徒手创建一个WEB程序. 首先来看一下Tomcat自带的一个web应用的目录结构 ...
- Java开发之Servlet之间的跳转
一.转向(Forward) 1.要点说明 转向是通过RequestDispatcher对象的forward()方法来实现的.RequestDispatcher可以通过HttpServletReques ...
- JAVAWEB开发之JSP、EL、及会话技术(Cookie和Session)的使用详解
Servlet的缺点 开发人员要十分熟悉JAVA 不利于页面调试和维护(修改,重新编译) 很难利用网页设计工具进行页面设计(HTML内容导入到servlet中,用PrintWriter的对象进行输出) ...
- Java开发之Redis
简介 Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key - value 数据库 Redis 与 其他 key - value 缓存产品均有以下特点: Redis 支持数据持久化 ...
- Java开发之javaEE(java2EE)的介绍,java软件工程师初步阶段知识
1. 为什么需要JavaEE 我们编写的JSP代码中,由于大量的显示代码和业务逻辑混淆在一起,彼此嵌套,不利于程序的维护和扩展.当业务需求发生变化的时候,对于程序员和美工都是一个很重的负担. 为了程序 ...
- Java开发之abstract 和 interface的区别
Java开发abstract 和 interface的区别 java开发里面经常会用到虚函数和接口,这两者的区别是什么呢? abstract: 子类里面只能继承一个父类 interface: 子类可以 ...
- Java开发之@PostConstruct和@PreConstruct注解
从Java EE5规范开始,Servlet增加了两个影响Servlet生命周期的注解(Annotation):@PostConstruct和@PreConstruct.这两个注解被用来修饰一个非静态的 ...
- Java开发之Servlet生命周期
Servlet会在服务器启动或第一次请求该Servlet的时候开始生命周期,在服务器结束的时候结束生命周期.无论请求多少次Servlet,最多只有一个Servlet实例.多个客户端并发请求Servle ...
随机推荐
- github上比较全的知识
https://github.com/hawx1993/github-FE-project
- 设置时间 new Date
1.标准格式下的时间是object ,操作时可以通过 var cDate=new Date(startTime.getTime());来复制当前日期避免操作给初始日期带来影响 2. 以月为单位计算想要 ...
- 每日一博 | 用 Ionic2 创建 App 启动页滑动欢迎界面
原文 https://my.oschina.net/qinphil/blog/777787 效果如下,图片来自网络 本文例子和上图稍有不同,主要功能如下: 每滑动一下展示一张全屏图片: 滑动到最后一 ...
- Flex Viewer
一.Flex Viewer简介 Flex Viewer是ESRI公司推出的可以高效开发基于WEB的地理信息应用系统的一种完全免费的应用程序框架.业务人员使用该框架可以无需任何额外的编程就能够通过简单配 ...
- MS14-064 漏洞测试入侵win7
Microsoft Windows OLE远程代码执行漏洞,OLE(对象链接与嵌入)是一种允许应用程序共享数据和功能的技术, 远程攻击者利用此漏洞通过构造的网站执行任意代码,影响Win95+IE3 – ...
- No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386)
今天在运行一个老ios项目的时候,突然报错:No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VAL ...
- RxJava 和 RxAndroid 二(操作符的使用)
前言:对Rx不了解的朋友可以先看我的第一篇博文 RxJava 和 RxAndroid 一 (基础),是对Rxjava的基本介绍 1.merge操作符,合并观察对象 List<String> ...
- 查看Android系统给APP分配的最大堆栈
命令方式: cat /system/build.prop dalvik.vm.heapgrowthlimit=48m dalvik.vm.heapsize=128m 代码方式: Runtime rt= ...
- Android不同屏幕适配
1.尽量使用线性布局(LinearLayout)和相对布局(RelativeLayout),不要使用绝对布局. 2.尽量使用dip和sp,不要使用px. 3.为不同的分辨率提供不同的布局文件和图片. ...
- Java中的查找算法之顺序查找(Sequential Search)
Java中的查找算法之顺序查找(Sequential Search) 神话丿小王子的博客主页 a) 原理:顺序查找就是按顺序从头到尾依次往下查找,找到数据,则提前结束查找,找不到便一直查找下去,直到数 ...