java html工具

package org.liufei.jweb.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
* 由java生成HTML标记代码。
*
* @author 刘飞
*
*/
public final class HtmlUtils {

private static final String X = ",";

private static final String STRING = "=";

private static final String REGEX = ":";

private static final String TEXT_CSS = "text/css";

private static final String STYLESHEET = "stylesheet";

private static final String HREF = "href";

private static final String REL = "rel";

private static final String LINK = "link";

private static final String SRC = "src";

private static final String SCRIPT = "script";

private static final String TYPE = "type";

private static final String TEXT_JAVASCRIPT = "text/javascript";

private static final String TABLE = "table";

private static final String TR = "tr";

private static final String TH = "th";

private static final String TD = "td";

private static final String DIV = "div";

private static final String SPAN = "span";

private static final String SELECT = "select";

private static final String OPTION = "option";

private static final String IMG = "img";

private static final String A = "a";

private static final String INPUT = "input";

private HtmlUtils() {
}

/**
* 创建HTML代码。
*
* @param tagName
* html标记名称。
* @param keys
* 该html标记的属性名称。
* @param values
* 该html标记的属性值。
* @param contentHTML
* 该html标记所包含的子html标记或内容。
* @return 该HTML代码标记片段。
*/
public static String htmlCreator(String tagName, String[] keys,
Object[] values, Object contentHTML) {
StringBuffer buffer = new StringBuffer("");
buffer.append(htmlTagStartCreator(tagName, keys, values));
buffer.append(contentHTML);
buffer.append(htmlTagEndCreator(tagName));
return buffer.toString();
}

/**
* 创建HTML代码。
*
* @param tagName
* html标记名称。
* @param properties
* 标签属性字符串, 属性之间以','分隔, 属性键值间以':'或'='分隔
* @param contentHTML
* 该html标记所包含的子html标记或内容。
* @return 该HTML代码标记片段。
*/
public static String htmlCreator(String tagName, String properties,
Object contentHTML) {
if (properties == null) {
return htmlCreator(tagName, contentHTML);
} else if (properties.equals("") || properties.length() == 0) {
return htmlCreator(tagName, contentHTML);
} else {
String[] props = properties.split(X);
int size = props.length;
if (properties.indexOf(X) != -1) {// 多个属性
if (properties.indexOf(REGEX) != -1) {
String[] keys = new String[size];
Object[] values = new Object[size];
for (int i = 0; i < size; i++) {
String _prop = props[i].trim();
String[] keyValue = _prop.split(REGEX);
keys[i] = keyValue[0].trim();
values[i] = keyValue[1].trim();
}
return htmlCreator(tagName, keys, values, contentHTML);
} else if (properties.indexOf(STRING) != -1) {
String[] keys = new String[size];
Object[] values = new Object[size];
for (int i = 0; i < size; i++) {
String _prop = props[i].trim();
String[] keyValue = _prop.split(STRING);
keys[i] = keyValue[0].trim();
values[i] = keyValue[1].trim();
}
return htmlCreator(tagName, keys, values, contentHTML);
} else {// 无属性
return htmlCreator(tagName, contentHTML);
}
} else if (properties.indexOf(STRING) != -1) {// 一个属性, 以'='分隔
String[] keys = new String[size];
Object[] values = new Object[size];
String _prop = props[0].trim();
String[] keyValue = _prop.split(STRING);
keys[0] = keyValue[0].trim();
values[0] = keyValue[1].trim();
return htmlCreator(tagName, keys, values, contentHTML);
} else if (properties.indexOf(REGEX) != -1) {// 一个属性, 以':'分隔
String[] keys = new String[size];
Object[] values = new Object[size];
String _prop = props[0].trim();
String[] keyValue = _prop.split(REGEX);
keys[0] = keyValue[0].trim();
values[0] = keyValue[1].trim();
return htmlCreator(tagName, keys, values, contentHTML);
} else {// 无属性
return htmlCreator(tagName, contentHTML);
}
}
}

/**
* 创建HTML代码。
*
* @param tagName
* html标记名称。
* @param properties
* 标签属性
* @param contentHTML
* 该html标记所包含的子html标记或内容。
* @return 该HTML代码标记片段。
*/
public static String htmlCreator(String tagName,
Map<String, Object> properties, Object contentHTML) {
if (properties == null) {
return htmlCreator(tagName, contentHTML);
} else {
int size = properties.size();
String[] keys = new String[size];
Object[] values = new Object[size];
Set<String> keysSet = properties.keySet();
int i = 0;
for (String key : keysSet) {
keys[i] = key;
values[i] = properties.get(key);
i++;
}
return htmlCreator(tagName, keys, values, contentHTML);
}
}

/**
* 创建HTML代码。
*
* @param tagName
* html标记名称。
* @param contentHTML
* 该html标记所包含的子html标记或内容。
* @return 该HTML代码标记片段。
*/
public static String htmlCreator(String tagName, Object contentHTML) {
return htmlCreator(tagName, null, null, contentHTML);
}

/**
* html开始标记生成。
*
* @param tagName
* tagName 标记名称
* @param keys
* 属性名称数组
* @param values
* 属性值数组
* @return
*/
private static String htmlTagStartCreator(String tagName, String[] keys,
Object[] values) {
StringBuffer buffer = new StringBuffer("");
if (tagName == null) {
throw new IllegalArgumentException("HTML标签名不能为空!");
} else if (tagName.length() == 0 || tagName.equals("")) {
throw new IllegalArgumentException("HTML标签名不能为空!");
}
if (keys == null || values == null) {
buffer.append("");
} else {
for (int i = 0; i < keys.length; i++) {
buffer.append(keys[i] + STRING + quotesMarks + values[i]
+ quotesMarks + " ");
}
}

return htmlTagStart + tagName + " " + buffer.toString() + htmlTagEnd;
}

/**
* html结束标记创建。
*
* @param tagName
* 标记名称
* @return 如:&lt/tagName&gt
*/
private static String htmlTagEndCreator(String tagName) {
return htmlTagEndStart + tagName + htmlTagEnd;
}

/**
* css的link标记。
*
* @param href
* css文件地址。
* @return
*/
public static String cssLinkCreator(String href) {
return htmlCreator(LINK, new String[] { REL, HREF, TYPE },
new Object[] { STYLESHEET, href, TEXT_CSS }, "");
}

/**
* javascript链接javascript文件。
*
* @param src
* javascript文件地址。
* @return
*/
public static String javascriptLinkCreator(String src) {
return htmlCreator(SCRIPT, new String[] { TYPE, SRC }, new Object[] {
TEXT_JAVASCRIPT, src }, "");
}

/**
* 简单的javascript的弹出对话框。
*
* @param message
* @return
*/
public static String javascriptAlertCreator(String message) {
return javascriptCreator("alert(\"" + message + " \") ;");
}

/**
* 创建javascript脚本代码字符串。
*
* @param functions
* javascript函数字符串。
* @return
*/
public static String javascriptCreator(Object functions) {
return htmlCreator(SCRIPT, new String[] { TYPE },
new Object[] { TEXT_JAVASCRIPT }, functions);
}

/**
* 创建javascript函数
*
* @param name
* 函数名称
* @param functionBody
* 函数体。
* @return
*/
public static String javascriptFunction(String name, String functionBody) {
return "\n\tfunction " + name + " {\n\t\t" + functionBody + "\n\t}\n";
}

/**
* 将一个二维数组的数据放入到table表格中。
*
* @param ths
* 表格的TH内容
* @param data
* 表格的二维数组数据
* @return
*/
public static String simpleTableCreator(String ths, Object[][] data) {
StringBuffer bufferTable = new StringBuffer("");
StringBuffer bufferTrs = new StringBuffer("");
if (ths != null) {
bufferTrs.append(trCreator(ths));
}
if (data == null) {
throw new IllegalArgumentException("参数不能为空!");
} else if (data.length > 0 && data[0].length > 0) {
for (Object[] row : data) {
StringBuffer bufferTr = new StringBuffer("");
for (Object col : row) {
bufferTr.append(tdCreator(col));
}
bufferTrs.append(trCreator(bufferTr.toString()));
}
}
bufferTable.append(tableCreator(bufferTrs.toString()));
return bufferTable.toString();
}

/**
* 创建以二维数组大小的表格。
*
* @param data
* 表格的二维数组数据
* @return
*/
public static String simpleTrsCreator(Object[][] data) {
StringBuffer bufferTrs = new StringBuffer("");
if (data == null) {
throw new IllegalArgumentException("参数不能为空!");
} else if (data.length > 0 && data[0].length > 0) {
for (Object[] row : data) {
StringBuffer bufferTr = new StringBuffer("");
for (Object col : row) {
bufferTr.append(tdCreator(col));
}
bufferTrs.append(trCreator(bufferTr.toString()));
}
}

return bufferTrs.toString();
}

/**
* 将一个二维数组的数据放入到table表格中。
*
* @param data
* 表格的二维数组数据
* @param arrayData
* 表格的一维数组数据, 一般作为菜单项。
* @return
*/
public static String simpleTrsCreator(Object[][] data, Object[] arrayData) {
return simpleTrsCreator(ArrayUtils.addAll(data, arrayData));
}

/**
* 将一个二维数组的数据放入到table表格中。
*
* @param data
* 表格的二维数组数据
* @return
*/
public static String simpleTableCreator(Object[][] data) {
return simpleTableCreator("", data);
}

/**
* 将一个二维数组的数据放入到table表格中。
*
* @param data
* 表格的二维数组数据
* @param arrayData
* 表格的一维数组数据, 一般作为菜单项。
* @return
*/
public static String simpleTableCreator(Object[][] data, Object[] arrayData) {
return simpleTableCreator(ArrayUtils.addAll(data, arrayData));
}

/**
* 将一个二维数组的数据放入到table表格中。
*
* @param ths
* 表格的TH内容
* @param data
* 表哥的二维数组数据
* @return
*/
public static String simpleTableCreator(String ths,
List<Map<Object, Object>> data) {
return simpleTableCreator(ths, ArrayListMapUtils.listMapToArray(data));
}

/**
* 将一个二维数组的数据放入到table表格中。
*
* @param data
* 表哥的二维数组数据
* @return
*/
public static String simpleTableCreator(List<Map<Object, Object>> data) {
return simpleTableCreator(null, data);
}

/**
* 数组和Map、List集合之间的转化。
*
* @author 刘飞
*
*/
public static class ArrayListMapUtils {

/**
* List&ltMap&ltObject, Object&gt&gt数据转化为二维数组
*
* @param data
* List&ltMap&ltObject, Object&gt&gt数据
* @return
*/
public static Object[][] listMapToArray(List<Map<Object, Object>> data) {
Object[][] arrayData = null;
if (data == null) {
throw new IllegalArgumentException("数据参数不能为空!");
}
int rows = data.size();
if (rows > 0) {
Set<Object> keySet = data.get(0).keySet();
int cols = keySet.size();
if (cols > 0) {
arrayData = new Object[rows][cols];
int r = 0;
for (Map<Object, Object> dataMap : data) {
Set<Object> keys = dataMap.keySet();
Iterator<Object> iter = keys.iterator();
int c = 0;
while (iter.hasNext()) {
arrayData[r][c] = dataMap.get(iter.next());
c++;
}
r++;
}
}
}
return arrayData;
}

/**
* 将二维数组的数据放入List&ltMap&ltObject, Object&gt&gt集合中。
*
* @param data
* 二维数组
* @return
*/
public static List<Map<Object, Object>> arrayToListMap(Object[][] data) {
List<Map<Object, Object>> listMapData = new ArrayList<Map<Object, Object>>();
if (data == null) {
throw new IllegalArgumentException("数据参数不能为空!");
}
if (data.length > 0 && data[0].length > 0) {
for (Object[] row : data) {
Map<Object, Object> mapData = new HashMap<Object, Object>();
for (Object col : row) {
mapData.put(col, col);
}
listMapData.add(mapData);
}
}
return listMapData;
}
}

/**
* html的table标记。
*
* @param keys
* 标记属性名称列表
* @param values
* 标记属性值列表
* @param contentHTML
* 子标记或内容
* @return
*/
public static String tableCreator(String[] keys, Object[] values,
Object contentHTML) {
return htmlCreator(TABLE, keys, values, contentHTML);
}

/**
* html的table标记。
*
* @param contentHTML
* 子标记或内容
* @return
*/
public static String tableCreator(Object contentHTML) {
return tableCreator(null, null, contentHTML);
}

/**
* html的tr标记。
*
* @param keys
* 标记属性名称列表
* @param values
* 标记属性值列表
* @param contentHTML
* 子标记或内容
* @return
*/
public static String trCreator(String[] keys, Object[] values,
Object contentHTML) {
return htmlCreator(TR, keys, values, contentHTML);
}

/**
* html的tr标记。
*
* @param contentHTML
* 子标记或内容
* @return
*/
public static String trCreator(Object contentHTML) {
return trCreator(null, null, contentHTML);
}

/**
* html的th标记。
*
* @param keys
* 标记属性名称列表
* @param values
* 标记属性值列表
* @param contentHTML
* 子标记或内容
* @return
*/
public static String thCreator(String[] keys, Object[] values,
Object contentHTML) {
return htmlCreator(TH, keys, values, contentHTML);
}

/**
* html的th标记。
*
* @param contentHTML
* 子标记或内容
* @return
*/
public static String thCreator(Object contentHTML) {
return thCreator(null, null, contentHTML);
}

/**
* html的td标记。
*
* @param keys
* 标记属性名称列表
* @param values
* 标记属性值列表
* @param contentHTML
* 子标记或内容
* @return
*/
public static String tdCreator(String[] keys, Object[] values,
Object contentHTML) {
return htmlCreator(TD, keys, values, contentHTML);
}

/**
* html的td标记。
*
* @param contentHTML
* 子标记或内容
* @return
*/
public static String tdCreator(Object contentHTML) {
return tdCreator(null, null, contentHTML);
}

/**
* html的div标记。
*
* @param keys
* 标记属性名称列表
* @param values
* 标记属性值列表
* @param contentHTML
* 子标记或内容
* @return
*/
public static String divCreator(String[] keys, Object[] values,
Object contentHTML) {
return htmlCreator(DIV, keys, values, contentHTML);
}

/**
* html的span标记。
*
* @param keys
* 标记属性名称列表
* @param values
* 标记属性值列表
* @param contentHTML
* 子标记或内容
* @return
*/
public static String spanCreator(String[] keys, Object[] values,
Object contentHTML) {
return htmlCreator(SPAN, keys, values, contentHTML);
}

/**
* html的select标记。
*
* @param keys
* 标记属性名称列表
* @param values
* 标记属性值列表
* @param contentHTML
* 子标记或内容
* @return
*/
public static String selectCreator(String[] keys, Object[] values,
Object contentHTML) {
return htmlCreator(SELECT, keys, values, contentHTML);
}

/**
* html的option标记。
*
* @param keys
* 标记属性名称列表
* @param values
* 标记属性值列表
* @param contentHTML
* 子标记或内容
* @return
*/
public static String optionCreator(String[] keys, Object[] values,
Object contentHTML) {
return htmlCreator(OPTION, keys, values, contentHTML);
}

/**
* html的img标记。
*
* @param keys
* 标记属性名称列表
* @param values
* 标记属性值列表
* @return
*/
public static String imgCreator(String[] keys, Object[] values) {
return htmlCreator(IMG, keys, values, "");
}

/**
* html的a标记。
*
* @param keys
* 标记属性名称列表
* @param values
* 标记属性值列表
* @param contentHTML
* 子标记或内容
* @return
*/
public static String aCreator(String[] keys, Object[] values,
Object contentHTML) {
return htmlCreator(A, keys, values, contentHTML);
}

/**
* html的input标记。
*
* @param keys
* 标记属性名称列表
* @param values
* 标记属性值列表
* @return
*/
public static String inputCreator(String[] keys, Object[] values) {
return htmlCreator(INPUT, keys, values, "");
}

/**
* HTML标记前缀。
*/
public static final String htmlTagStart = "<";

/**
* HTML标签结束前缀。
*/
public static final String htmlTagEndStart = "</";

/**
* HTML标记后缀。
*/
public static final String htmlTagEnd = ">";

/**
* 英文状态下的双引号。
*/
public static final String quotesMarks = "\"";

/**
* 英文状态下的单引号
*/
public static final String singleQuoteMarks = "'";
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值