>  기사  >  Java  >  javaWeb 커스텀 태그 사용법에 대한 자세한 설명을 소개합니다.

javaWeb 커스텀 태그 사용법에 대한 자세한 설명을 소개합니다.

Y2J
Y2J원래의
2017-05-02 13:49:061477검색

본 글은 javaWeb 커스텀 태그의 사용법을 주로 소개하고, javaweb 커스텀 태그의 기능과 정의 방법, 실행 원리를 예시 형태로 분석해 도움이 필요한 친구들이 참고할 수 있도록 해준다.

이 글은 javaWeb 사용자 정의 라벨 사용의 예. 참고용으로 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.

사용자 정의 태그 생성

사용자 정의 태그는 주로 Java 코드를 제거하는 데 사용됩니다. .
jsp 페이지에서 Java 코드를 제거하려면 다음 두 단계만 완료하면 됩니다.
-TagSupport를 상속하는 Java 클래스 작성, doStartTag 메소드 재정의, jsp 페이지의 Java 코드를 doStartTag에 작성 방법.
- 태그 라이브러리 설명자(tld) 파일을 작성하고 tld 파일에 사용자 정의 태그를 설명합니다.
위 작업을 완료한 후 JSP 페이지에서 사용자 정의 태그를 가져와 사용할 수 있습니다.

태그 처리 클래스: HelloTag.java
태그 설명 파일: hellotag.tld
jsp 페이지 호출: a52e5751f07545db7efce32c1729f60a 표현식 정의
[선택] 웹에서. xml에서 hellotag.tld 매핑 구성

애플리케이션 프로세스:

index.jsp ==>[web.xml]==>hellotag.tld==> ;HelloTag.java

는 태그 지원 클래스를 다음과 같이 정의합니다.

HelloTag.java

package china.hubei;
import java.io.IOException;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.TagSupport;
//自动定义标签
public class HelloTag extends TagSupport {
 public int doStartTag() throws JspException{
   PageContext pg=(PageContext)super.pageContext;
   JspWriter out=pg.getOut();
   try{
     out.println("hello world");
   }catch(IOException e){
   }
   return TagSupport.SKIP_BODY;
 }
}

태그 설명 클래스, 접미사는 ​​입니다. tld, 내용은 xml 구문 규칙

hellotag.tld

<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
  version="2.0">
    <tlib-version>1.0</tlib-version> <!-- 标签库的版本 -->
    <short-name>dqtag</short-name><!-- 标签库在TLD中的描述名称 -->
    <tag>
      <name>hello</name>   <!-- 标签在jsp中使用名称 -->
      <tag-class>china.hubei.HelloTag</tag-class><!-- 标签指向的class文件 -->
      <body-content>empty</body-content><!-- 标签内容为空 -->
    </tag>
</taglib>

jsp 페이지에서 사용자 정의 태그

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page isELIgnored="false"%>
<%@taglib prefix="mytag" uri="/WEB-INF/hellotag.tld" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
 <title>标题</title>
  <!--
  <link rel="stylesheet" type="text/css" href="styles.css" rel="external nofollow" >
  -->
  <script language="javascript">
  </script>
 </head>
 <body>
  <h1><mytag:hello /></h1>
 </body>
</html>

를 사용합니다. 실행 효과는 다음과 같습니다.

사용자 정의 태그 개선, tld 파일의 태그 설명 파일을 web.xml 파일로 이동합니다. web.xml 파일에서 tld 파일에 대한 매핑을 만들기만 하면 됩니다.

즉, web.xml에 다음 내용을 추가합니다.

<jsp-config>
  <taglib>
    <taglib-uri>myhello</taglib-uri>
    <taglib-location>/WEB-INF/hellotag.tld</taglib-location>
  </taglib>
</jsp-config>

index.jsp의 소개 태그가 다음과 같이 변경됩니다.

<%@taglib prefix="mytag" uri="myhello" %>

비고:

커스텀 태그의 실행 원리

JSP 엔진은 커스텀 태그를 만나면 먼저 인스턴스 객체를 생성합니다. 태그 프로세서 클래스의 메소드를 호출한 다음 JSP 사양에 정의된 통신 규칙에 따라 해당 메소드를 순서대로 호출합니다.

1. public void setPageContext(PageContext pc). JSP 엔진은 태그 프로세서를 인스턴스화한 후 setPageContext 메소드를 호출하여 JSP 페이지의 pageContext 객체를 태그 프로세서에 전달할 수 있습니다. 이 pageContext 객체를 사용하여 JSP 페이지와 통신하세요.
2. public void setParent(Tag t). setPageContext 메소드가 실행된 후 WEB 컨테이너는 현재 태그의 상위 태그를 현재 태그 프로세서에 전달하기 위해 setParent 메소드를 호출합니다. 태그인 경우에는 setParent에 전달됩니다. 메소드의 매개변수 값은 null입니다.
3. public int doStartTag(), setPageContext 메소드 및 setParent 메소드를 호출한 후 WEB 컨테이너가 사용자 정의 태그의 시작 태그를 실행할 때 태그 프로세서의 doStartTag 메소드를 호출합니다.
4. public int doEndTag(). 웹 컨테이너는 사용자 정의 태그의 태그 본문을 실행한 후 사용자 정의 태그의 종료 태그를 실행합니다. 태그 프로세서.
5. 공개 무효 릴리스(). 일반적으로 웹 컨테이너가 사용자 정의 태그를 실행한 후 태그 프로세서는 웹 애플리케이션이 중지될 때까지 메모리에 상주하고 다른 요청을 제공하지 않습니다.

위 내용은 javaWeb 커스텀 태그 사용법에 대한 자세한 설명을 소개합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.