JSP三大指令

摘要:
JSP页面中的三大指令:pageincludetaglib一、Page指令的介绍:对整个页面的配置信息的指令。去掉JSP的Page指令就是一个HTML文件。看下面的JSP页面,该页面使用了page指令的errorPage属性,该属性指定了对页面发生异常时的异常处理页面。

JSP页面中的三大指令:
page include taglib

一、Page指令的介绍:
对整个页面的配置信息的指令。全部都是当前页面的配置信息。去掉JSP的Page指令就是一个HTML文件。
page指令怎么加:
<%@ page ... %>
里面的属性:
autoFlush是否清除缓存,默认True,不用修改。
ContentType页面的类型,utf-8、GBK、GB2312、GB18030、ISO-8859-1注意:他们之间不可以混用。mime类型。把报头信息改了就会发生改变。
errorPage错误页面,输入一个另外页面的路径。还是比较常用。请求转发的方式。
isErrorPage为True当前页面就是错误处理页面。此页面有exception对象。报异常的时候链接不到页面的位置,因为找的是转换的Servlet中的信息,所以在显示的JSP页面中定位不到。无论页面中是否有isErrorPage,只要是errorPage属性指定跳转的页面就可以跳转和错误页面中是否设置isErrorPage属性无关。
import导入类,导入包。
isElIgnored是否屏蔽EL表达式,默认为False,不用管。
isThreadSafe是否允许同步,何谓同步,和线程有关,
开启一条应用是一个进程,一个进程是由多条线程组成的。True 允许多条线程的同步访问,线程不安全。由功能和环境来判断。页面允许是线程不安全的。数据是怎么来的是线程安全的。
数据的表现可以是线程不安全,数据的来源必须是线程安全。
language脚本应用语言(默认为java)。
pageEncoding设置当前页面的字符编码集。
session当前页面是否允许使用session(True、False)
extends继承,更换JSP的继承类,默认JSP继承JspBase类。改继承类对于开发一般用不到。
例如:
执行数据库操作的J S P页面中可以看出,在jsp页面的头部,使p a g e指令:

Java代码收藏代码
〈%@ page contentType="text/html; charset=gb2312" language="java" %〉  
〈%@ page import="java.sql.*" %〉  

其中第二条指令用于导入本页面中使用的类,如果没有通过 page 指令的 import
令导入这些类,则需在脚本中使用全限定类名一一即必须带包名。可见,此处的 import
属性类似于 Java 程序中的 import 关键字的作用。
看下面的 JSP 页面,该页面使用 page 指令的 info 方法指定了 JSP 页面的描述信息,
又使用 getServletInfo 方法输出该描述信息。

Java代码收藏代码
〈%@ page contentType="text/html; charset=gb2312" language="java" %〉  
<!一指定 info 信息-->〈%@ page info= this is a jsp" %〉  
<lDOCTYPE HTML PUBL "-//W3C//DTD HTML 4.0 Trans tional//EN">  
<HTML>  
<HEAD>  
<TITLE> 测试 page 指令的 info 属性</TITLE>  
</HEAD>  
<BODY>  
<!一输出 info 信息〉  
〈% =getServletInfo() %〉  
<table>  
</BODY>  
</HTML>

该页面的执行效果:会在页面输出“this is a jsp”
errorPage属性的实质是 JSP 的一种异常处理机制, JSP 不要求强制处理异常,即使
该异常是 checked 异常。如果 JSP 页面在运行中抛出未处理的异常,系统将自动跳转到
errorPage 属性指定的页面:如果errorPage 没有指定错误页面,系统则将异常信息呈现
给客户端浏览器一一这是所有的开发者都不愿意见到的场景。
看下面的 JSP 页面,该页面使用了page 指令的 errorPage 属性,该属性指定了对页
面发生异常时的异常处理页面。

