sclsch

          java備忘

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            10 Posts :: 0 Stories :: 6 Comments :: 0 Trackbacks

          2008年9月28日 #

          package com.secondHand.db;

          import java.math.BigDecimal;
          import java.sql.Connection;
          import java.sql.DriverManager;
          import java.sql.ResultSet;
          import java.sql.ResultSetMetaData;
          import java.sql.SQLException;
          import java.sql.Statement;
          import java.util.ArrayList;
          import java.util.Iterator;
          import java.util.List;

          public class DBUtil {
              
          private String url = "jdbc:mysql://localhost:3306/db_secondhand?user=root&password=root";

              
          private String dbUserName = "root";

              
          private String dbUserPassword = "root";

              
          private String driver = "com.mysql.jdbc.Driver";

              
          private Connection conn = null;

              
          private Statement stmt = null;

              
          private ResultSet rs = null;

              
          public DBUtil() {
                  
          try {
                      Class.forName(driver);
                  } 
          catch (ClassNotFoundException e) {
                      e.printStackTrace();
                  }
              }

              
          private Connection getConnection() {
                  
          try {
                      conn 
          = DriverManager.getConnection(url, dbUserName, dbUserPassword);
                  } 
          catch (SQLException e) {
                      e.printStackTrace();
                  }
                  
          return conn;
              }

              
          private void close(ResultSet rs, Statement stmt, Connection conn) {
                  
          if (rs != null) {
                      
          try {
                          rs.close();
                      } 
          catch (SQLException e) {
                          e.printStackTrace();
                      }
                  }
                  
          if (stmt != null) {
                      
          try {
                          stmt.close();
                      } 
          catch (SQLException e) {
                          e.printStackTrace();
                      }
                  }
                  
          if (conn != null) {
                      
          try {
                          conn.close();
                      } 
          catch (SQLException e) {
                          e.printStackTrace();
                      }
                  }
              }

              
          public List query(String sql) {
                  List list 
          = new ArrayList();

                  conn 
          = this.getConnection();
                  
          try {
                      stmt 
          = conn.createStatement();
                      rs 
          = stmt.executeQuery(sql);
                      
          // 獲取數據庫表結構
                      ResultSetMetaData rsm = rs.getMetaData();
                      
          // 取得數據庫的列數
                      int col = rsm.getColumnCount();
                      
          // 生成col長度的Object數組
                      Object[] obj = new Object[col];
                      
          // 遍歷結果集,將結果存入Object數組
                      while (rs.next()) {
                          
          for (int i = 0; i < col; i++) {
                              obj[i] 
          = rs.getObject(i + 1);
                          }
                          list.add(obj);
                      }
                  } 
          catch (SQLException e) {
                      e.printStackTrace();
                  } 
          finally {
                      
          this.close(rs, stmt, conn);
                  }
                  
          return list;
              }

              
          public void update(String sql) {
                  
          try {
                      conn 
          = this.getConnection();
                      stmt 
          = conn.createStatement();
                      stmt.executeUpdate(sql);
                  } 
          catch (SQLException e) {
                      e.printStackTrace();
                  }
          finally{
                      
          this.close(rs, stmt, conn);            
                  }
              }

              
          public static void main(String args[]) {
                  DBUtil nj 
          = new DBUtil();
                  String sql 
          = "select * from users";
                  List list 
          = nj.query(sql);
                  
          // 返回list的迭代器
                  Iterator it = list.iterator();
                  
          // 遍歷迭代器,取出結果
                  while (it.hasNext()) {
                      Object[] o 
          = (Object[]) it.next();
                      
          int id = ((BigDecimal) o[0]).intValue();
                      System.out.println(id);
                  }

              }
          }
          posted @ 2009-04-03 10:51 sclsch 閱讀(191) | 評論 (0)編輯 收藏

               摘要: 增加區域截取屏幕的功能,歡迎試用,簡單實用。  閱讀全文
          posted @ 2009-01-27 21:45 sclsch 閱讀(1447) | 評論 (2)編輯 收藏

          個人開發的小巧的屏幕截圖工具,可以全屏截圖,其他功能還待完善。
          下載地址/Files/sclsch/LittleScreenCapture.rar
          posted @ 2009-01-26 18:15 sclsch 閱讀(1216) | 評論 (0)編輯 收藏

              下拉框是網頁的重要元素,動態取數據并不難,通常的思路是在action中取數據,然后把數據放到request中,最后在頁面上用標簽遍歷數據,但寫多了,是不是很煩,我想做一個通用的下拉框標簽,只要指明了業務接口,并且該接口實現了特定方法,就可以了。
              首先定義一個接口,用來取下拉框的數據。
             
             1package com.ssh.tag;
             
          2.
             
          3import java.util.List;
             
          4.
             
          5/** 
             6.  * 
          @author 孫程亮 E-mail:sclsch@188.com 
             7.  * 
          @version 創建時間:Oct 27, 2008 6:59:05 PM
             8.  * 取得下拉框數據接口 
             9.  
          */
            
          10public interface SelectorInterface {
            
          11.   public List getVableValueList();
            
          12. }
             
              如果哪個業務層service需要增加下拉框的功能,就需要實現它。
          例如:
            
             1package com.ssh.entity.board.service;
             
          2.
             
          3import java.util.ArrayList;
             
          4import java.util.List;
             
          5.
             
          6import com.ssh.common.vo.ValueLabelBean;
             
          7import com.ssh.entity.board.dao.IBoardDao;
             
          8import com.ssh.entity.board.model.Board;
             
          9import com.ssh.tag.SelectorInterface;
            
          10import com.sun.java_cup.internal.internal_error;
            
          11.
            
          12/**
            13.  * 
          @author 孫程亮 E-mail:sclsch@188.com
            14.  * 
          @version 創建時間:Sep 4, 2008 6:36:22 PM
            15.  
          */
            
          16public class BoardServiceImpl implements IBoardService,SelectorInterface{
            
          17.     private IBoardDao boardDao;
            
          18.
            
          19.     public void addBoard(Board b) {
            
          20.        boardDao.addBorad(b);
            
          21.     }
            
          22.
            
          23.     public IBoardDao getBoardDao() {
            
          24.         return boardDao;
            
          25.     }
            
          26.
            
          27.     public void setBoardDao(IBoardDao boardDao) {
            
          28.         this.boardDao = boardDao;
            
          29.     }
            
          30.
            
          31.     public List getAllBoards() {
            
          32.         return this.boardDao.getAllBoards();
            
          33.     }
            
          34.     /**
            35.      * 用來實現下拉框的方法,
            36.      * 把下拉數據存放在ValuLabelBean中,再存放在list中返回
            37.      * 給自定義標簽。
            38.      * 
          @return 下拉數據集合
            39.      
          */
            
          40.     public List getVableValueList() {
            
          41.         List list = this.boardDao.getAllBoards();
            
          42.         List valueLableList = new ArrayList();
            
          43.         for(int i=0;i<list.size();i++){
            
          44.           Board board = (Board)list.get(i);
            
          45.           ValueLabelBean vlb = new ValueLabelBean();
            
          46.           vlb.setValue(board.getId().toString());
            
          47.           vlb.setLabel(board.getName());
            
          48.           valueLableList.add(vlb);
            
          49.         }
            
          50.         return valueLableList;
            
          51.     }
            
          52. }
              注意數據必須放在ValueLabelBean中,label表示下拉框顯示的數據,value表示下拉框的value值,下面是ValueLabelBean
          這個bean:
             1package com.ssh.common.vo;
             
          2.
             
          3import java.io.Serializable;
             
          4.
             
          5/**
             6.  * 
          @author 孫程亮 E-mail:sclsch@188.com
             7.  * 
          @version 創建時間:Oct 27, 2008 7:00:36 PM
             8.  
          */
             
          9public class ValueLabelBean implements Serializable {
            
          10.     private String value;
            
          11.     private String label;
            
          12.
            
          13.     public String getValue() {
            
          14.         return value;
            
          15.     }
            
          16.
            
          17.     public void setValue(String value) {
            
          18.         this.value = value;
            
          19.     }
            
          20.
            
          21.     public String getLabel() {
            
          22.         return label;
            
          23.     }
            
          24.
            
          25.     public void setLabel(String label) {
            
          26.         this.label = label;
            
          27.     }
            
          28. }

             下面就是寫tag了,暫時設置了三個屬性 tagId,serviceBean和title,
          tagId:select 的 id 屬性值。
          serviceBean:對應于spring容器中service的id。
          title:select的默認選中項。
             1package com.ssh.tag;
             
          2.
             
          3import java.io.IOException;
             
          4import java.lang.reflect.Method;
             
          5import java.util.List;
             
          6.
             
          7import javax.servlet.jsp.JspException;
             
          8import javax.servlet.jsp.tagext.TagSupport;
             
          9.
            
          10import org.springframework.context.support.AbstractApplicationContext;
            
          11import org.springframework.util.StringUtils;
            
          12import org.springframework.web.context.WebApplicationContext;
            
          13import org.springframework.web.context.support.WebApplicationContextUtils;
            
          14import org.springframework.web.util.JavaScriptUtils;
            
          15import com.ssh.common.util.*;
            
          16import com.ssh.entity.board.service.IBoardService;
            
          17import com.sun.org.apache.xml.internal.utils.ObjectPool;
            
          18import com.ssh.common.vo.*;
            
          19import com.ssh.tag.*;
            
          20/**
            21.  * 
            22.  * 
          @author 孫程亮 E-mail:sclsch@188.com
            23.  * 
          @version 創建時間:Oct 25, 2008 10:22:18 AM
            24.  
          */
            
          25public class SelectorTag extends TagSupport {
            
          26.     
            
          27.     private String tagId;      //select's id
            28.     private String serviceBean;//service
            29.     private String title;      //select's title
            30.     
            
          31.     public int doEndTag() throws JspException {
            
          32.       WebApplicationContext applicationContext =  WebApplicationContextUtils.getWebApplicationContext(pageContext.getServletContext());
            
          33.       SelectorInterface selectorInterface = (SelectorInterface)applicationContext.getBean(serviceBean);
            
          34.       List list1 = selectorInterface.getVableValueList();
            
          35.       //List list = ServiceLocator.getSelectorService(serviceBean).getVableValueList();
            36.       StringBuffer sBuffer = new StringBuffer();
            
          37.       sBuffer.append("<select id='"+this.tagId);
            
          38.
            
          39.       sBuffer.append("'>");
            
          40.       if(!StringUtil.isBlank(title)){
            
          41.           sBuffer.append("<option value='-1' selected>"+title+"</option>");
            
          42.       }
            
          43.       for(int i=0;i<list1.size();i++){
            
          44.         ValueLabelBean vlb =  (ValueLabelBean)list1.get(i);
            
          45.         sBuffer.append("<option value='"+vlb.getValue()+"'>"+vlb.getLabel()+"</option>");
            
          46.       }
            
          47.       sBuffer.append("</select>");
            
          48.       try {
            
          49.         pageContext.getOut().println(sBuffer.toString());
            
          50.     } catch (IOException e) {
            
          51.         // TODO Auto-generated catch block
            52.         e.printStackTrace();
            
          53.     }
            
          54.       return EVAL_PAGE;
            
          55.     }
            
          56.     public void setTagId(String tagId) {
            
          57.         this.tagId = tagId;
            
          58.     }
            
          59.     public void setServiceBean(String serviceBean) {
            
          60.         this.serviceBean = serviceBean;
            
          61.     }
            
          62.     public void setTitle(String title) {
            
          63.         this.title = title;
            
          64.     }
            
          65. }

          在標簽中可以用WebApplicationContextUtils來得到context,曾一度起了彎路,想到用一個工具類加載容器,倒也能實現,也想到用反射,但是行不通的。 看來變通一下,可能會少走很多彎路。
             下面是tld文件:
          <?xml version="1.0" encoding="UTF-8" ?>
           <!DOCTYPE taglib PUBLIC
               "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
               "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

           <taglib>

               <tlib-version>1.0</tlib-version>
               <jsp-version>1.0</jsp-version>
               <short-name>sclschTag</short-name>
               <description>sclschTag</description>

               <tag>
                   <name>selectorTag</name>
                   <tag-class>com.ssh.tag.SelectorTag</tag-class>
                   <body-content>JSP</body-content>
                   <description>
                   </description>
                   <attribute>
                       <name>tagId</name>
                       <required>true</required>
                       <rtexprvalue>true</rtexprvalue>
                   </attribute>

                   <attribute>
                       <name>serviceBean</name>
                       <required>true</required>
                       <rtexprvalue>true</rtexprvalue>
                   </attribute>
                   <attribute>
                       <name>title</name>
                       <required>false</required>
                       <rtexprvalue>true</rtexprvalue>
                   </attribute>
               </tag>

           </taglib>
          最后就剩頁面了:
            <%@ page language="java" contentType="text/html; charset=UTF-8"
               pageEncoding
          ="UTF-8"%>
           
          <%@ taglib uri="/WEB-INF/tld/selectorTag.tld" prefix="sclsch"%>
           
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
           
          <html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
           
          <head>
           
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
           
          <title>mytag(sclsch@188.com)</title>
           
          </head>
           
          <body>
           
          <sclsch:selectorTag tagId='myid' title="--請選擇--" serviceBean="boardService" />
           
          </body>
           
          </html>

              好了,盡管這個tag很簡陋,但為以后省了不少工,只要在業務層實現一個SelectorInterface接口,在頁面上擺個標簽就可以了。我剛學標簽的編寫,有什么不足請指正,如果有更好的設計一定告訴我額。


          posted @ 2008-10-28 20:57 sclsch 閱讀(748) | 評論 (0)編輯 收藏

          我是css初學者,自己做了一個工字型的布局,但整個頁面不居中。請指點,代碼如下:
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
          <HTML>
           
          <HEAD>
            
          <style type="text/css">

                * 
          {
              margin
          : 0px;
              padding
          : 0px;
              
          }
               body 
          {
              font-family
          : Arial, Helvetica, sans-serif;
              font-size
          : 12px;
              margin
          : 0px auto;
              height
          : auto;
              width
          : 760px;
              border
          :1px #66CCFF solid;
             
              
          }
              .header 
          {
              height
          : 100px;
              width
          : 760px;
              background-image
          : url(header.jpg);
              background-repeat
          : no-repeat;
              margin
          :0px 0px 3px 0px;
              border
          :1px #66CCFF solid;
               
              
          }

              .contentleft 
          {
              height
          : 250px;
              width
          : 150px;
              font-size
          : 14px;
              list-style-type
          : none;
              float
          :left;
              border
          :1px #66CCFF solid;

              
          }
              .contentleft li 
          {
              float
          :left;
              
          }
              .contentleft li a
          {
              color
          :#000000;
              text-decoration
          :none;
              padding-top
          :4px;
              display
          :block;
              width
          :97px;
              height
          :22px;
              text-align
          :center;
              background-color
          : #009966;
              margin-left
          :2px;
              
          }
              .contentleft li a:hover
          {
              border
          :1px #66CCFF solid;
              color
          :#FFFFFF;
              
          }
              .content 
          {
              height
          :auto;
              width
          : 760px;
              line-height
          : 1.5em;
              padding
          : 10px;
              border
          :1px #66CCFF solid;
              
          }
              .content p 
          {
              text-indent
          : 2em;
              
          }
              .content h3 
          {
              font-size
          : 16px;
              margin
          : 10px;
              
          }

              .footer 
          {
              height
          : 50px;
              width
          : 760px;
              line-height
          : 2em;
              text-align
          : center;
              background-color
          : #009966;
              padding
          : 10px;
              border
          :1px #66CCFF solid;
              
          }
              .contentright
          {
                  height
          : 250px;
                  width
          : 580px;
                  font-size
          : 14px;
                  list-style-type
          : none;
                  border
          :1px #66CCFF solid;
                  float
          :right;
              
          }
              .logo
          {
                background-image
          : url(scltemp.jpg);
                height
          : 100px;
                width
          : 75px;

              
          }

            
          </style>
             
            
          <TITLE> New Document </TITLE>
            
          <META NAME="Generator" CONTENT="EditPlus">
            
          <META NAME="Author" CONTENT="">
            
          <META NAME="Keywords" CONTENT="">
            
          <META NAME="Description" CONTENT="">
           
          </HEAD>

           
          <BODY>
          <div class="header">
            
          <div class="logo"></div>
          </div>

          <div class="content">
              
          <div class="contentleft">
              
          <li><href="#">首 頁</a></li>
              
          <li><href="#">文 章</a></li>
              
          <li><href="#">相冊</a></li>
              
          <li><href="#">Blog</a></li>
              
          <li><href="#">論 壇</a></li>
              
          <li><href="#">幫助</a></li>
              
          </div>
              
          <div class="contentright">
              
          <h3>前言</h3>
              
          <p>第一段內容</p>
              
          <h3>理解CSS盒子模式</h3>
              
          <p>第二段內容</p>
              
          </div>
          </div>

          <div class="footer">
          <p>關于華升 | 廣告服務 | 華升招聘 | 客服中心 | Q Q留言 | 網站管理 | 會員登錄 | 購物車</p><p>Copyright &copy;2006 - 2008 Tang
          Guohui. All Rights Reserved
          </p>
          </div>
           
          </BODY>
          </HTML>
          另外,還有很多不完美的地方,請指點一下!

          posted @ 2008-10-05 21:00 sclsch 閱讀(757) | 評論 (3)編輯 收藏

              最近要做一個樹型下拉框,參考網上的資料,也沒有找到合適的,于是自己實現了一個,原理是先順序加載根節點,在加載每個根節點后,再遍歷每個數組,看有沒有以這個根節點為父 節點的數組,如果有,就加載到下拉框,然后再遞歸看有沒有以這個節點為父結點的數組,如果有,再加載到下拉框,以此類推...
          代碼如下:(如果有更好的方法,請留言,有待改進)
             
           1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
           2   <html xmlns="http://www.w3.org/1999/xhtml">
           3    <head>
           4     <title> javascript樹型菜單 author:sclsch@188.com</title>
           5     <meta name="generator" content="editplus" />
           6     <meta name="author" content="" />
           7     <meta name="keywords" content="" />
           8     <meta name="description" content="" />
           9     <script type="text/javascript">
          10       var data =new Array();
          11      
          12       data[0]= {id:'0',pid:'1',text:'河北'};
          13       data[1]= {id:'1',pid:'-1',text:'中國'};
          14       data[2]= {id:'2',pid:'6',text:'莫斯科'};
          15       data[3]= {id:'3',pid:'0',text:'邯鄲'};
          16       data[4]= {id:'4',pid:'0',text:'石家莊'};
          17       data[5]= {id:'5',pid:'3',text:'邯鄲縣'};
          18       data[6]= {id:'6',pid:'-1',text:'俄羅斯'};
          19       data[7]= {id:'7',pid:'5',text:'孫程亮 sclsch@188.com'};
          20 
          21      function TreeSelector(item,data,rootId){
          22         this._data = data;
          23         this._item = item;
          24         this._rootId = rootId;
          25 
          26      }
          27      TreeSelector.prototype.createTree = function(){
          28          var  len =this._data.length;
          29          forvar i= 0;i<len;i++){
          30            if ( this._data[i].pid == this._rootId){
          31               this._item.options.add(new Option(".."+this._data[i].text,this._data[i].id));
          32                   for(var j=0;j<len;j++){
          33                     this.createSubOption(len,this._data[i],this._data[j]);
          34                   
          35                   }  
          36            }
          37         }
          38      }
          39       
          40      TreeSelector.prototype.createSubOption = function(len,current,next){
          41             var blank = "..";
          42             if ( next.pid == current.id){
          43                  intLevel =0;
          44                  var intlvl =this.getLevel(this._data,this._rootId,current);
          45                  for(a=0;a<intlvl;a++)
          46                     blank += "..";
          47                  blank += "├-";
          48                  this._item.options.add(new Option(blank + next.text,next.id));
          49                   
          50                  for(var j=0;j<len;j++){
          51                    this.createSubOption(len,next,this._data[j]);
          52                  
          53                  }   
          54                  
          55             }
          56      }
          57 
          58      TreeSelector.prototype.getLevel = function(datasources,topId,currentitem){
          59          
          60          var pid =currentitem.pid;
          61          if( pid !=topId)
          62          {
          63            for(var i =0 ;i<datasources.length;i++)
          64            {
          65               if( datasources[i].id == pid)
          66               {
          67                  intLevel ++;
          68                  this.getLevel(datasources,topId,datasources[i]);
          69               }
          70            }  
          71          }
          72          return intLevel;
          73     }
          74 
          75     </script>
          76    </head>
          77 
          78    <body>
          79     <select id="myselect">
          80   </select>
          81   <script language=javascript type="text/javascript">
          82     var ts = new TreeSelector(document.getElementById("myselect"),data,-1);
          83     ts.createTree();
          84   </script>
          85    </body>
          86   </html>

          posted @ 2008-09-28 11:20 sclsch 閱讀(2339) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 象州县| 南丹县| 广东省| 惠来县| 诸暨市| 宿州市| 堆龙德庆县| 云安县| 收藏| 广灵县| 平潭县| 胶州市| 田阳县| 九龙坡区| 开阳县| 綦江县| 安陆市| 白山市| 观塘区| 墨竹工卡县| 玛曲县| 龙川县| 汉川市| 临江市| 吴旗县| 宜阳县| 科技| 昌邑市| 黄平县| 灌云县| 黔南| 平陆县| 焦作市| 黔江区| 灵台县| 临洮县| 彩票| 通州区| 吉木乃县| 珲春市| 鄱阳县|