<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    2009年3月10日

    /**
     * Excel WorkBook對象類
     * @author zhouqian
     *
     */
    public class ExcelWorkBook {
     /** 工作簿 */
     private static HSSFWorkbook workbook = new HSSFWorkbook();
     
     /** 工作表 */
     private HSSFSheet sheet;
     
     /** 表頭數據 */
     private String[] tableHeader;
     
     /**
      * 構造函數
      * @param workbookName 工作表名
      * @param tableHeader 表頭數據
      */
     public ExcelWorkBook(String workbookName, String[] tableHeader) {
      super();
      this.tableHeader = tableHeader;
      sheet = workbook.createSheet(workbookName);
     }
     
     /**
      * 創建表頭
      * @param headerName
      */
     public void createTableHeader(String headerName) {
      HSSFHeader header = sheet.getHeader();
      header.setCenter(headerName);
      HSSFRow headerRow = sheet.createRow(0);
      int cellNumber = tableHeader.length;
      for (int i = 0; i < cellNumber; i++) {
       HSSFCell headerCell = headerRow.createCell((short)i);
       headerCell.setEncoding(HSSFCell.ENCODING_UTF_16);
       headerCell.setCellValue(tableHeader[i]);
      }
     }
     
     /**
      * 創建行
      * @param data 要寫入的數據
      * @param rowIndex 第rowIndex行
      */
     public void createTableRow(String[] data, int rowIndex) {
      HSSFRow row = sheet.createRow(rowIndex);
      for (int i = 0; i < data.length; i++) {
       HSSFCell cell = row.createCell((short)i);
       cell.setEncoding(HSSFCell.ENCODING_UTF_16);
       cell.setCellValue(data[i]);
      }
      
     }
     
     /**
      * 創建整個Excel表
      * @param headerName
      */
     public void createExcelSheet(String headerName, String[][] data) {
      this.createTableHeader(headerName);
      
      String[] rowData;
      for (int i = 0; i < data.length; i++) {
       rowData = data[i];
       createTableRow(rowData, i + 1);
      }
      
     }
     
     /**
      * 導出Excel表格
      * @param os
      * @throws IOException
      */
     public void exportExcel(OutputStream os) throws IOException {
      sheet.setGridsPrinted(true);
      HSSFFooter footer = sheet.getFooter();
      footer.setRight("Page " + HSSFFooter.page() + " of " + HSSFFooter.numPages());
      workbook.write(os);
     }

     public HSSFSheet getSheet() {
      return sheet;
     }

     public void setSheet(HSSFSheet sheet) {
      this.sheet = sheet;
     }

     public String[] getTableHeader() {
      return tableHeader;
     }

     public void setTableHeader(String[] tableHeader) {
      this.tableHeader = tableHeader;
     }
    }

    posted @ 2009-03-10 20:27 chou 閱讀(176) | 評論 (0)編輯 收藏
     

    /**
     * 郵件客戶端
     *
     * @author zhouqian
     *
     */
    public class MailClient {
     /** 日志實例 */
     Log logger = LogFactory.getLog(MailClient.class);

     /** 消息對象 */
     private Message message;

     /** 郵件會話 */
     private Session session;

     public MailClient() {
      super();
      this.session = createDefaultSession();
     }

     public MailClient(Session session) {
      super();
      this.session = session;
     }

     public MailClient(Message message) {
      this();
      this.message = message;
     }

     public MailClient(Session session, Message message) {
      super();
      this.session = session;
      this.message = message;
     }

     /**
      * 創建郵件會話
      *
      * @return
      */
     protected Session createDefaultSession() {
      Properties props = new Properties();
      props.put("mail.smtp.host", "smtp.163.com");
      props.put("mail.smtp.auth", "true");
      Session session = Session.getInstance(props);
      session.setDebug(true);
      return session;
     }

     /**
      * 創建純文本郵件
      *
      * @param recipientTO
      * @param recipientCC
      * @param recipientBCC
      * @return
      * @throws MessagingException
      */
     protected Message createMimeMessage(String subject, String content,
       String recipientTO, String recipientCC, String recipientBCC)
       throws MessagingException {
      Message message = createBlankMessage(recipientTO, recipientCC,
        recipientBCC);

      // 設置郵件標題
      message.setSubject(subject);

      // 設置郵件內容
      message.setText(content);

      // 設置發送時間
      message.setSentDate(new Date(System.currentTimeMillis()));

      // 存儲郵件信息
      message.saveChanges();

      return message;
     }

     /**
      * 創建帶HTML內容的郵件
      *
      * @param subject
      * @param content
      * @param recipientTO
      * @param recipientCC
      * @param recipientBCC
      * @return
      * @throws MessagingException
      */
     protected Message createHTMLMessage(String subject, String content,
       String recipientTO, String recipientCC, String recipientBCC)
       throws MessagingException {
      Message message = createBlankMessage(recipientTO, recipientCC,
        recipientBCC);

      // 設置郵件標題
      message.setSubject(subject);

      // 設置發送時間
      message.setSentDate(new Date(System.currentTimeMillis()));

      // 創建存放郵件內容的BodyPart對象
      BodyPart bp = new MimeBodyPart();
      bp.setContent(content, "text/html;charset=gb2312");

      // 創建一個MimeMultipart來存放BodyPart對象
      Multipart mp = new MimeMultipart();
      mp.addBodyPart(bp);

      message.setContent(mp);
      message.saveChanges();

      return message;
     }

     /**
      * 創建帶附件的郵件
      *
      * @param subject
      * @param content
      * @param recipientTO
      * @param recipientCC
      * @param recipientBCC
      * @return
      * @throws MessagingException
      */
     protected Message createAttachMessage(String subject, String content,
       File attachment, String recipientTO, String recipientCC,
       String recipientBCC) throws MessagingException {
      Message message = createBlankMessage(recipientTO, recipientCC,
        recipientBCC);

      // 設置郵件標題
      message.setSubject(subject);

      // 設置發送時間
      message.setSentDate(new Date(System.currentTimeMillis()));

      // 創建存放郵件內容的BodyPart對象
      BodyPart bp = new MimeBodyPart();
      bp.setContent(content, "text/html;charset=gb2312");

      // 創建一個MimeMultipart來存放BodyPart對象
      Multipart mp = new MimeMultipart();
      mp.addBodyPart(bp);

      // 設置郵件的附件
      bp = new MimeBodyPart();
      FileDataSource fds = new FileDataSource(attachment.getName());
      DataHandler dh = new DataHandler(fds);
      try {
       bp.setFileName(new String(attachment.getName().getBytes("gb2312")));
      } catch (UnsupportedEncodingException e) {
       final String errMess = "Caught exception while encoding file name:"
         + attachment.getName();
       logger.error(errMess);
       throw new MailException(errMess, e);
      }
      bp.setDataHandler(dh);
      mp.addBodyPart(bp);

      message.setContent(mp);
      message.saveChanges();
      return message;
     }

     /**
      * 創建空白郵件
      *
      * @param recipientTO
      * @param recipientCC
      * @param recipientBCC
      * @return
      * @throws MessagingException
      */
     protected Message createBlankMessage(String recipientTO,
       String recipientCC, String recipientBCC) throws MessagingException {
      Message message = new MimeMessage(session);

      // 設置發件人
      InternetAddress from = new InternetAddress("mfktfp2004@163.com");
      message.setFrom(from);

      // 設置收件人
      InternetAddress to = new InternetAddress(recipientTO);
      message.setRecipient(Message.RecipientType.TO, to);
      if (StringUtil.isNotEmpty(recipientCC)) {
       InternetAddress cc = new InternetAddress(recipientCC);
       message.setRecipient(Message.RecipientType.CC, cc);
      }
      if (StringUtil.isNotEmpty(recipientBCC)) {
       InternetAddress bcc = new InternetAddress(recipientBCC);
       message.setRecipient(Message.RecipientType.BCC, bcc);
      }

      return message;
     }

     /**
      * 發送郵件
      *
      * @param message
      * @throws MessagingException
      */
     public void sendEmail(Message message) throws MessagingException {
      // 以smtp方式登陸郵箱
      Transport transport = session.getTransport("smtp");
      transport.connect("smtp.163.com", "mfktfp2004", "19850921"); // SMTP地址,用戶名,密碼

      // 發送郵件
      transport.sendMessage(message, message.getAllRecipients());
      transport.close();
     }

     /**
      * 發送純文本郵件
      *
      * @param subject
      * @param content
      * @param recipientTO
      * @param recipientCC
      * @param recipientBCC
      */
     public void sendMimeEmail(String subject, String content,
       String recipientTO, String recipientCC, String recipientBCC) {
      Message message = null;
      try {
       message = createMimeMessage(subject, content, recipientTO,
         recipientCC, recipientBCC);
       sendEmail(message);
      } catch (MessagingException e) {
       logger.error("Send mime email failure", e);
       throw new MailException("Error sending email, failure", e);
      }

     }

     /**
      * 發送帶HTML內容的郵件
      *
      * @param subject
      * @param content
      * @param recipientTO
      * @param recipientCC
      * @param recipientBCC
      */
     public void sendHTMLEmail(String subject, String content,
       String recipientTO, String recipientCC, String recipientBCC) {
      Message message = null;
      try {
       message = createHTMLMessage(subject, content, recipientTO,
         recipientCC, recipientBCC);
       sendEmail(message);
      } catch (MessagingException e) {
       logger.error("Send html email failure", e);
       throw new MailException("Error sending email, failure", e);
      }
     }

     /**
      * 發送帶附件的郵件
      *
      * @param subject
      * @param content
      * @param recipientTO
      * @param recipientCC
      * @param recipientBCC
      */
     public void sendAttachEmail(String subject, String content,
       File attachment, String recipientTO, String recipientCC,
       String recipientBCC) {
      Message message = null;
      try {
       message = createAttachMessage(subject, content, attachment,
         recipientTO, recipientCC, recipientBCC);
       sendEmail(message);
      } catch (MessagingException e) {
       logger.error("Send html email failure", e);
       throw new MailException("Error sending email, failure", e);
      }
     }

     public Message getMessage() {
      return message;
     }

     public void setMessage(Message message) {
      this.message = message;
     }

     public Session getSession() {
      return session;
     }

     public void setSession(Session session) {
      this.session = session;
     }
     
     public static void main(String[] args) {
      MailClient client = new MailClient();
      client.sendMimeEmail("test", "test", "zhouqian1103@163.com", null, null);
     }
    }


    public class MailException extends RuntimeException {
     private static final long serialVersionUID = 1L;
     
     /** Throwable實例 */
     protected Throwable throwable;
     
     public MailException() {
      super();
     }
     
     public MailException(String message) {
      super(message);
     }
     
     public MailException(Throwable cause) {
      this.throwable = cause;
     }
     
     public MailException(String message, Throwable cause) {
      super(message);
      this.throwable = cause;
     }
     
     public void printStackTrace(PrintStream ps) {
      super.printStackTrace(ps);
      if (throwable != null) {
       ps.println("with nested Exception:" + throwable);
       throwable.printStackTrace(ps);
      }
     }
     
     public void printStackTrace(PrintWriter pw) {
      super.printStackTrace(pw);
      if (throwable != null) {
       pw.println("with nested Exception:" + throwable);
       throwable.printStackTrace(pw);
      }
     }
     
     public String toString() {
      if (throwable == null) {
       return super.toString();
      } else {
       return super.toString() + "with nested exception:" + throwable;
      }
     }

     public Throwable getThrowable() {
      return throwable;
     }
    }


    posted @ 2009-03-10 20:26 chou 閱讀(256) | 評論 (0)編輯 收藏

    2008年9月6日

    在測試Hibernate的一對多雙向關聯映射時,碰到很有趣的問題,跟inverse屬性直接相關。

    1、People.hbm.xml

    <hibernate-mapping default-lazy="false"> 
    <class name="com.persistent.People" table="people"> 
    <id name="id" column="peopleId" unsaved-value="0"> 
    <generator class="increment"> 
    </generator> 
    </id> 
    <property name="name" column="name"></property> 
    <set name="addresses" cascade="save-update">
    <key column="peopleId" not-null="true" />
    <one-to-many class="com.persistent.Address"/>
    </set> 
    </class>
    </hibernate-mapping>

    2、Address.hbm.xml

    <hibernate-mapping>
    <class name="com.persistent.Address" table="address"> 
    <id name="id" column="addressId" unsaved-value="0">
    <generator class="increment">
    </generator>
    </id> 
    <many-to-one name="people" column="peopleId" insert="false" update="false"></many-to-one> 
    <property name="addressName" column="addressName"></property> 
    <property name="codeNumber" column="codeNumber"></property> 
    </class> 
    </hibernate-mapping>
    3、People.java和Address.java

    public class People ...{ 
    private long id; 
    private String name; 
    private Set addresses = new HashSet(); 
    ...
    }

    public class Address ...{ 
    private long id; 
    private People people; 
    private String addressName; 
    private String codeNumber; 
    ...
    } 

    4、數據庫結構

    people表:{peopleId,name}

    address表:{addressId,peopleId,addressName,codeNumber}

    5、測試代碼

    People people = new People(); 
    people.setName("linda"); 
    Address address = new Address(); 
    address.setAddressName("yunnan"); 
    address.setCodeNumber("564123"); 
    address.setPeople(people); 
    people.getAddresses().add(address); 
    Session session = HibernateSessionFactory.getSession(); 
    session.beginTransaction(); 
    session.save(people); 
    session.getTransaction().commit(); 

    6、運行結果

      上面測試代碼運行起來正確:

    Hibernate: select max(peopleId) from people
    Hibernate: select max(addressId) from address
    Hibernate: insert into people (name, peopleId) values (?, ?)
    Hibernate: insert into address (addressName, codeNumber, peopleId, addressId) values (?, ?, ?, ?)
    Hibernate: update address set peopleId=? where addressId=?

      如果將People.hbm.xml映射改寫一下:

    <set name="addresses" cascade="save-update" inverse="true">
    <key column="peopleId" not-null="true" />
    <one-to-many class="com.persistent.Address"/>
    </set>

      不同之處在于添加了inverse="true",結果:

    Hibernate: select max(peopleId) from people
    Hibernate: select max(addressId) from address
    Hibernate: insert into people (name, peopleId) values (?, ?)
    Hibernate: insert into address (addressName, codeNumber, addressId) values (?, ?, ?)

      可以看到,peopleId并沒有寫入到關聯的address當中,數據庫address表中相應記錄的peopleId字段為空。

    7、分析

      在Hibernate中,術語inverse是反轉的意思,在關聯關系中,inverse="false"為主控方,由主控方負責維護對象的關聯關系。所以上面的映射文件改動之后,address為主控方,people為被控方,但是測試代碼只進行了一個保存操作session.save(people),這是針對people的,因此無法正確級聯保存address。而原來的映射文件中(雖然沒有明確指明,Hibernate默認inverse="false"),people為主控方,因此保存people時它會保證關聯的address的正確保存。

      也就是說,Hibernate僅僅按照主控方對象的狀態的變化來同步更新數據庫。按照原來的映射文件,people.getAddresses().add(address),即主控方對象的狀態發生了改變,因此數據庫會跟著對象狀態的變化來同步更新數據庫;而address.setPeople(people),即被控方對象的狀態發生了改變,它是不能觸發對象和數據庫的同步更新的。
    posted @ 2008-09-06 14:41 chou 閱讀(154) | 評論 (0)編輯 收藏

    2008年8月28日

    //保留的位置
    var saveLeft,saveTop,saveWidth,saveHeight;
    var theBody;
    var eventType;    //事件種類, "move"、"resize"
    var div;


    //創建并設定div的參數
    function setDiv(content)
    {
     
      //防止重復打開
      if (div)
      {
       eCloseDiv();
      }
      var newLeft,newTop,newWidth,newHeight;
      theBody = document.body;
      
      div = document.createElement("div");
      div.id = "panelDiv";
      div.style.position = "absolute";
      div.style.backgroundColor = "#5F86B5" // 邊框顏色
      div.style.padding = "1px 1px 1px 1px";
      div.style.overflow = "hidden";
      div.style.zIndex = 1;
        
      //設定打開的大小和位置
      Function()
      {
       //默認大小默認位置居中打開 
       newWidth = "350px";
       newHeight = "260px";
       newLeft = (theBody.clientWidth - parseInt(newWidth)) / 2 + "px";
       newTop = (theBody.clientHeight - parseInt(newHeight)) / 2 + "px";
       div.style.width = newWidth;
       div.style.height = newHeight;
       div.style.left = newLeft;
       div.style.top = newTop;
      }
      div = setChild(div,content);
      theBody.appendChild(div);
      
    //  var ipt = document.getElementsByTagName("input");
    //  for(var i = 0; i < ipt.length; i++)
    //  {
    //   ipt[i].disabled = true;
    //  }
    }

    function setChild(div,content)
    {
      //可否移動、調整
      var isMove = true
      var isResize = true;
      
      //底色
      var cDiv = document.createElement;
      var backDiv = cDiv("div");
      backDiv.style.cssText = "left: 0px; top: 0px; width: 100%; height: 100%; background-color:#DFE8F6;" ;
      div.appendChild(backDiv);
      
      //標題
      var topDiv = cDiv("div");
      topDiv.style.cssText = "left: 1px; top: 1px; width: 100%; height: 22px; border-bottom:1px solid #5F86B5; position: absolute; background: url(images/bgd.gif) repeat-x; vertical-align: middle; z-index: 5";
      if (isMove)
      {
       topDiv.style.cursor = "move";
       topDiv.setAttribute("onmousedown", function(){setMove(this)});
      }
      else
      {
       topDiv.style.cursor = "default";
      }
      topDiv.innerHTML = "<span style='top: 5px; left:5px; font-size: 12px; font-weight: bold; color: #102548; position: relative;' onselectstart='return false'>過濾提示</span>";
      div.appendChild(topDiv);
      
      //關閉按鈕
      var closeDiv = cDiv("div");
      closeDiv.style.cssText = "right: 8px; top : 4px; width: 16px; height: 16px; position: absolute;  text-align: center; vertical-align: middle; cursor: pointer; z-index:10";
      closeDiv.setAttribute("onclick", function() {eCloseDiv()});
      closeDiv.innerHTML = "<span style='font-size: 12px; font-weight: bold; color: #0E377A;' title='Esc快捷鍵'><img src = 'images/close.gif'/></span>";
      div.appendChild(closeDiv);
      
      //內容
      var contentDiv = cDiv("div");
      contentDiv.style.cssText = "left: 1px; top: 35px; background-color:#DFE8F6; width: 100%; position: absolute; overflow: auto;  padding:5px;";
      contentDiv.style.height = (parseInt(div.style.height) - 40) + "px";
      contentDiv.innerHTML = "<table style='width: 100%; height: 100%; text-align: left; vertical-align: hidden'><tr><td><p>"+content+"</p></td></tr></table>";
      div.appendChild(contentDiv);
      
      //調整大小
      var reDiv = cDiv("div");
      reDiv.style.cssText = "right: 0px; bottom: 0px; width: 5px; height: 5px; position: absolute;";
      if (isResize)
      {
       reDiv.style.cursor = "se-resize";
       reDiv.setAttribute("onmousedown", function(){setResize(this)});
      }
      else
      {
       reDiv.style.cursor = "default";
      }
      div.appendChild(reDiv);
      
      return div;
    }

    var oX, oY, oLeft, oTop, oWidth, oHeight; //存儲原始移動前的位置
    var divClone, oDiv;   //克隆的節點和原始節點
    var oTime;
    //clone拖移的節點
    function setMove(obj)
    {
      if (event.button == 1)
      {
       if (oTime)
       {
        clearTimeout(oTime);
        divClone.parentNode.removeChild(divClone);
       }
       oDiv = obj.parentNode;
       divClone = oDiv.cloneNode(true);
       divClone.style.filter = "Alpha(opacity=50)";
       divClone.childNodes[1].setAttribute("onmousemove", function(){startMove(this)});
       divClone.childNodes[1].setAttribute("onmouseup", function(){endMove()});
       oX = parseInt(event.clientX);
       oY = parseInt(event.clientY);
       oLeft = parseInt(divClone.style.left);
       oTop = parseInt(divClone.style.top);
       document.body.appendChild(divClone);
       divClone.childNodes[1].setCapture();
       eventType = "move";
      }
    }

    //拖移
    function startMove(obj)
    {
      if (eventType == "move" && event.button == 1)
      {
       var moveDiv = obj.parentNode;
       moveDiv.style.left = (oLeft + event.clientX - oX) + "px";
       moveDiv.style.top = (oTop + event.clientY - oY) + "px";
      }
    }

    //拖移結束調用動畫
    function endMove()
    {
      if (eventType == "move")
      {
       divClone.childNodes[1].releaseCapture();
                move(parseInt(divClone.style.left), parseInt(divClone.style.top));
       eventType = "";
      }
    }

    //移動的動畫
    function move(aimLeft, aimTop)
    {
      var nowLeft = parseInt(oDiv.style.left);
      var nowTop = parseInt(oDiv.style.top);
      var moveSize = 30;
      if (nowLeft > aimLeft + moveSize || nowLeft < aimLeft - moveSize || nowTop > aimTop + moveSize || nowTop < aimTop - moveSize)
      {
       oDiv.style.left = aimLeft > nowLeft + moveSize ? (nowLeft + moveSize) + "px" : aimLeft < nowLeft - moveSize ? (nowLeft - moveSize) + "px" : nowLeft + "px";
       oDiv.style.top = aimTop > nowTop + moveSize ? (nowTop + moveSize) + "px" : aimTop < nowTop - moveSize ? (nowTop - moveSize) + "px" : nowTop + "px";
       oTime = setTimeout("move(" + aimLeft + ", " + aimTop + ")", 1);
      }
      else
      {
       oDiv.style.left = divClone.style.left;
       oDiv.style.top = divClone.style.top;
       divClone.parentNode.removeChild(divClone);
       divClone == null;
      }
    }

    //clone調整大小的節點
    function setResize(obj)
    {
      if (event.button == 1)
      {
       if (oTime)
       {
        clearTimeout(oTime);
        divClone.parentNode.removeChild(divClone);
       }
       oDiv = obj.parentNode;
       divClone = oDiv.cloneNode(true);
       divClone.style.filter = "Alpha(opacity=50)";
       divClone.childNodes[4].setAttribute("onmousemove", function(){startResize(this)});
       divClone.childNodes[4].setAttribute("onmouseup", function(){endResize()});
       oX = parseInt(event.clientX);
       oY = parseInt(event.clientY);
       oWidth = parseInt(divClone.style.width);
       oHeight = parseInt(divClone.style.height);
       document.body.appendChild(divClone);
       divClone.childNodes[4].setCapture();
       eventType = "resize";
      }
    }

    //拖動調整大小
    function startResize(obj)
    {
      if (eventType == "resize" && event.button == 1)
      {
       var nX = event.clientX;
       var nY = event.clientY;
       if (nX > oX - oWidth && nY > oY - oHeight + 40)
       {
        var resizeDiv = obj.parentNode;
        resizeDiv.style.width = (oWidth + event.clientX - oX) + "px";
        resizeDiv.style.height = (oHeight + event.clientY - oY) + "px";
        resizeDiv.childNodes[3].style.height = (parseInt(resizeDiv.style.height) - 40) + "px";
       }
      }
    }

    //調整大小結束
    function endResize()
    {
      if (eventType == "resize")
      {
       divClone.childNodes[4].releaseCapture();
                resize(parseInt(divClone.style.width), parseInt(divClone.style.height));
       eventType = "";
      }
    }

    //調整大小的動畫
    function resize(aimWidth, aimHeight)
    {
      var nowWidth = parseInt(oDiv.style.width);
      var nowHeight = parseInt(oDiv.style.height);
      var resizeSize = 30;
      if (nowWidth > aimWidth + resizeSize || nowWidth < aimWidth - resizeSize || nowHeight > aimHeight + resizeSize || nowHeight < aimHeight - resizeSize)
      {
       oDiv.style.width = aimWidth > nowWidth + resizeSize ? (nowWidth + resizeSize) + "px" : aimWidth < nowWidth - resizeSize ? (nowWidth - resizeSize) + "px" : nowWidth + "px";
       oDiv.style.height = aimHeight > nowHeight + resizeSize ? (nowHeight + resizeSize) + "px" : aimHeight < nowHeight - resizeSize ? (nowHeight - resizeSize) + "px" : nowHeight + "px";
       oDiv.childNodes[3].style.height = (parseInt(oDiv.style.height) - 40) + "px";
       oTime = setTimeout("resize(" + aimWidth + ", " + aimHeight + ")", 1);
      }
      else
      {
       oDiv.style.width = divClone.style.width;
       oDiv.style.height = divClone.style.height;
       oDiv.childNodes[3].style.height = (parseInt(oDiv.style.height) - 40) + "px";
       divClone.parentNode.removeChild(divClone);
       divClone == null;
      }
    }

    //關閉DIV
    function eCloseDiv()
    {  
     
      if (div)
      {
       div.parentNode.removeChild(div);
    //   var ipt = document.getElementsByTagName("input");
    //   for(var i = 0; i < ipt.length; i++)
    //   {
    //    ipt[i].disabled = false;
    //   }
       div = null;
      }
    }

    //保留位置和大小
    function saveDiv()
    {
      if (div)
      {
       saveLeft = div.style.left;
       saveTop = div.style.top;
       saveWidth = div.style.width;
       saveHeight = div.style.height;
      }
    }

    //快捷鍵
    document.onkeydown = function()
    {
      event.keyCode == 27 ? eCloseDiv() : null;  //Esc快捷鍵
      event.ctrlKey && (event.keyCode == 83 || event.keyCode == 115) ? saveDiv() : null; //ctrl+s保存位置
      event.ctrlKey && event.keyCode == 13 ? setDiv() : null //ctrl+enter打開Div
      !event.ctrlKey && (event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) ? arrowMove(event.keyCode) : null;
      event.ctrlKey && (event.keyCode == 37  || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) ? arrowResize(event.keyCode) : null;
    }

    // 單擊層以外的地方隱藏層
    document.onclick = function()
    {
      if (div)
      {
          if(typeof event.srcElement.message == "undefined")
       {
         if (div.componentFromPoint(event.clientX,event.clientY)=="outside")
         {
         eCloseDiv();
          
         }
       }
      }
    }

    //上下左右箭頭移動div
    function arrowMove(eKeyCode)
    {
      if (div)
      {
       var isMove = document.getElementById("isMove").checked;
       if (isMove)
       {
        switch(eKeyCode)
        {
         case 37:
          div.style.left = (parseInt(div.style.left) - 1) + "px"; //left
          break
         case 38:
          div.style.top = (parseInt(div.style.top) - 1) + "px"; //up
          break
         case 39:
          div.style.left = (parseInt(div.style.left) + 1) + "px"; //right
          break
         case 40:
          div.style.top = (parseInt(div.style.top) + 1) + "px"; //down
          break
        }
       }
      }
    }

    //ctrl+上下左右箭頭調整div大小
    function arrowResize(eKeyCode)
    {
      if (div)
      {
       var isResize = document.getElementById("isResize").checked;
       if (isResize)
       {
        switch(eKeyCode)
        {
         case 37:
          div.style.width = (parseInt(div.style.width) - 1) + "px"; //left
          break
         case 38:
          div.style.height = (parseInt(div.style.height) - 1) + "px"; //up
          break
         case 39:
          div.style.width = (parseInt(div.style.width) + 1) + "px"; //right
          break
         case 40:
          div.style.height = (parseInt(div.style.height) + 1) + "px"; //down
          break
        }
       }
      }
    }

    posted @ 2008-08-28 12:42 chou 閱讀(309) | 評論 (0)編輯 收藏
     

    前臺:
         var url = "filter.do?action=filter";
         var xmlDocument = XmlDocument.create();
         var filterInfo = xmlDocument.createElement("filterInfo");
         xmlDocument.appendChild(filterInfo);
         appendSimpleChildNode(xmlDocument, filterInfo, "type", type);
         appendSimpleChildNode(xmlDocument, filterInfo, "condition", condition);  
         xmlHttp = XmlHttp.create();
         xmlHttp.open("POST", url, false);
         xmlHttp.send(xmlDocument.xml);
         var xmlString = xmlHttp.responseText;
         return xmlString;

    后臺:

            SAXBuilder saxb = new SAXBuilder();
            Document doc = saxb.build(request.getInputStream());
            Element root = doc.getRootElement();
            String type = root.getChildText("type");
            String inputCondition = root.getChildText("condition");
           

    posted @ 2008-08-28 12:37 chou 閱讀(230) | 評論 (1)編輯 收藏
    僅列出標題  下一頁
     
    主站蜘蛛池模板: 亚洲网站免费观看| 亚洲天堂中文资源| 色www免费视频| 国产18禁黄网站免费观看| 亚洲爆乳无码精品AAA片蜜桃| 国产在线19禁免费观看国产| 免费一级特黄特色大片| 亚洲永久精品ww47| 性无码免费一区二区三区在线| 亚洲国产香蕉碰碰人人| 2019中文字幕在线电影免费| 亚洲国产精品一区二区三区在线观看 | 亚洲成Av人片乱码色午夜| 久爱免费观看在线网站| 91亚洲国产成人久久精品| 天天摸夜夜摸成人免费视频| 白白色免费在线视频| 国产中文在线亚洲精品官网| 免费国产成人α片| 国产亚洲精品bv在线观看| 亚洲Aⅴ无码一区二区二三区软件 亚洲AⅤ视频一区二区三区 | 国产女高清在线看免费观看| 色爽黄1000部免费软件下载| 亚洲精品无码成人AAA片| 4hu四虎最新免费地址| 国产精品亚洲色婷婷99久久精品| 亚洲精品成人片在线观看精品字幕 | 两性色午夜免费视频| 亚洲欧洲综合在线| 免费二级毛片免费完整视频| 99精品视频在线观看免费| 亚洲国产精品久久丫| 国产国拍亚洲精品福利| 99在线精品视频观看免费| 猫咪www免费人成网站| 久久亚洲美女精品国产精品 | 亚洲中文字幕乱码AV波多JI| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 国产成人精品久久亚洲高清不卡 | 亚洲欧美日韩自偷自拍| 国产亚洲av片在线观看播放|