1.java类文件 放到 src的包中
2.tld文件 放到web.xml同级位置,根据类所在包 进行 改写tld文件
3.jsp页面上导入的标签及使用
class="java" name="code">
<%@ taglib prefix="my" uri="/WEB-INF/mytags.tld"%>
日期格式化:
<my:date value="${lawsublise.ci_ctime}" format="yy-MM"/>
字符串截取:
<my:sub endStr="" maxByte="30" value="${lawsublise.ci_title}"/>
DateTag.java
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
public class DateTag extends TagSupport
{
private static final long serialVersionUID = 1047009839984509708L;
private Object value;
private String format;
private String inFormat;
public Object getValue()
{
return value;
}
public void setValue(Object value)
{
this.value = value;
}
public String getFormat()
{
return format;
}
public void setFormat(String format)
{
this.format = format;
}
public int doStartTag() throws JspException
{
JspWriter out = pageContext.getOut();
String fmt = "yyyy-MM-dd HH:mm:ss";
if (format != null)
{
fmt = format;
}
SimpleDateFormat sdf = new SimpleDateFormat(fmt);
if (value != null)
{
if (value.getClass().getSimpleName().equals("Date"))
{
Date date = (Date) value;
try
{
out.print(sdf.format(date));
} catch (IOException e)
{
}
} else if (value.getClass().getSimpleName().equals("String"))
{
try
{
if(inFormat!=null){
Date date = DateUtil.parseDate(value.toString(),inFormat);
out.print(sdf.format(date));
}else{
Date date = DateUtil.parseDate(value.toString());
out.print(sdf.format(date));
}
} catch (Exception e)
{
}
}
} else
{
}
return SKIP_BODY;
}
public String getInFormat()
{
return inFormat;
}
public void setInFormat(String inFormat)
{
this.inFormat = inFormat;
}
}
DateUtil.java
import java.text.ParseException;
import java.util.Date;
/**
* 日期工具类
*
* @author lipinliang
*/
public abstract class DateUtil extends org.apache.commons.lang.time.DateUtils {
/**
* 默认日期格式
*/
private static final String[] parsePatterns = new String[] {
"yyyy-MM-dd HH:mm:ss",
"yyyy-MM-dd",
"yyyy/MM/dd HH:mm:ss",
"yyyy/MM/dd",
"yyyyMMddHHmmss",
"yyyyMMddHHmm",
"yyyyMMdd"
// 这里可以增加更多的日期格式,用得多的放在前面
};
/**
* 使用默认的日期格式将字符串转换为日期
*
* @param str 要转换的字符串
* @return 转换后的日期
* @throws ParseException 没有匹配的日期格式
*/
public static Date parseDate(String str) throws ParseException {
return DateUtil.parseDate(str, parsePatterns);
}
/**
* 使用给定的日期格式将字符串转换为日期
*
* @param str 要转换的字符串
* @param parsePattern 日期格式字符串
* @return 转换后的日期
* @throws ParseException 日期格式不匹配
*/
public static Date parseDate(String str, String parsePattern) throws ParseException {
return DateUtil.parseDate(str, new String[] { parsePattern });
}
}
SubTag.java
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
public class SubTag extends TagSupport
{
private String value;
private int maxByte;
private String endStr;
private static final long serialVersionUID = -6878642038499468567L;
public int doStartTag() throws JspException
{
JspWriter out = pageContext.getOut();
try
{
out.print(subString(value, maxByte, endStr));
} catch (Exception e)
{
}
return SKIP_BODY;
}
/**
* 按字节长度截取字符串
* @param str:源字符串
* @param maxbyte: 字符串的byte限制
* @param endStr: 如果超出最大byte,结尾省略字符串
* @return String Object
* @author Yu
*/
public static String subString(String str, int maxByte, String endStr)
{
if (str == null || "".equals(str))
{
// 如果源字符串为空或null,返回空字符串
str = "";
} else
{
// 计算字节长度
int byteLength = 0;
// 计算字符长度
int charLength = 0;
for (; charLength < str.length(); charLength++)
{
// 计算每个字符的字节数,每个汉字+2byte,其它+1
byteLength = (int) str.charAt(charLength) > 256 ? byteLength + 2 : byteLength + 1;
// 超过最大限制字节时,按当前charLength截取字符串
if (byteLength > maxByte)
{
// 当前长度减去结尾省略字符串的长度的一半(此处将省略字符串假设为半字节字符)
charLength = charLength - endStr.length() / 2;
// 截取字符串,加上省略字符串
str = str.substring(0, charLength > 0 ? charLength : 0) + endStr;
// 跳出循环
break;
}
}
}
return str;
}
public String getValue()
{
return value;
}
public void setValue(String value)
{
this.value = value;
}
public int getMaxByte()
{
return maxByte;
}
public void setMaxByte(int maxByte)
{
this.maxByte = maxByte;
}
public String getEndStr()
{
return endStr;
}
public void setEndStr(String endStr)
{
this.endStr = endStr;
}
}
- mytags.rar (476 Bytes)
- 下载次数: 0