Java代码收藏代码
〈%@ page contentType="text/html; charset=gb2312" language="java" errorPage="error.jsp"%〉  
<lDOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
<HTML>  
<HEAD>  
<TITLE> 测试 page 指令的 errorPage 属性</TITLE>  
</HEAD>  
<BODY>〈%  
// 下面代码将出现运行时异常  
int a = 6;  
int b = 0;  
int c = a / b;  
%〉  
<table>  
</BODY>  
</HTML>

下面是 error.jsp 页面,该页面本身是错误处理页面,因此将 isErrorPage 设置成 true

Java代码收藏代码
〈% @page contentType="text/html; charset=gb2312" language="java" iSErrorPage=  
"true" %〉  
<lDOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
<HTML>  
<HEAD>  
<TITLE> 出错页面 <IT TLE>  
</HEAD>  
<BODY>  
<!提醒客户端系统出现异常 >系统出现异常 <br>  
</BODY>  
</HTML>  

在浏览器中浏览前一个页面的效果就会跳转到出错页面。
如果将前一个页面中 page 指令的 errorPage 属性删除,再次通过浏览器浏览该页面,
执行效果则显示错误信息。
二、include指令
作用:包含,把另一个页面包含在当前页面中。
在本页面中怎么写:
<%@ include file="被包含的页面"%>
一个页面包含另一个页面,将两个页面合二为一,在什么时间合二为一的?页面进行转换Servlet的时候将两者合二为一的。
这种方式有长处也有短处,第一点:虽然访问两个资源文件,但是只会生成一个Servlet,称作静态包含(只会生成一个Servlet,因为转换的时候把其他网页的信息加载进来了)。第二点:如果是Tomcat5.0,被包含页面发生改变,包含页面体现不出来。JavaEE的版本是随着jsp版本和Servlet版本变化的,Tomcat版本越高,支持的Jsp和Servlet版本越高。Tomcat5.0以前被包含页面发生改变,包含页面体现不出来。//理解
所以在以前include指令一般不用,但是现在Tomcat6.0用,Tomcat6.0支持include指令。第三点:包含页面可以访问被包含页面中的变量。在被包含页面中声明的变量在包含中页面中是可以使用的。第四点:包含页面无法向被包含页面传参。需要大量复用的东西需要专门生成一个页面进行处理。
三、taglib指令:申明该JSP文件使用了自定义的标签。
<%@taglib uri="URIToTagLibrary" prefix="tagPrefix" %>
1、uri属性:用来指定标签库的存放位置。
2、prefix属性:指定该标签库必须使用的前缀。
如:<%@taglib uri="http:java.sun.com/.../core" prefix="c" %>
JSP中使用Taglib,用两种方法,这里将两种方法说明如下:
一、仅声明TLD(标签库描述符)的位置
在jsp文件头部,声明:
<%@taglib uri="/WEB-INF/tlds/orataglib_1_0.tld" prefix="ora" %>
举例:在MyEclipse中新建一Web工程,取名为HelloWorldTag。新建一包,包名为mytag
(1)在mytag下,新建一Java类,内容如下:

Java代码收藏代码
packagemytag;    
importjava.io.IOException;  
import javax.servlet.jsp.*;  
import javax.servlet.jsp.tagext.*;  
public class HelloWorldTag extendsTagSupport{  
      public int doStartTag() throwsJspTagException{  
          returnEVAL_BODY_INCLUDE;  
      }  
      public int doEndTag() throwsJspTagException{  
      try{  
              pageContext.getOut().write("Hello World");  
          } catch(IOException ex){  
               throw new JspTagException("Error!");  
          }  
      returnEVAL_PAGE;  
      }  
}  

(2)在WEB-INF下新建一目录,目录名为tlds,下tlds下面新建一tld文件,命名为hello.tld,内容如下:

Java代码收藏代码
<?xml version="1.0" encoding="ISO-8859-1" ?>  
<!DOCTYPE taglib  
          PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"  
      "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">  
