亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? velocitytool.java

?? 個人Blog java編寫的Blog可以直接使用!
?? JAVA
字號:
/*
 *  VelocityTool.java
 *  
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU Library General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 *  
 *  Author: Winter Lau
 *  http://dlog4j.sourceforge.net
 *  
 */
package com.liusoft.dlog4j.velocity;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.PageContext;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.util.MessageResources;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.tools.struts.StrutsUtils;
import org.apache.velocity.tools.view.context.ViewContext;
import org.apache.velocity.tools.view.tools.Configurable;
import org.apache.velocity.tools.view.tools.ViewTool;
import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.nodes.TextNode;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;

import com.liusoft.dlog4j.Globals;
import com.liusoft.dlog4j.util.DateUtils;
import com.liusoft.dlog4j.util.LunarCalendar;
import com.liusoft.dlog4j.util.RequestUtils;
import com.liusoft.dlog4j.util.StringUtils;

/**
 * Velocity工具類的基類
 * @author liudong
 */
public abstract class VelocityTool implements ViewTool, Configurable {

	private static Log log = LogFactory.getLog(VelocityTool.class);
	
	protected HttpServletRequest request;
	protected HttpServletResponse response;
	protected ServletContext context;
	protected VelocityContext velocity;

	protected Map params;
	
	/*
	 * Initialize toolbox
	 * @see org.apache.velocity.tools.view.tools.ViewTool#init(java.lang.Object)
	 */
	public void init(Object arg0) {
		//scope: request or session
		if(arg0 instanceof ViewContext){
			ViewContext viewContext = (ViewContext) arg0;
			request = viewContext.getRequest();
			response = viewContext.getResponse();
			context = viewContext.getServletContext();
			velocity = (VelocityContext)viewContext.getVelocityContext();
		}
		//scope: application
		else if(arg0 instanceof ServletContext){
			context = (ServletContext)arg0;
		}
	}
	
	/**
	 * Call by VelocityViewServlet
	 */
	public void configure(Map arg0) {
		this.params = arg0;	
		try {
			BeanUtils.populate(this, arg0);
		} catch (Exception e) {
			log.error("Populate parameters to "+getClass().getName()+" failed.", e);
		}
	}
	
	/**
	 * 設置Cookie
	 * @param key
	 * @param value
	 * @param maxAge
	 */
	public void set_cookie(String key, String value, int maxAge){
		RequestUtils.setCookie(request, response, key, value, maxAge);
	}

	/**
	 * 設置Cookie
	 * @param key
	 * @param value
	 * @param maxAge
	 */
	public void set_cookie(String key, int value, int maxAge){
		RequestUtils.setCookie(request, response, key, String.valueOf(value), maxAge);
	}
	
	public int get_cookie_as_int(String key){
		Cookie cookie = RequestUtils.getCookie(request, key);
		if(cookie == null)
			return -1;
		try{
			return Integer.parseInt(cookie.getValue());
		}catch(Exception e){}
		return -1;
	}
	
	/**
	 * 將異常信息轉化成字符串
	 * @param t
	 * @return
	 * @throws IOException 
	 */
	public String exception(Throwable t) throws IOException{
		if(t == null)
			return null;
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		try{
			t.printStackTrace(new PrintStream(baos));
		}finally{
			baos.close();
		}
		return baos.toString();
	}
	
	/**
	 * 將當前上下文發生的異常轉為字符串
	 * @return
	 * @throws IOException
	 */
	public String exception() throws IOException{
		Throwable t = (Throwable)request.getAttribute(PageContext.EXCEPTION);
		if(t==null){
			//Tomcat的錯誤處理方式
			t = (Throwable)request.getAttribute("javax.servlet.error.exception");
		}
		return exception(t);
	}

	/**
	 * 返回當前時間戳
	 * @return
	 */
	public long current_timestamp(){
		return System.currentTimeMillis();
	}
	
	/**
	 * 返回耗時
	 * @param start_time
	 * @return
	 */
	public long time_consume(long start_time){
		return System.currentTimeMillis() - start_time;
	}
	
