hejiaqi789 发表于 2013-2-1 12:05:13

Filter之编码格式(日期限制)

package com.tools;
/* * 转码(过期时间限制)
 * @author hh
 * @2010-09-16
 */
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings("serial")
 public class filter implements Filter {
       private String CEncoding="";
       public void destroy() {
       }
       @SuppressWarnings("static-access")
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain arg2) throws IOException, ServletException {
             Calendar c = Calendar.getInstance();
             HttpServletRequest req = (HttpServletRequest)request;
             HttpServletResponse res = (HttpServletResponse)response;
             req.setCharacterEncoding(CEncoding);
             res.setCharacterEncoding(CEncoding);
             String nowDate="2011-03-25";//开始时间
             long flage = betweenTwoDay(nowDate, new SimpleDateFormat("yyyy-MM-dd").format(c.getInstance().getTime()));
            if(flage>=0&&flage<=30){
                 arg2.doFilter(req, res);
            }else{
                 req.getRequestDispatcher("/TimeOut.jsp").forward(req,res);//提示界面
           }
     }
     private long betweenTwoDay(String first, String second) {
               Date fdate = getStringToDate(first);
               Date sdate = getStringToDate(second);
               long i = ((sdate.getTime() - fdate.getTime()) / (24 * 60 * 60 * 1000));
               return i;
    }
   private String format = "";
   private Date getStringToDate(String date) {
          Date d = null;
          try {
                  SimpleDateFormat dateFormat = null;
                  if (date.length() == 10) {
                       dateFormat = new SimpleDateFormat("yyyy-MM-dd");
                       format = "yyyy-MM-dd";
                      dateFormat.setTimeZone(TimeZone.getTimeZone("GMT+8"));
                 } else if (date.length() == 16) {
                      dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
                      format = "yyyy-MM-dd HH:mm";
                     dateFormat.setTimeZone(TimeZone.getTimeZone("GMT+8"));
                 } else if (date.length() == 19) {
                     dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                     format = "yyyy-MM-dd HH:mm:ss";
                    dateFormat.setTimeZone(TimeZone.getTimeZone("GMT+8"));
                 }
                d = dateFormat.parse(date);
             } catch (ParseException e) {
                   e.printStackTrace();
             }
         return d;
    }
    public void init(FilterConfig arg0) throws ServletException {
          //读取web.xml文件设置编码格式
          CEncoding = arg0.getInitParameter("encoding");
    }
}
页: [1]
查看完整版本: Filter之编码格式(日期限制)