JSTL EL综合应用


 

 

package com.xzit.customtag;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

public class DateFormatTag extends TagSupport {

    private Date target;    //对应标签的target属性
    
    private String format;    //对应标签的format属性

    private static String DATE_BASE="date";//默认格式
    
    private static String DATE_FULL="datefull";
    
    private static String TIME="time";
    
    private static String TIME_FULL="timefull";
    
    @Override
    public int doStartTag() throws JspException {
        PrintWriter out = null;
        try {
            out = this.pageContext.getResponse().getWriter();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        
        if(format==null || format.equals("")) {

            String dateStr = new SimpleDateFormat("yy/M/d").format(target);
            out.print(dateStr);
            
        }else if(format.equals(DATE_BASE)) {
            
            String dateStr = new SimpleDateFormat("yy/M/d").format(target);
            out.print(dateStr);
        }else if(format.equals(DATE_FULL)) {
            
            String dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(target);
            out.print(dateStr);
        }else if(format.equals(TIME)) {
            
            String dateStr = new SimpleDateFormat("h:m:s").format(target);
            out.print(dateStr);
        }else if(format.equals(TIME_FULL)) {
            
            String dateStr = new SimpleDateFormat("HH:mm:ss").format(target);
            out.print(dateStr);
        }else {
            try {
                throw new Exception("format 属性的有效值必须是:"+DATE_BASE+","+DATE_FULL
                        +","+TIME+","+TIME_FULL);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return super.doStartTag();
    }
    
    @Override
    public int doEndTag() throws JspException {
        
        return DateFormatTag.EVAL_PAGE;
    }


    public Date getTarget() {
        return target;
    }

    public void setTarget(Date target) {
        this.target = target;
    }

    public String getFormat() {
        return format;
    }

    public void setFormat(String format) {
        this.format = format;
    }
    
}
<?xml version="1.0" encoding="UTF-8" ?>
DOCTYPE taglib
  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
  "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

  1.0
  1.2
  <short-name>custom_RTshort-name>
  CustomTag
  自定义标签

  
    class>
        org.apache.taglibs.standard.tlv.JstlCoreTLV
    class>
    
        Provides core validation features for JSTL tags.
    
  

  
    date
    class>com.xzit.customtag.DateFormatTagclass>
    empty
    
        转换Date对象为字符串格式
    
    
        target
        true
        true
        java.util.Date
    
    
    
        format
        false
        false
        java.lang.String
    
  

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*"%>
<%@ taglib uri="/WEB-INF/mytag/customTag.tld" prefix="m" %>


    
        
        自定义标签
    
    <%
        Date time = new Date();
    %>
    
        
剩余部分adddd
<?xml version="1.0" encoding="UTF-8"?>

  customTag2
  
    index.jsp