jsp自定义标签实例
jsp自定义标签中的Function函数

jsp⾃定义标签中的Function函数在taglib中我们发现有⼀个标签叫做<function>,这次简单介绍<function>标签的基本⽤法,<function>标签可以做什么呢?它可以让我们在jsp⽤直接调⽤某个⽅法,根据⾃定义的⽅法返回指定的值,兼容jstl标签,省去了在jsp中直接使⽤<%!%>来定义⽅法体再调⽤的繁琐.如果你⽤过el语⾔的话估计会很快上⼿,其实<function>标签就是⼀个拥有⽅法体的el语⾔.注意:function所定义的⽅法必须需要是静态的,如果不是静态的话jstl是不能识别所定义的⽅法.Java代码如下:package org.lxh.taglib;import java.util.List;public class FunctionTag {public static String hello(String name) {return name;}public static Integer bbq(List list) {return list.size();}}⽅法必须静态,可以定义有返回值或者void类型的⽅法.tld:<?xml version="1.0" encoding="UTF-8" ?><taglib xmlns="/xml/ns/j2ee" xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee /xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"version="2.0"><tlib-version>1.0</tlib-version><short-name>my</short-name><uri></uri><function><!--EL页⾯调⽤名字--><name>hello</name><!--指定标签的处理类,指定了标签由哪个Java类来处理。
自定义标签(Custom Tag)

一、概述JSP中有一块重要的技术:自定义标签(Custom Tag),最近这几天在学习Struts的时候发现Struts中使用了很多自定义标签,如html、bean等。
所以我就做了个简单的试验,学习一下这种技术。
首先介绍一下这种技术吧!1.优点:取代了JSP中的Java程序,并且可以重复使用,方便不熟悉Java编程的网页设计人员。
2.开发流程:(1)编写JSP,在JSP中使用自定义标签。
(2)在web.xml中指定JSP中使用的标签的.tld(标签库描述文件)文件的位置。
(3) .tld文件中指定标签使用的类。
3. 自定义标签的分类:(1)简单标签:如< mytag:helloworld/>(2)带属性标签:如<imytag:checkinput dbname = “<myBean.getDBName()>”/>(3)带标签体的标签:在自定义标签的起始和结束标签之间的部分为标签体(Body)。
Body的内容可以是JSP中的标准标签,也可以是HTML、脚本语言或其他的自定义标签。
<mytag:che ckinput dbname = “<myBean.getDBName()>”><mytag:log message=”Table Name”><mytag:checkinput />(4)可以被Script使用的标签:定义了id和type属性的标签可以被标签后面的Scriptlet使用。
<mytag:connection id = “oraDB” type = “DataSource” name = “Oracle”><%oraDB.getConnection(); %>4.接口及其他实际上,自定义标签的处理类实现了Tag Handler对象。
JSP技术在javax.servlet.jsp.tagext中提供了多个Tag Handler 接口,JSP1.2中定义了Tag、BodyTag、IterationTag接口,在JSP2.0中新增了SimpleTag接口。
jsp课件

JSP第一天一、JSP(java server page)1、JSP 是服务器端运行的页面,JSP 本身就是一个文档,他不仅可以包含静态的HTML 代码,也可以包含动态的JAVA 代码,服务器容器可以将JSP 转换成Servlet 发布,并接受请求。
2、JSP is a Servlet!tomcat-5.5.17\conf\web.xml 文件中<servlet><servlet-name>default</servlet-name><servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class><init-param><param-name>debug</param-name><param-value>0</param-value></init-param><init-param><param-name>listings</param-name><param-value>true</param-value> --- 直接用应用名字访问的时候,会把应用的所有文件目录列出来,系统发布的时候置为false</init-param><load-on-startup>1</load-on-startup></servlet>tomcat-5.5.17\conf\server.xml 文件中<Connector port="8080" maxHttpHeaderSize="8192" --- 可以修改端口,前提是系统中没有占用的端口,改为80 的时,访问可以不写端口,默认值,系统发布时用maxThreads="150" minSpareThreads="25" maxSpareThreads="75"enableLookups="false" redirectPort="8443" acceptCount="100"connectionTimeout="20000" disable UploadTimeout="true" />3、Jsp 文件只需放在应用文件下就可以了。
JSP自定义标签的实现

J S P自定义标签 的实现
J S P自定义标签的实现
蒋波 任 继念 崔蔚
( 中国工程物理研究院工学院,四川绵阳,6 2 1 9 0 0 )
摘
要
文章介绍了实现 自定义标签 需要 的接 口和基类 ,也通过具体例子说明 自定义标签的实现方法和在
J S P页中的应用 。
关键词 T a g S u p p o r t 类;B o d y T a g S u p p o r t 类 ;T L D;t a g l i b指令
T a g . S KI P B OD Y 表 示标签 的体 内容 应该 忽略 , T a g . E V AL B O DY I NC L UD E表示 体 内容应 该被 处理 ,
收稿 日期 :2 0 1 4 . 0 1 - 0 6
笙! 星 墨 塑
塾 兰 皇 型 垫
然后 控制 转 移 到 d o Af t e r B o d y 方 法 上 ,这 个 方法 也返 回两 个可 能值 之一 ,T a g . S KI P _ BO DY将控 制转 移
容的情形 , 而T a g与 I t e r a t i o n T a g 接 口和对应的 T a g S u p p o  ̄类适用于标签体内容为空或直接把体内容传 递到页面 的简单情形,没有体 内容的标签也可直接实现更简单的 T a g 接 口。
I t e r a t i o n T a g接 口的执行 流程 如 图 1右 半部分所 示 ,第 一步 是获得 适 当类 的一个 实例 ,或者 从 J S P 容器 的标 签 处理 器 资源 池 ,或 者产 生一个 新 实例 ,然 后 ,标 签 处理器 属性被 设置 ,这 包括 J S P 容器调 用T a g接 口的 s e t P a g e C o n t e x t( )方 法指 定 当前 的 P a g e C o n t e x t 对 象 ,调用 s e t P a r e n t( )提供 对 当前标
JSP课件-12标准标签

迭代标签库
迭代标签用于多次计算标签体 迭代标签库中的标签有: 迭代标签库中的标签有:
迭代标签
forEach
forTokens
迭代标签库
<%@ taglib uri="/jstl/core_rt" prefix="c" %> <%! String [] numbers = { "1", "2", "3", "4" }; %> <c:set var="member" value="Joe:Petter;Ryan|John" scope="page" /> <BODY> forEach 标签将遍历对象集 <c:forEach var="numbering" items="<%= numbers %>"> 合并显示1 合并显示1到4之间的数字 <c:out value="${numbering}" /> </c:forEach> <c:forTokens items="${pageScope.member}" delims=":;|" var="membername"> <c:out value="${membername}" /> <br /> forTokens 将遍历用所提供的分 </c:forTokens> 隔符分隔的值并显示所有的名称 </BODY>
自定义Java类继承于标签 类继承于标签API 自定义 类继承于标签 编写标签描述文件 配置web.xml 配置 使用自定义标签
如何设置自定义标签

如何设置⾃定义标签1.什么是⾃定义标签,查询单独的某种⽤户的特定信息时可以使⽤⾃定义标签。
2.如何设置⾃定义标签。
1.2.全部代码如下:<?xml version="1.0" encoding="UTF-8" standalone="no"?><taglib xmlns="/xml/ns/j2ee" xmlns:xsi="/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="/xml/ns/j2ee /xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"> <display-name>Ruiec Tags</display-name><tlib-version>1.0</tlib-version><short-name>ruiec</short-name><uri>/ruiec-tags</uri><tag><name>hasPerms</name><tag-class>com.ruiec.web.template.jsp.directive.HasPermsTag</tag-class><body-content>scriptless</body-content><attribute><name>perms</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute></tag><tag><name>date</name><tag-class>com.ruiec.web.template.jsp.directive.DateTag</tag-class><body-content>scriptless</body-content><attribute><name>startDate</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute><attribute><name>endDate</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute><attribute><name>type</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute><attribute><name>var</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute></tag><tag><name>module</name><tag-class>com.ruiec.web.template.jsp.directive.ModuleTag</tag-class><body-content>scriptless</body-content><attribute><name>parentId</name><type>ng.Integer</type><rtexprvalue>true</rtexprvalue></attribute><attribute><name>var</name><rtexprvalue>true</rtexprvalue></attribute></tag><tag><name>department</name><tag-class>com.ruiec.web.template.jsp.directive.DepartmentTag</tag-class><body-content>scriptless</body-content><attribute><name>parentId</name><type>ng.Integer</type><rtexprvalue>true</rtexprvalue></attribute><attribute><name>var</name><rtexprvalue>true</rtexprvalue></attribute></tag><tag><name>user</name><tag-class>erTag</tag-class><body-content>scriptless</body-content><attribute><name>userId</name><type>ng.Integer</type><rtexprvalue>true</rtexprvalue></attribute><attribute><name>var</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute></tag><tag><!-- 查询回复帖⼦ --><name>replyArticle</name><tag-class>com.ruiec.web.template.jsp.directive.ReplyArticleTag</tag-class><body-content>scriptless</body-content><attribute><name>replyArticleId</name><type>ng.Integer</type><rtexprvalue>true</rtexprvalue></attribute><attribute><name>var</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute></tag></taglib>3.配置Tag⽂件如下,这⾥相当⼀个查询。
JSP01基础语法

JSP标准指令JSP标准指令用来设定JSP网页的整体配置信息例如配置JSP中的全局变量,声明类,要实现的方法和输出内容的类型等。
它的特点是:它们并不向客户端产生任何输出,并且所有的指令在JSP整个文件范围内有效在JSP常用的共有三种JSP指令,它们是被设置在<%@和%>括号中插入到HTML 网页的。
1JSP标准指令格式:page语句应用格式:page语句作用于整个JSP网页,即作用范围是整个JSP网页,它用于定义JSP网页文件中的全局属性,其中各个选项的意义分别为:注:用error.jsp文件接收异常的时候, 需要关闭:浏览器---→integer选项------→高级-----→显示友好http错误信息不选择.,否则浏览器将要拦截.在web.xml中配置异常<error-page><exception-type>ng.Exception</exception-type><location>/WEB-INF/error.jsp</location></error-page>此时出现错误的页面不用加 errorPage=”error.jsp”当出现异常时,程序转到由<location>/WEB-INF/error.jsp</location>指向的路径error.jsp放置到WEB-INF路径下,客户端无法访问.JSP脚本指令标签JSP通常使用一系列特殊标签在网页中引入Java代码或Java片断JSP隐含(内置)对象在JSP内部有一个隐含对象集合,编写JSP页面中,可以直接调用这些隐含对象中的方法而不必事先要把它实例化。
简化了JSP页面的开发。
JSP步骤 简单实例

