程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> java 開發jsp 自定義標簽

java 開發jsp 自定義標簽

編輯:關於JSP

此文目的,糾正網上一些不正確的文章!

開發步驟:

首先建立一個類:

繼承BodyTagSupport

然後設置字段 生成set方法

類:


[java] package org.pan.tags; 
 
import java.io.IOException; 
import java.io.PrintWriter; 
 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 
import javax.servlet.jsp.JspException; 
import javax.servlet.jsp.tagext.BodyTagSupport; 
 
public class SessionProperty extends BodyTagSupport{ 
 
    private static final long serialVersionUID = 1L; 
     
    private String value;   //需要獲取的屬性  
     
    public void setValue(String value) { 
        this.value = value; 
    } 
     
    public String getValue() { 
        return value; 
    } 
 
    @Override 
    public int doEndTag() throws JspException { 
        // TODO Auto-generated method stub  
        return super.doEndTag(); 
    } 
 
    @Override 
    public int doStartTag() throws JspException { 
     
        System.out.println("ok"); 
        HttpServletRequest request=(HttpServletRequest)pageContext.getRequest(); 
        HttpSession session=request.getSession(); 
          
        Object object=session.getAttribute(value); 
        if(object==null)return EVAL_PAGE; 
         
        if(object instanceof String){ 
             
            try { 
                pageContext.getOut().write(object.toString()); 
            } catch (IOException e) { 
                // TODO Auto-generated catch block  
                e.printStackTrace(); 
            } 
        } 
         
        return super.doStartTag(); 
    } 
 

package org.pan.tags;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;

public class SessionProperty extends BodyTagSupport{

 private static final long serialVersionUID = 1L;
 
 private String value; //需要獲取的屬性
 
 public void setValue(String value) {
  this.value = value;
 }
 
 public String getValue() {
  return value;
 }

 @Override
 public int doEndTag() throws JspException {
  // TODO Auto-generated method stub
  return super.doEndTag();
 }

 @Override
 public int doStartTag() throws JspException {
 
  System.out.println("ok");
  HttpServletRequest request=(HttpServletRequest)pageContext.getRequest();
  HttpSession session=request.getSession();
  
  Object object=session.getAttribute(value);
  if(object==null)return EVAL_PAGE;
  
  if(object instanceof String){
   
   try {
    pageContext.getOut().write(object.toString());
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
  
  return super.doStartTag();
 }

}
特別注意:

輸出內容需要用:

[java]  pageContext.getOut().write(object.toString()); 

pageContext.getOut().write(object.toString());


tld配置:

建立一個tld文件,tld文件需要放在WEB-INF 中

 

 

[html]  <?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 http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" 
    version="2.0"> 
 
    <description>JSTL 1.1 core library</description> 
    <display-name>JSTL core</display-name> 
    <tlib-version>1.1</tlib-version> 
    <short-name>w</short-name> 
    <uri>http:/winter.baletu.com/</uri> 
    <tag> 
        <description>Obtained from the session attribute</description> 
        <name>property</name> 
        <tag-class>org.pan.tags.SessionProperty</tag-class> 
        <body-content>JSP</body-content> 
        <attribute> 
            <name>value</name> 
            <required>true</required> 
            <rtexprvalue>false</rtexprvalue> 
        </attribute> 
    </tag> 
</taglib> 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved