当前位置:编程学习 > JAVA >>

java 开发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> 

补充:Web开发 , Jsp ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,