	/**
	 * 判斷當前瀏覽器是否支持某種格式內容
	 * @param contentType
	 * @return
	 */
	public boolean support_content_type(String contentType){
		return RequestUtils.support(request, contentType);
	}

	/**
	 * 返回Toolbox類的初始化參數
	 * @param key
	 * @return
	 */
	protected String get_velocity_param(String key){
		return (String)params.get(key);
	}

    /**
     * 重定向到一個頁面
     * @param url
     * @throws IOException
     */
    public void redirect(String url) throws IOException{
    	response.sendRedirect(url);
    }
    
    /**
     * 轉換HTML成純文本,用于顯示最新評論或者是日記在首頁的預覽信息
     * @param html
     * @return
     * @throws UnsupportedEncodingException
     * @throws ParserException 
     */
	public String plain_text(String html) throws UnsupportedEncodingException, ParserException{
		if(html==null) return null;
		StringBuffer text = new StringBuffer();
		Parser parser = new Parser();
		parser.setInputHTML(html);
		parser.setEncoding(Globals.ENC_8859_1);
		//遍歷所有的節點
		NodeList nodes;
		try {
			nodes = parser.extractAllNodesThatMatch(nfilter);
		} catch (ParserException e) {
			return html;
		}
		for(int i=0;i<nodes.size();i++){
			TextNode node = (TextNode)nodes.elementAt(i);
			text.append(node.getText());
		}
		return StringUtils.remove(text.toString(),"&nbsp;");
	}

	/**
	 * 用于提取HTML中的純文本信息,過濾掉所有的HTML標簽
	 */
    private final static NodeFilter nfilter = new NodeFilter() {
		public boolean accept(Node node) {
			//IMPORTANT: 只顯示TextNode的內容
			return (node instanceof TextNode);
		}
    };
    
	public String current_template(){
		return velocity.getCurrentTemplateName();
	}
	
	/**
	 * 取得某個頁面模板的絕對路徑
	 * @param page
	 * @return
	 */
	public String absolute_path(String page){
		if(page.startsWith("/"))
			return page;
		String cur_t = current_template();
		String path = cur_t.substring(0, cur_t.lastIndexOf("/"));
		return path + '/' + page;
	}
	
	/**
	 * 判斷某個日期是否為今天
	 * @param year
	 * @param month
	 * @param date
	 * @return
	 */
	public boolean is_today(int year, int month, int date){
		Calendar today = Calendar.getInstance();
		today.set(Calendar.YEAR, year);
		today.set(Calendar.MONTH, month - 1);
		today.set(Calendar.DATE, date);
		return is_today(today.getTime());
	}
	
	/**
	 * 判斷某個日期是否為今天
	 * @param date
	 * @return
	 */
	public boolean is_today(Date date){
		if(date==null)
			return false;
		return DateUtils.isSameDay(new Date(System.currentTimeMillis()), date);
	}
	
	/**
	 * 獲取HTTP頭
	 * @param name
	 * @return
	 */
	public String http_header(String name){
		return RequestUtils.getHeader(request, name);
	}
	
	/**
	 * 字符串智能截斷
	 * @param str
	 * @param maxWidth
	 * @return
	 */
	public String abbreviate(String str, int maxWidth){
		if(str==null) return null;
		return StringUtils.abbreviate(str,maxWidth);
	}
	
	public void debug(Object obj) {
		System.out.println(obj);
	}

	/**
	 * 獲取當前請求的資源名
	 * 
	 * @return
	 */
	public String get_request_file() {
		String url = request.getRequestURL().toString();
		int idx = url.lastIndexOf('/');
		return url.substring(idx + 1);
	}

	/**
	 * 獲取當前請求的URL地址
	 * 
	 * @return
	 */
	public String get_request_url() {
		return RequestUtils.getRequestURL(request);
	}

	/**
	 * 判斷是否是一個合法的郵件地址
	 * 
	 * @param email
	 * @return
	 */
	public boolean is_email(String email) {
		return StringUtils.isEmail(email);
	}
	
	public boolean is_post(){
		return "post".equalsIgnoreCase(request.getMethod());
	}
	
	public boolean is_get(){
		return "get".equalsIgnoreCase(request.getMethod());
	}

	/**
	 * 顯示今天的日期
	 * @return
	 */
	public String today(){
		Locale locale = request.getLocale();
		String fmt = null;
		if(locale!=null && "zh".equalsIgnoreCase(locale.getLanguage()))
			fmt = "yyyy年M月d日 EEEEE";
		else
			fmt = "yyyy/MM/dd EEEEE";
		return new SimpleDateFormat(fmt, locale).format(Calendar.getInstance(locale).getTime());
	}

	/**
	 * 得到今天的節日(陽歷在前,陰歷在后)
	 * 如果同時有兩個節日則:勞動節,端午節
	 * @return
	 */
	public String festival(){
		long[] ds = LunarCalendar.today();
		NumberFormat nf = NumberFormat.getInstance();
		nf.setMaximumFractionDigits(0);
		nf.setMinimumIntegerDigits(2);
		String nongli = nf.format(ds[1]) + nf.format(ds[2]);
		Calendar cal = Calendar.getInstance();
		String yangli = nf.format(cal.get(Calendar.MONTH)+1)+nf.format(cal.get(Calendar.DATE));
		//System.out.printf("nongli=%s,yangli=%s\r\n",nongli,yangli);
		String f_nl = getMessage(request, "festival", 'Y'+nongli);
		String f_yl = getMessage(request, "festival", yangli);
		if(f_nl!=null && f_yl!=null)
			return f_yl + "," + f_nl;
		if(f_nl!=null)
			return f_nl;
		if(f_yl!=null)
			return f_yl;
		return null;
	}
	

	/**
	 * 讀取資源中定義的信息
	 * @param req
	 * @param bundle
	 * @param key
	 * @return
	 */
    protected String getMessage(HttpServletRequest req, String bundle, String key) {
    	if(key==null)
    		return null;
    	MessageResources res = StrutsUtils.getMessageResources(req, context, bundle);
    	if(res==null)
    		return null;
    	return res.getMessage(key);
    }

