찾다
php教程php手册JAVA/JSP学习系列之七
JAVA/JSP学习系列之七Jun 13, 2016 pm 12:46 PM
javajsp하나단계소개하다머리말존재하다공부하다할 것이다시리즈


一、前言 (本文译自Orion官方站点)

本文将一步一步介绍在Orion Application Server下定义自己的标签,然后,实现该标签的功能,最后用一个jsp例子测试。

二、建立标签,实现该标签的功能。

1.命名package为:com.acme.mytags(为了和原文相同,我不做改动)

package com.acme.mytags;

2.import相关class

import javax.servlet.jsp.*;

import javax.servlet.jsp.tagext.*;

3.实现javax.servlet.jsp.tagext.Tag接口:

public class HelloWorld implements Tag

{

4.定义局部变量

private PageContext pageContext;

private Tag parent;

5.调用标签开始的实现方法

public int doStartTag() throws javax.servlet.jsp.JspException

{

return SKIP_BODY;

}

注意:这个方法返回 SKIP_BODY,就是标签的body为空的时候,将返回这个值,否则将返回:EVAL_BODY_INCLUDE

6.调用标签结束的实现方法

public int doEndTag() throws javax.servlet.jsp.JspException

{

try

{

pageContext.getOut().write('Hello World!');

}

catch(java.io.IOException e)

{

throw new JspException('IO Error: ' + e.getMessage());

}

return EVAL_PAGE;

}

这样将在jsp文件的自定义标签结束地方输出“Hello World!”

7.还不够,我们还要写下面的方法:

public void release() {}

对于本简单的例子,上面的方法不需要任何实现。

8.JSP的容器要调用下面的方法:

public void setPageContext(final javax.servlet.jsp.PageContext pageContext) {

this.pageContext=pageContext;

}

JSP容器通过上面的方法调用标签,而且上面的方法用来设置标签的PageContext.

9.JSP的容器还要调用下面的方法:

public void setParent(final javax.servlet.jsp.tagext.Tag parent)

{

this.parent=parent;

}

JSP容器通过上面的方法设置标签的parent-Tag,因为每个标签的PageContext都要保留它的parent标签。

10.最后,实现方法:

public javax.servlet.jsp.tagext.Tag getParent()

{

return parent;

}

}

11. 编译标签。

三、描叙标签

现在将要写一个描叙文件,描叙该标签。

1.建立一个taglib.tld文件,

2.taglib.tld是一个XML格式的文本文件,XML的头如下:


'http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd'>

3.描叙标签库



1.0

1.1

mt http://www.orionserver.com/tutorials/tagtut/lesson1/mytags.jar

My first Tag library

4.描叙标签



helloWorld

com.acme.mytags.HelloWorld

empty

A Hello world Tag



5.结束



四、打包

名称为:mytags.jar

其目录结构为:

com/acme/mytags/HelloWorld.class

META-INF/taglib.tld

五、在jsp文件中使用自定义标签

建立hello.jsp如下:





















六、测试运行

在orion目录下,建立如下结构,其中,tag是自己建立的,前面的目录是本来就有的。

E:oriondefault-web-app ag

将jar文件和jsp文件全部放到这个目录下。

然后,访问:

http://localhost:[port]/tag/hello.jsp

将出现:
------------------------------------------------------------------
Hello World!
------------------------------------------------------------------

七、恭喜,你已经成功了!

附:mytags.jar和hello.jsp 文件本站下载地址:

http://www.wodejia.net/softdownload/java/orion_tag01.zip(出处:viphot.com)

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
带你搞懂Java结构化数据处理开源库SPL带你搞懂Java结构化数据处理开源库SPLMay 24, 2022 pm 01:34 PM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于结构化数据处理开源库SPL的相关问题,下面就一起来看一下java下理想的结构化数据处理类库,希望对大家有帮助。

Java集合框架之PriorityQueue优先级队列Java集合框架之PriorityQueue优先级队列Jun 09, 2022 am 11:47 AM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于PriorityQueue优先级队列的相关知识,Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的,下面一起来看一下,希望对大家有帮助。

完全掌握Java锁(图文解析)完全掌握Java锁(图文解析)Jun 14, 2022 am 11:47 AM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于java锁的相关问题,包括了独占锁、悲观锁、乐观锁、共享锁等等内容,下面一起来看一下,希望对大家有帮助。

一起聊聊Java多线程之线程安全问题一起聊聊Java多线程之线程安全问题Apr 21, 2022 pm 06:17 PM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于多线程的相关问题,包括了线程安装、线程加锁与线程不安全的原因、线程安全的标准类等等内容,希望对大家有帮助。

Java基础归纳之枚举Java基础归纳之枚举May 26, 2022 am 11:50 AM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于枚举的相关问题,包括了枚举的基本操作、集合类对枚举的支持等等内容,下面一起来看一下,希望对大家有帮助。

详细解析Java的this和super关键字详细解析Java的this和super关键字Apr 30, 2022 am 09:00 AM

本篇文章给大家带来了关于Java的相关知识,其中主要介绍了关于关键字中this和super的相关问题,以及他们的一些区别,下面一起来看一下,希望对大家有帮助。

Java数据结构之AVL树详解Java数据结构之AVL树详解Jun 01, 2022 am 11:39 AM

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于平衡二叉树(AVL树)的相关知识,AVL树本质上是带了平衡功能的二叉查找树,下面一起来看一下,希望对大家有帮助。

一文掌握Java8新特性Stream流的概念和使用一文掌握Java8新特性Stream流的概念和使用Jun 23, 2022 pm 12:03 PM

本篇文章给大家带来了关于Java的相关知识,其中主要整理了Stream流的概念和使用的相关问题,包括了Stream流的概念、Stream流的获取、Stream流的常用方法等等内容,下面一起来看一下,希望对大家有帮助。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.