<taglib>  
    <tlibversion>1.0</tlibversion>  
    <jspversion>1.1</jspversion>  
    <shortname>myTag</shortname>    
      <tag>  
          <name>hello</name>  
          <tagclass>mytag.HelloWorldTag</tagclass>   
         <bodycontent>empty</bodycontent>  
     </tag>  
</taglib>  

(3)修改index.jsp页面代码,修改内容如下:

Java代码收藏代码
<%@ page language="java"%>  
<%@ taglib uri="/WEB-INF/tlds/hello.tld"prefix="mytag"%>  
<html>  
<body>  
<mytag:hello></mytag:hello>  
</body>  
</html>  

(4)运行:在浏览器中输入http://localhost:8082/HelloWorldtag/index.jsp
运行结果为:Hello World
解释:
<mytag:hello></mytag:hello>的作用就是在标签结束后调用了doEndTag() 方法,打印出Hello World
二、定义库名称
这里就不再详细描述了。

转载:https://www.iteye.com/blog/zwdsmileface-2192238

免责声明:文章转载自《JSP三大指令》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇双端队列的应用postgraSql支持View可以修改的两种方法。下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

pytest之生成测试报告

一、pytest-html生成报告 pytest-html的github源码地址:https://github.com/pytest-dev/pytest-html 安装:pip install pytest-html 1、在cmd中执行命令生成测试报告: # 使用pytest-xdist多进程运行生成html测试报告,并指定报告生成位置 pytest...

HTML表格基础详解

       在现在 div 大行其道的时代,table 这个标签似乎很少被人提及,到处都是 div+css 布局的书以及博客文章,但其实 table 以及连带的其他表格标签依然在网页中占很重要的地位,特别是后台展示数据的时候表格运用是否熟练就显得很重要,一个清爽简约的表格能够把繁杂的数据表现得很有条理,虽然 div 布局也可以做到,但是总没有表格来得方便...

使用TCPDF插件生成pdf以及pdf的中文处理

目录(?)[+] 多种多样的pdf开发库 WKHTMLTOPDF 2FPDF 3TCPDF 中文问题 做了这么多年项目,以前只是在别人的项目中了解过PHP生成pdf文件,知道并不难,但是涉及到了pdf开发库,首先介绍pdf库。 多种多样的pdf开发库1.WKHTMLTOPDF wkhtmltopdf是一个很好的解决方案,基本上可以原样输出html...

数据库中存放着HTML并附带样式,如何在界面上对已有的样式进行修改

在工作中遇到这样一个问题,数据库中存放着HTML代码,并且还带有样式,我要在界面上修改他已经写好的样式,例如把这个字段的字体改成微软雅黑,数据库中对应字段内容如下图 在界面面上是直接把上图这段HTML,放到界面上,这里用到了ko就是Knockoutjs,,里面的那句data-bind:html:JobDesc 中的html:JobDesc 效果跟@Htm...

JQurey

jQuery介绍   jQuery是一个轻量级的、兼容多浏览器的JavaScript库。 jQuery优势   一款轻量级的JS框架。jQuery核心js文件才几十kb,不会影响页面加载速度。 jQuery内容 1.选择器   2.筛选器   3.样式操作   4. 文本操作   5.属性操作   6.文本处理   7.事件   8.动画效果   9.插件...

解决highlightjs中纯文本被解析成HTML无法展示的问题,记一次工作中bug修复的思考

壹 ❀ 引 在本周迭代bug修复工作中,遇到了两个比较头疼的bug(同一个客户所提),bug问题描述也很奇怪,客户表示产品的富文本编辑器里的代码块功能,在纯文本语言模式下贴特定代码进去有的看不见,有的能看见但无法正常编辑,效果如下: 虽然知道了问题的表象,但还是有点无从下手,毕竟这块的功能不是我做的,实现原理以及功能逻辑都不了解,当然问题到最后肯定还...