	/**
	 * 格式化當前月第一天的日期
	 * 
	 * @param formatter
	 * @return
	 */
	public String format_now_month(String formatter) {
		SimpleDateFormat sdf = new SimpleDateFormat(formatter, Locale.ENGLISH);
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.DATE, 1);
		return sdf.format(cal.getTime());
	}

	/**
	 * 獲取web應用的上下文路徑
	 * 
	 * @return
	 */
	public String root() {
		return request.getContextPath();
	}

	/**
	 * 獲取瀏覽器提交的整形參數
	 * 
	 * @param param
	 * @param defaultValue
	 * @return
	 */
	public int param(String param, int defaultValue) {
		return RequestUtils.getParam(request, param, defaultValue);
	}

	/**
	 * 獲取瀏覽器提交的字符串參數
	 * 
	 * @param param
	 * @param defaultValue
	 * @return
	 */
	public String param(String param, String defaultValue) {
		return RequestUtils.getParam(request, param, defaultValue);
	}
	
	public String param(String param){
		return request.getParameter(param);
	}

	/**
	 * 獲取瀏覽器提交的整形參數
	 * 
	 * @param param
	 * @param defaultValue
	 * @return
	 */
	public int get_attr(String param, int defaultValue) {
		try {
			return Integer.parseInt((String) request.getAttribute(param));
		} catch (Exception e) {
		}
		return defaultValue;
	}

	/**
	 * 獲取瀏覽器提交的字符串參數
	 * 
	 * @param param
	 * @param defaultValue
	 * @return
	 */
	public Object get_attr(String param, Object defaultValue) {
		Object value = request.getAttribute(param);
		return (value == null) ? defaultValue : value;
	}

	public boolean is_empty(String str) {
		return str == null || str.trim().length() == 0;
	}

	public boolean not_empty(String str) {
		return !is_empty(str);
	}

	/**
	 * 從URL中解析出主機地址
	 * 
	 * @param url
	 * @return
	 */
	public String host(String url) {
		try {
			url = new java.net.URL(url).getHost();
		} catch (Exception e) {}
		return url;
	}

	/**
	 * HTML輸出內容格式轉換
	 * 
	 * @param content
	 * @return
	 * @see org.apache.velocity.tools.generic.EscapeTool#html(java.lang.Object)
	 */
	public String format_html(String content) {
		return StringUtils.formatContent(content);
	}

	/**
	 * 文本替換(login.vm)
	 * 
	 * @param src
	 * @param srcText
	 * @param desText
	 * @return
	 */
	public String replace(String src, String srcText, String desText) {
		return StringUtils.replace(src, srcText, desText);
	}

	public void dump() {
		RequestUtils.dumpHeaders(request, System.out);
	}

	/**
	 * 根據記錄數和每頁現實文章數確定頁數
	 * @param recordCount
	 * @param perPage
	 * @return
	 */
	public int page_count(int recordCount, int perPage) {
		int pc = (int)Math.ceil(recordCount / (double)perPage);
		if(pc==0)
			pc = 1;
		return pc;
	}

	/**
	 * 獲取當前正在訪問的用戶的手機號碼
	 * 
	 * @return
	 */
	public String mobile() {
		return RequestUtils.getRequestMobile(request);
	}

	/**
	 * 返回數組的大小
	 * @param objs
	 * @return
	 */
	public int sizeof(Object[] objs){
		return (objs!=null)?objs.length:0;
	}
	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区免费在线看| 成人免费视频视频| 99久久婷婷国产综合精品| 视频在线观看国产精品| 7777精品伊人久久久大香线蕉完整版| 午夜精品久久久久久久| 日韩欧美中文字幕公布| 国产一区在线精品| 亚洲色欲色欲www在线观看| 欧美性videosxxxxx| 日韩影院精彩在线| 久久午夜色播影院免费高清| 成人免费av资源| 亚洲一区二区三区中文字幕| 51精品久久久久久久蜜臀| 国产精品影视天天线| 中文字幕人成不卡一区| 欧美日韩激情一区二区| 国产一区二区视频在线| 亚洲日本韩国一区| 欧美大胆一级视频| 91免费国产视频网站| 男女性色大片免费观看一区二区| 久久久三级国产网站| 色婷婷国产精品| 久久国产精品无码网站| 亚洲欧美日韩一区二区 | 日韩黄色在线观看| 久久综合av免费| 欧美三片在线视频观看| 国产成人精品一区二区三区四区| 亚洲高清视频在线| 国产精品无圣光一区二区| 欧美日韩一区在线观看| 东方欧美亚洲色图在线| 日韩成人一级大片| 亚洲激情图片qvod| 国产日韩欧美不卡在线| 91精品国产综合久久香蕉的特点| 99久久精品国产观看| 久久精品国产秦先生| 亚洲一区二区视频在线观看| 国产精品污网站| 精品剧情在线观看| 在线播放91灌醉迷j高跟美女 | 欧美一区欧美二区| 91丝袜高跟美女视频| 国产一级精品在线| 欧美a级一区二区| 亚洲一区二区美女| 亚洲欧美日韩在线| 国产精品网曝门| 久久久亚洲精品一区二区三区| 欧美日韩亚洲综合一区二区三区| 成人av在线看| 国产精品一区二区三区乱码| 蜜桃一区二区三区在线观看| 亚洲一级二级三级| 综合在线观看色| 国产精品久久久久久久久晋中| 精品国产亚洲在线| 麻豆专区一区二区三区四区五区| 91在线观看地址| 国产白丝网站精品污在线入口| 日韩vs国产vs欧美| 日韩影院免费视频| 亚洲国产精品欧美一二99| 成人免费在线视频| 18欧美乱大交hd1984| 国产日产欧美精品一区二区三区| 久久久蜜桃精品| 亚洲精品一区二区三区影院 | 成人av电影免费观看| 国产成人在线色| 国产福利一区二区三区视频在线| 久久精品久久综合| 国产一区激情在线| 国产精品一区二区视频| 国产传媒一区在线| 99re视频精品| 91丨porny丨中文| 欧美性猛片aaaaaaa做受| 欧美性猛交一区二区三区精品| 精品视频在线看| 欧美挠脚心视频网站| 国产成人精品www牛牛影视| 日本一区二区三区免费乱视频| 久久婷婷国产综合精品青草| 国产午夜亚洲精品理论片色戒| 国产欧美久久久精品影院| 国产精品乱码妇女bbbb| 亚洲精品水蜜桃| 亚洲地区一二三色| 免费一级欧美片在线观看| 激情综合五月婷婷| 成人激情小说网站| 日本韩国欧美国产| 欧美一激情一区二区三区| 精品日韩在线观看| 日韩理论片中文av| 午夜视频一区二区三区| 国产真实精品久久二三区| 成av人片一区二区| 欧美日韩二区三区| 久久影音资源网| 一区二区三区国产豹纹内裤在线| 天堂成人国产精品一区| 国产精品资源网| 在线亚洲高清视频| 欧美va亚洲va香蕉在线| 亚洲色图都市小说| 男人的天堂久久精品| 9i看片成人免费高清| 538prom精品视频线放| 国产欧美一区二区在线| 亚洲一二三区在线观看| 国产麻豆视频精品| 欧美日韩午夜精品| 欧美国产精品一区| 性做久久久久久免费观看欧美| 国产成人精品影视| 7777精品伊人久久久大香线蕉超级流畅| 2024国产精品视频| 亚洲3atv精品一区二区三区| 成人性生交大片免费看视频在线 | 欧美日韩国产天堂| 国产精品天天看| 日韩av一级电影| 91碰在线视频| 久久女同互慰一区二区三区| 婷婷亚洲久悠悠色悠在线播放| 成人午夜电影网站| 精品成人一区二区三区| 亚洲成人在线观看视频| 99免费精品在线| 国产日韩欧美激情| 久久国产视频网| 精品成人一区二区三区| 亚洲一区在线看| 99久久精品国产观看| 久久精品免视看| 黄色日韩三级电影| 欧美日本国产视频| 最新欧美精品一区二区三区| 国内精品免费**视频| 欧美一区二区精品久久911| 一区二区三区美女视频| 99久精品国产| 国产精品乱码一区二区三区软件 | 欧洲国产伦久久久久久久| 日韩经典中文字幕一区| 福利一区在线观看| 精品粉嫩超白一线天av| 日韩电影网1区2区| 欧美日韩另类国产亚洲欧美一级| 国产精品第四页| 大胆亚洲人体视频| 欧美韩国日本不卡| 国产精品一卡二| 久久人人超碰精品| 国产乱子伦一区二区三区国色天香| 制服丝袜中文字幕一区| 亚洲激情一二三区| 在线日韩一区二区| 亚洲国产精品一区二区久久恐怖片 | 欧美日韩美少妇| 一区二区三区欧美视频| 99精品久久99久久久久| 亚洲蜜桃精久久久久久久| 成人免费av资源| 亚洲男人天堂一区| 欧美性感一区二区三区| 精品美女在线播放| 美国一区二区三区在线播放| 日韩一区二区视频| 韩国中文字幕2020精品| 久久久一区二区| 成人av在线资源| 一区二区三区国产精品| 欧美高清视频www夜色资源网| 日日夜夜精品视频免费| 精品久久久影院| 懂色中文一区二区在线播放| 国产精品每日更新| 欧美性videosxxxxx| 青青草原综合久久大伊人精品 | 欧美mv和日韩mv的网站| 国产在线精品一区二区不卡了| 国产亚洲美州欧州综合国| 成人v精品蜜桃久久一区| 亚洲码国产岛国毛片在线| 欧美视频在线一区二区三区 | 国产电影精品久久禁18| 亚洲欧美综合另类在线卡通| 在线精品国精品国产尤物884a| 奇米色777欧美一区二区| 中文字幕免费不卡| 欧美日韩国产精品成人| 亚洲天堂2014| 欧美性大战久久|