上机一 WEB 应用开发环境配置内容:搭建JSP工作环境,主要包括Java JDK的安装、Tomcat服务器的安装和构建班级论坛的第一个JSP的index.jsp首页面。
1. 安装JDK的步骤如下找到jdk-6-windows-i586.exe 运行安装程序,设定安装路径为D:\学习软件\jdk1.6.0, 其余接受默认安装。
安装结束后就要配置环境变量,包括java_home,path和classpath的设置,操作步骤如下:1)用鼠标右击“我的电脑”,选择“属性”,→“高级”→“环境变量”→“系统变量”→“新建”→在“变量名”输入框中写入“java_home”,在“变量值”输入框中写入“D:\学习软件\jdk1.6.0”→点击“确定”。
2)选中“系统变量”查看是否有classpath项目,如果没有就点击“新建”,→如果已经存在就选中classpath选项,→点击“编辑”按钮,→然后在“变量名”中填写“classpath”,→在“变量值”中填写“.;D:\学习软件\jdk1.6.0\lib;D:学习软件\jdk1.6.0\jre\lib”。
在“path”设定时,“变量名”输入框填写“path”,“变量值”输入框填写“D:\学习软件:\jdk1.6.0\bin”3)打开命令提示符窗口,输入命令“java -version”,看到Java版本的信息,确定安装完成。
2. 安装Tomcat6步骤如下将apache-tomcat-6.0.18.zip从磁盘中解压到D:\学习软件盘符下在D:\学习软件\apache-tomcat-6.0.18\bin目录下双击“startup.bat”启动服务器,双击“shutdown.bat”关闭服务器。
在环境变量中添加“变量名”为“tomcat_home”,“变量值”为“D:\学习软件\apache-tomcat-6.0.18”的设定。
在启动服务器后,打开浏览器,在地址栏输入http://localhost:8080查看,如出现主页,则表示安装成功。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
jsp自定义标签实例
JSP自定义标签。
在自定义标签的起始和结束标签之间的部分为标签体(Body)。
标签处理程序类:定义标签的行为,并在JSP引擎遇到自定义标签时调用执行。
标签库描述符(TLD)文件:描述标签库的XML文档,向JSP引擎提供有关自定义标签的标签处理程序的信息。
tag标签相关属性:实现简单标签处理程序标签处理程序是一个在运行时调用的Java类,它包含在JSP文件中使用的自定义标签的实现代码.标签处理程序必须实现或扩展javax.servlet.jsp.tagext包中的类和接口.javax.servlet.jsp.tagext含有允许标签处理程序类与JSP容器通信的接口和类。
最近在项目中要用到这种技术,所以自己就写一个经典的HelloWorld实例:其实对自定义标签已经早有接触了(Struts中使用了很多自定义标签,如html、bean等)使用这种技术的优点:取代了JSP中的Java程序,并且可以重复使用,方便不熟悉Java编程的网页设计人员。
实现步骤:
首先启动eclipse,新建一个web项目(废话...)
1、修改web.xml文件,增加自定义标签支持。
Java代码
2、创建标签库TLD文件tlds\helloworld.tld 。
Java代码
这里注意:web.xml和xxx.tld这两个XML文件的头信息的版本匹配很重要,否则会导致页面报错找不到标签。
3、创建标签处理程序类HelloWorldTag(重写doStartTag和doEndTag方法)。
Java代码
补充:
doStartTag()方法是遇到标签开始时会呼叫的方法,其合法的返回值是EVAL_BODY_INCLUDE与
SKIP_BODY,前者表示将显示标签间的文字,后者表示不显示标签间的文字。
doEndTag()方法是在遇到标签结束时呼叫的方法,其合法的返回值是EVAL_PAGE与SKIP_PAGE,前者表示处理完标签后继续执行以下的JSP网页,后者是表示不处理接下来的JSP网页。
doAfterBody(),这个方法是在显示完标签间文字之后呼叫的,其返回值有EVAL_BODY_AGAIN与
SKIP_BODY,前者会再显示一次标签间的文字,后者则继续执行标签处理的下一步。
EVAL_BODY_INCLUDE:把Body读入存在的输出流中,doStartTag()函数可用。
EVAL_PAGE:继续处理页面,doEndTag()函数可用。
SKIP_BODY:忽略对Body的处理,doStartTag()和doAfterBody()函数可用。
SKIP_PAGE:忽略对余下页面的处理,doEndTag()函数可用。
EVAL_BODY_BUFFERED:申请缓冲区,由setBodyContent()函数得到的BodyContent对象来处理tag的body,如果类实现了BodyTag,那么doStartTag()可用,否则非法。
EVAL_BODY_AGAIN:请求继续处理body,返回自doAfterBody(),这个返回值在你制作循环tag的时候是很有用的。
预定的处理顺序是:doStartTag()返回SKIP_BODY,doAfterBodyTag()返回SKIP_BODY,doEndTag()返回EVAL_PAGE。
如果继承了TagSupport之后,如果没有改写任何的方法,标签处理的执行顺序是:doStartTag() ->不显示文字->doEndTag()->执行接下来的网页。
如果您改写了doStartTag(),则必须指定返回值,如果指定了EVAL_BODY_INCLUDE,则执行顺序是:doStartTag()->显示文字->doAfterBodyTag()->doEndTag()->执行下面的网页。
4、最终测试页面hello.jsp 。
Java代码
实例完成,HelloWorld再现江湖!!!。