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 閱讀(257) | 評論 (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 閱讀(155) | 評論 (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 閱讀(310) | 評論 (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 閱讀(231) | 評論 (1)編輯 收藏
          僅列出標題  下一頁
           
          主站蜘蛛池模板: 宾川县| 个旧市| 灵川县| 宝鸡市| 江达县| 体育| 兴业县| 芒康县| 英超| 宜川县| 隆尧县| 玉屏| 新宁县| 巴塘县| 东阿县| 顺昌县| 舟曲县| 宜城市| 襄汾县| 茂名市| 霍山县| 元江| 云阳县| 临潭县| 乌拉特中旗| 北海市| 吉木乃县| 内黄县| 青川县| 武山县| 灵丘县| 公主岭市| 米易县| 万宁市| 贞丰县| 钟山县| 武义县| 家居| 平远县| 新干县| 武川县|