posts - 495,  comments - 11,  trackbacks - 0
           

          kk.jar的目錄結(jié)構(gòu)如下

          +kk.jar
          ??? +META-INF
          ??????? MANIFEST.MF
          ??? +config
          ??????? database.properties

          目標:讀取database.properties中的參數(shù)信息

          types=mysql
          mysql.url=jdbc:mysql://127.0.0.1:3306/tjtz
          mysql.user=root
          mysql.password=root
          mysql.driver=com.mysql.jdbc.Driver
          mysql.maxCounts=5

          代碼如下:

          /*
          * @(#)JarFileReader.java Oct 9, 2008
          *
          * Copyright (c) 2008 by jadmin. All Rights Reserved.
          */

          package file.jar;

          import java.io.IOException;
          import java.io.InputStream;
          import java.util.Properties;
          import java.util.Set;
          import java.util.jar.JarEntry;
          import java.util.jar.JarFile;

          /**
          * 從jar包中讀取配置文件信息
          *
          * @author <a href="mailto:jadmin@yeah.net">jadmin</a>
          * @version 1.00 Oct 9, 2008 1:10:44 AM
          */
          public class JarReader {

          public static void main(String[] args) {
          ?? String jarPath = "C:\\Documents and Settings\\Administrator\\桌面\\新建文件夾\\kk.jar";
          ?? String entryFile = "config/database.properties";
          ?? doRead(jarPath,entryFile);
          }

          public static void doRead(String jarPath, String entryFile) {
          ?? try {
          ??? JarFile jarFile = new JarFile(jarPath);
          ??? JarEntry entry = jarFile.getJarEntry(entryFile);
          ??? InputStream input = jarFile.getInputStream(entry);
          ??? process(input);
          ??? jarFile.close();
          ?? } catch (IOException e) {
          ??? e.printStackTrace();
          ?? }
          }

          private static void process(InputStream input) {
          ?? Properties p = new Properties();
          ?? try {
          ??? p.load(input);
          ??? Set<?> set = p.keySet();
          ??? for (Object name : set)
          ???? System.out.println(name + "=" + p.getProperty((String) name));
          ?? } catch (IOException e) {
          ??? e.printStackTrace();
          ?? }
          }
          }

          運行結(jié)果如下:

          posted @ 2008-10-09 01:49 jadmin 閱讀(1745) | 評論 (0)編輯 收藏

            1.清濁并吞:水在流動時不管清水、濁水皆能加以并合,由此松下幸之助領(lǐng)悟出人或企業(yè)在成長、學(xué)習(xí)的過程中應(yīng)去面對各種可能的挑戰(zhàn),而非去等待好的時機。因為,如果 任何事情皆要挑好天氣、好機會、好環(huán)境的話,那終將只能留在原地,毫無機會。所以, “清濁并吞”即是告訴我們在任何環(huán)境下,皆需讓自己有勇氣下決心開始去學(xué)習(xí),開始去做,就如同經(jīng)濟有景氣、有不景氣,人生亦本就有起有伏,重要的是當(dāng)下的即知即行,而非等待和觀望。


            2.隨方亦圓:水在任何容器中皆可依容器之形狀而呈現(xiàn)出不同形狀的風(fēng)貌,不管我們?nèi)绾蔚臄[弄它,它永遠能展現(xiàn)出其最好的一面,人在學(xué)習(xí)、成長的環(huán)境中亦同,處逆境時應(yīng)下更大的決心,處順境時應(yīng)更謙虛的學(xué)習(xí),就像水的這種精神,在不同的環(huán)境中要能去適應(yīng)環(huán)境、調(diào)適自己,去學(xué)習(xí)不同的東西和感受,給自己的人生或企業(yè)的未來下一個目標,然后去做它,不能自我設(shè)限,自我定型,而是不管在什幺情形下,皆能去適應(yīng)它、去調(diào)適、去面對它、去克服這些環(huán)境,那終將有一番不同的成就。


            3.上波下靜:水在表面上雖是波浪起伏,但在水面下卻是平靜無波的。松下幸之助由此領(lǐng)悟出,事業(yè)就是要做扎根的工作,根扎得穩(wěn),事業(yè)才會穩(wěn)固,事業(yè)若建構(gòu)于沙灘之上,則波浪一來必毀于瞬間。因此,人或企業(yè)應(yīng)學(xué)習(xí)水的這種精神,努力的去做扎根的工作,懷著單一的思想,專注、持續(xù)的去學(xué)習(xí)、去做,一定會有所體會和成就,否則,隨波逐流,沒有定位,在三心二意與三分鐘熱度的情況下,終將一事無成。


            4.變化無窮:水存在著各種不同的型態(tài),例如以水、水蒸氣、雨水,冰塊等不同的方式存在著,它在不同情況下會有不同的轉(zhuǎn)化。松下幸之助又領(lǐng)悟出,做事業(yè)亦同,市場上的 變化無窮盡,遇到的人亦是形形色色的。但我們想想,為什幺有些事業(yè)做得那幺成功,有些人亦是那么成功?!成功的抉擇到底何在呢?關(guān)鍵在于自己。因為,市場和人生乃是變化無窮的,需要有彈性去適應(yīng),就如同人在雨天時就應(yīng)撐傘 ,企業(yè)在低潮、不景氣時,就應(yīng)調(diào)整策略,而非一成不變,僵化無以應(yīng)變。事實上,人總是喜歡趨吉避兇,但奇怪的是卻又喜歡聽消極的事,因此,人的思想,企業(yè)文化乃是在面對變化無窮的環(huán)境時,能否成功的關(guān)鍵,挑戰(zhàn)一定是有的,因難也一定是有的,但是成功的定律卻是不變的,如何識人,如何保持彈性便是在面對各種狀況時所應(yīng)具備的。


            5.滲透擴散:水具有滲透、擴散的能力,這是許多東西所無法辦到的能力。人生的成長、學(xué)習(xí)過程亦應(yīng)像水一樣,目標要不斷的提升和提高,才能讓自己有更多的收獲;就如同水一樣,潑到地上便馬上讓干的地面逐漸地變成濕的地面,不斷的滲透、擴散。而設(shè)定目標的式是目標須較自己的能力高一些,方能不斷自我挑戰(zhàn)和成長。因為如果你有登峰攀頂?shù)哪芰Γ瑸楹我涯抗馔A粼诎肷窖兀?/p>


            6.久儲必臭:水靜置放著,一段時日后自然會發(fā)臭。松下幸之助體會到他經(jīng)營這幺大的事業(yè),如果沒有讓自己再去學(xué)習(xí)、成長,那幺一定會落伍,所以須學(xué)習(xí)水一樣不斷的去流動,而非靜止在那邊。故學(xué)習(xí)是無止境的,惟有不斷的去學(xué)習(xí)、去努力,才有未來可言;對任一個想要成功的人或企業(yè)皆是如此,如果連松下幸之助這樣的經(jīng)營神都有這樣的體會,那我們更應(yīng)該努力的去學(xué)習(xí)。畢竟,人生或事業(yè)乃是不進則退的,因此須讓自己像水一樣,不斷的去流動才會有量,才不致“久儲臭”。


            7.急流澄清:水流很快的地方,水一定特別干凈;就如同瀑布之頭,因水流湍急,所以水一定是澄清的。松下幸之助亦因此體會到人生的成長不能像小的水流一樣慢慢地流,他說慢慢的流雖不致發(fā)臭,但卻不會澄澈,須像急流一樣,水的力量大,又會清淯。因此在人生、事業(yè)的成長上要給自己壓力,就如同急流而下的高速水流產(chǎn)生強大的力量一般,惟有透過自我要求,方能產(chǎn)生完成目標的力量。


            8.生存至寶:人若缺水則必?zé)o法生存,所以水是生存至寶。同樣地,我們在自己的人生中,亦是扮演著很重要的角色;我們每一個人都是造物主最大的奇跡,因為在世界上,我們每一個人都是獨一無二的,是沒有任何人可以取代的。因此,我們自己須下最大的決心,對于自己的人生和目標有時間、計劃性的努力,則必會完成自己的人生,成就一生的事業(yè)

          posted @ 2008-09-19 22:09 jadmin 閱讀(62) | 評論 (0)編輯 收藏

          JTable是Swing編程中很常用的控件,這里總結(jié)了一些常用方法以備查閱.

          一.創(chuàng)建表格控件的各種方式:
          1) 調(diào)用無參構(gòu)造函數(shù).
          JTable table = new JTable();
          2) 以表頭和表數(shù)據(jù)創(chuàng)建表格.
          Object[][] cellData = {{"row1-col1", "row1-col2"},{"row2-col1", "row2-col2"}};
          String[] columnNames = {"col1", "col2"};
          ???
          JTable table = new JTable(cellData, columnNames);
          3) 以表頭和表數(shù)據(jù)創(chuàng)建表格,并且讓表單元格不可改.
          String[] headers = { "表頭一", "表頭二", "表頭三" };
          Object[][] cellData = null;

          DefaultTableModel model = new DefaultTableModel(cellData, headers) {

          public boolean isCellEditable(int row, int column) {
          ??? return false;
          }
          };

          table = new JTable(model);
          二.對表格列的控制
          1) 設(shè)置列不可隨容器組件大小變化自動調(diào)整寬度.
          table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
          2) 限制某列的寬度.
          TableColumn firsetColumn = table.getColumnModel().getColumn(0);
          firsetColumn.setPreferredWidth(30);
          firsetColumn.setMaxWidth(30);
          firsetColumn.setMinWidth(30);
          3) 設(shè)置當(dāng)前列數(shù).
          DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
          int count=5;
          tableModel.setColumnCount(count);
          4) 取得表格列數(shù)
          int cols = table.getColumnCount();
          5) 添加列
          DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
          tableModel.addColumn("新列名");
          6) 刪除列
          table.removeColumn(table.getColumnModel().getColumn(columnIndex));// columnIndex是要刪除的列序號
          三.對表格行的控制
          1) 設(shè)置行高
          table.setRowHeight(20);
          2) 設(shè)置當(dāng)前航數(shù)
          DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
          int n=5;
          tableModel.setRowCount(n);
          3) 取得表格行數(shù)
          int rows = table.getRowCount();

          4) 添加表格行
          DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
          tableModel.addRow(new Object[]{"sitinspring", "35", "Boss"});
          5) 刪除表格行
          DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
          model.removeRow(rowIndex);// rowIndex是要刪除的行序號
          四.存取表格單元格的數(shù)據(jù)
          1) 取單元格數(shù)據(jù)
          DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
          String cellValue=(String) tableModel.getValueAt(row, column);// 取單元格數(shù)據(jù),row是行號,column是列號
          2) 填充數(shù)據(jù)到表格.
          注:數(shù)據(jù)是Member類型的鏈表,Member類如下:
          public class Member{
          ??? // 名稱
          ??? private String name;
          ???
          ??? // 年齡
          ??? private String age;
          ???
          ??? // 職務(wù)
          ??? private String title;
          }
          填充數(shù)據(jù)的代碼:
          public void fillTable(List<Member> members){
          DefaultTableModel tableModel = (DefaultTableModel) table
          .getModel();
          tableModel.setRowCount(0);// 清除原有行

          // 填充數(shù)據(jù)
          for(Member member:members){
          ??? String[] arr=new String[3];
          ??? arr[0]=member.getName();
          ??? arr[1]=member.getAge();
          ??? arr[2]=member.getTitle();
          ???
          ??? // 添加數(shù)據(jù)到表格
          ??? tableModel.addRow(arr);
          }

          // 更新表格
          table.invalidate();
          }
          2) 取得表格中的數(shù)據(jù)
          public List<Member> getShowMembers(){
          List<Member> members=new ArrayList<Member>();

          DefaultTableModel tableModel = (DefaultTableModel) table
          .getModel();

          int rowCount=tableModel.getRowCount();

          for(int i=0;i<rowCount;i++){
          ??? Member member=new Member();
          ???
          ??? member.setName((String)tableModel.getValueAt(i, 0));// 取得第i行第一列的數(shù)據(jù)
          ??? member.setAge((String)tableModel.getValueAt(i, 1));// 取得第i行第二列的數(shù)據(jù)
          ??? member.setTitle((String)tableModel.getValueAt(i, 2));// 取得第i行第三列的數(shù)據(jù)
          ???
          ??? members.add(member);
          }

          return members;
          }
          五.取得用戶所選的行
          1) 取得用戶所選的單行
          int selectRows=table.getSelectedRows().length;// 取得用戶所選行的行數(shù)
          DefaultTableModel tableModel = (DefaultTableModel) table.getModel();

          if(selectRows==1){
          int selectedRowIndex = table.getSelectedRow(); // 取得用戶所選單行

          .// 進行相關(guān)處理
          }
          2) 取得用戶所選的多行
          int selectRows=table.getSelectedRows().length;// 取得用戶所選行的行數(shù)
          DefaultTableModel tableModel = (DefaultTableModel) table.getModel();

          if(selectRows>1)
          int[] selRowIndexs=table.getSelectedRows();// 用戶所選行的序列

          for(int i=0;i<selRowIndexs.length;i++){
          ??? // 用tableModel.getValueAt(row, column)取單元格數(shù)據(jù)
          ??? String cellValue=(String) tableModel.getValueAt(i, 1);
          }
          }
          六.添加表格的事件處理
          view.getTable().addMouseListener(new MouseListener() {
          public void mousePressed(MouseEvent e) {
          ??? // 鼠標按下時的處理
          }

          public void mouseReleased(MouseEvent e) {
          ??? // 鼠標松開時的處理
          }

          public void mouseEntered(MouseEvent e) {
          ??? // 鼠標進入表格時的處理
          }

          public void mouseExited(MouseEvent e) {
          ??? // 鼠標退出表格時的處理
          }

          public void mouseClicked(MouseEvent e) {
          ??? // 鼠標點擊時的處理
          }
          });

          posted @ 2008-07-29 17:54 jadmin 閱讀(75) | 評論 (0)編輯 收藏

          MAGIC #1:
          ???????? 一個印度人發(fā)現(xiàn)的,沒有人可以在電腦的任何地方建立一個名為"CON"的文件夾 。微軟公司的全體職員沒有一個人能解釋這是為什么;
          這個的解釋是在Windows里不能以設(shè)備名來命名文件或文件夾,aux、com1、prn、con、nul等,這些都是系統(tǒng)保留的名稱

          MAGIC #2:
          ???????? 在電腦上照著這個做:1.新建一個空的文本文檔?????? 2.在里面輸入"Bush hid the facts"(不要引號,可復(fù)制進去)?? 3.關(guān)閉文檔,再打開文檔。 發(fā)生了什么?
          ???????? 這個我在做的時候試過把Bush改成其他英文名字,結(jié)果就會有點點不一樣,大家們探索一下吧!
          這個就不知道了

          MAGIC #3:
          ???????? 這是最酷也是最不可思議的一個。。。打開一個新的Word,在里面輸入=rand (200, 99) ,之后按Enter。。。。自己看吧@ 這個據(jù)說連比爾蓋茨也解釋不清楚@

          posted @ 2008-06-26 19:17 jadmin 閱讀(65) | 評論 (0)編輯 收藏

          第一步: 準備工作,建立個tabedit.html
          里面的內(nèi)容很簡單, 建立個5X5的表格, 代碼如下:

          posted @ 2008-06-25 23:05 jadmin 閱讀(76) | 評論 (0)編輯 收藏
          本程序有兩文件test.asp 和tree.asp 還有一些圖標文件。

          1. test.asp 調(diào)用類生成樹代碼如下

          <%@ Language=VBScript %>
          <html>
          <head>
          <link rel="stylesheet" href="tree.css">
          <title>tree</title>
          </head>
          <!-- #include file="tree.asp" -->
          <%

          '========================================
          ' BUILDING A TREE PROGRAMATICALLY
          '========================================
          ' This approach would be best suited for building
          ' dynamic trees using For..Next loops and such.

          Set MyTree2 = New Tree
          MyTree2.Top = 10
          MyTree2.Left = 10
          MyTree2.ExpandImage = "plus.gif"
          MyTree2.CollapseImage = "minus.gif"
          MyTree2.LeafImage = "webpage.gif"

          ' Notice the indentation used to reprensent the hierarchy
          Set Node1 = MyTree2.CreateChild("script")
          Set SubNode1 = Node1.CreateChild("server")
          Set secSubNode1 = SubNode1.CreateChild("html")
          secSubNode1.CreateChild "<A HREF=""http://127.0.0.1/"">asp</A>"
          secSubNode1.CreateChild "<A HREF=""http://127.0.0.1/"">php</A>"
          secSubNode1.CreateChild "<A HREF=""http://127.0.0.1/"">jsp</A>"

          Set SubNode2 = Node1.CreateChild("os")
          SubNode2.CreateChild "<A HREF=""#"">winnt</A>"
          SubNode2.CreateChild "<A HREF=""#"">win2000</A>"

          Set Node2 = MyTree2.CreateChild("Desktop")
          Node2.CreateChild "<A HREF=""#"">Area Code Lookup</A>"
          Node2.CreateChild "<A HREF=""#"">Arin Based Whois Search</A>"
          Node2.CreateChild "<A HREF=""#"">World Time Zone Map</A>"

          MyTree2.Draw()

          Set MyTree2 = Nothing

          %>

          </BODY>
          </HTML>


          2. tree.asp 類的定義 代碼如下

          <%

          Dim gblTreeNodeCount:gblTreeNodeCount = 1

          Class TreeNode

          Public Value
          Public ExpandImage
          Public CollapseImage
          Public LeafImage
          Public Expanded
          Private mszName
          Private mcolChildren
          Private mbChildrenInitialized

          Public Property Get ChildCount()
          ChildCount = mcolChildren.Count
          End Property

          Private Sub Class_Initialize()
          mszName = "node" & CStr(gblTreeNodeCount)
          gblTreeNodeCount = gblTreeNodeCount + 1

          mbChildrenInitialized = False
          Expanded = False
          End Sub

          Private Sub Class_Terminate()
          If mbChildrenInitialized And IsObject(mcolChildren) Then
          mcolChildren.RemoveAll()
          Set mcolChildren = Nothing
          End If
          End Sub

          Private Sub InitChildList()
          Set mcolChildren = Server.CreateObject("Scripting.Dictionary")
          mbChildrenInitialized = True
          End Sub

          Private Sub LoadState()
          If Request(mszName) = "1" Or Request("togglenode") = mszName Then
          Expanded = True
          End If
          End Sub

          Public Function CreateChild(szValue)

          If Not mbChildrenInitialized Then InitChildList()

          Set CreateChild = New TreeNode
          CreateChild.Value = szValue
          CreateChild.ExpandImage = ExpandImage
          CreateChild.CollapseImage = CollapseImage
          CreateChild.LeafImage = LeafImage

          mcolChildren.Add mcolChildren.Count + 1, CreateChild

          End Function

          Public Sub Draw()

          LoadState()

          Response.Write "<table border=""0"">" & vbCrLf
          Response.Write "<tr><td>" & vbCrLf

          If Expanded Then
          Response.Write "<a href=""javascript:collapseNode('" & mszName & "')""><img src=""" & CollapseImage & """ border=""0""></a>" & vbCrLf
          ElseIf Not mbChildrenInitialized Then
          Response.Write "<img src=""" & LeafImage & """ border=0>" & vbCrLf
          Else
          Response.Write "<a href=""javascript:expandNode('" & mszName & "')""><img src=""" & ExpandImage & """ border=""0""></a>" & vbCrLf
          End If

          Response.Write "</td>" & vbCrLf
          Response.Write "<td>" & Value & "</td></tr>" & vbCrLf

          If Expanded Then
          Response.Write "<input type=""hidden"" name=""" & mszName & """ value=""1"">" & vbCrLf

          If mbChildrenInitialized Then
          Response.Write "<tr><td> </td>" & vbCrLf
          Response.Write "<td>" & vbCrLf

          For Each ChildNode In mcolChildren.Items
          ChildNode.Draw()
          Next

          Response.Write "</td>" & vbCrLf
          Response.Write "</tr>" & vbCrLf
          End If
          End If

          Response.Write "</table>" & vbCrLf

          End Sub

          End Class


          Class Tree

          Public Top
          Public Left
          Public ExpandImage
          Public CollapseImage
          Public LeafImage
          Private mszPosition
          Private mcolChildren

          Public Property Let Absolute(bData)
          If bData Then mszPosition = "absolute" Else mszPosition = "relative"
          End Property

          Public Property Get Absolute()
          Absolute = CBool(mszPosition = "absolute")
          End Property

          Private Sub Class_Initialize()
          Set mcolChildren = Server.CreateObject("Scripting.Dictionary")
          mnTop = 0
          mnLeft = 0
          mszPosition = "absolute"
          End Sub

          Private Sub Class_Terminate()
          mcolChildren.RemoveAll()
          Set mcolChildren = Nothing
          End Sub

          Public Function CreateChild(szValue)

          Set CreateChild = New TreeNode

          CreateChild.Value = szValue
          CreateChild.ExpandImage = ExpandImage
          CreateChild.CollapseImage = CollapseImage
          CreateChild.LeafImage = LeafImage

          mcolChildren.Add mcolChildren.Count + 1, CreateChild

          End Function

          Public Sub LoadTemplate(szFileName)
          Dim objWorkingNode
          Dim colNodeStack
          Dim fsObj, tsObj
          Dim szLine
          Dim nCurrDepth, nNextDepth

          Set colNodeStack = Server.CreateObject("Scripting.Dictionary")
          Set fsObj = CreateObject("Scripting.FileSystemObject")
          Set tsObj = fsObj.OpenTextFile(szFileName, 1)

          nCurrDepth = 0
          While Not tsObj.AtEndOfLine
          nNextDepth = 1
          szLine = tsObj.ReadLine()

          If nCurrDepth = 0 Then
          Set objWorkingNode = CreateChild(Trim(szLine))
          nCurrDepth = 1
          Else
          While Mid(szLine,nNextDepth,1) = vbTab Or Mid(szLine,nNextDepth,1) = " "
          nNextDepth = nNextDepth + 1
          WEnd

          If nNextDepth > 1 Then szLine = Trim(Mid(szLine,nNextDepth))

          If szLine <> "" Then
          If nNextDepth > nCurrDepth Then
          If colNodeStack.Exists(nCurrDepth) Then
          Set colNodeStack.Item(nCurrDepth) = objWorkingNode
          Else
          colNodeStack.Add nCurrDepth, objWorkingNode
          End If

          Set objWorkingNode = objWorkingNode.CreateChild(szLine)

          nCurrDepth = nCurrDepth + 1
          ElseIf nNextDepth <= nCurrDepth Then

          If nNextDepth > 1 Then

          nNextDepth = nNextDepth - 1
          While Not colNodeStack.Exists(nNextDepth) And nNextDepth > 1
          nNextDepth = nNextDepth - 1
          WEnd

          Set objWorkingNode = colNodeStack.Item(nNextDepth)
          Set objWorkingNode = objWorkingNode.CreateChild(szLine)

          nNextDepth = nNextDepth + 1
          Else
          Set objWorkingNode = CreateChild(szLine)
          End If

          nCurrDepth = nNextDepth
          End If
          End If

          End If
          WEnd

          tsObj.Close()
          Set tsObj = Nothing
          Set fsObj = Nothing

          colNodeStack.RemoveAll()
          Set colNodeStack = Nothing

          End Sub


          Public Sub Draw()

          AddClientScript()

          Response.Write "<div id=""treectrl"" style=""left: " & Left & "px; top: " & Top & "px; position: " & mszPosition & ";"">" & vbCrLf
          Response.Write "<form name=""treectrlfrm"" action=""" & Request.ServerVariables("SCRIPT_NAME") & """ method=""get"">" & vbCrLf
          Response.Write "<table border=""0"">" & vbCrLf
          Response.Write "<tr><td>" & vbCrLf

          For Each ChildNode In mcolChildren.Items
          ChildNode.Draw()
          Next

          Response.Write "</td></tr>" & vbCrLf
          Response.Write "</table>" & vbCrLf

          Response.Write "<input type=""hidden"" name=""togglenode"" value="""">" & vbCrLf
          Response.Write "</form>" & vbCrLf
          Response.Write "</div>" & vbCrLf

          End Sub

          Private Sub AddClientScript()
          %>
          <script language="JavaScript">

          function expandNode(szNodeName)
          {
          if(document.layers != null) {
          document.treectrl.document.treectrlfrm.togglenode.value = szNodeName;
          document.treectrl.document.treectrlfrm.submit();
          }
          else {
          document.all["treectrlfrm"].togglenode.value = szNodeName;
          document.all["treectrlfrm"].submit();
          }
          }

          function collapseNode(szNodeName)
          {
          if(document.layers != null) {
          document.treectrl.document.treectrlfrm.elements[szNodeName].value = -1;
          document.treectrl.document.treectrlfrm.submit();
          }
          else {
          document.treectrlfrm.elements[szNodeName].value = -1;
          document.treectrlfrm.submit();
          }
          }

          </script>
          <%
          End Sub

          End Class

          %>
          posted @ 2008-06-23 15:04 jadmin 閱讀(106) | 評論 (0)編輯 收藏
            盡管對于現(xiàn)如今的帶寬來說,網(wǎng)頁文件那僅以K來算的大小實在是微不足道,但如何將這以K來計算的網(wǎng)頁文件精簡到最小還是網(wǎng)頁設(shè)計師們所應(yīng)該考慮的問題之一。

            眾所周之,在不影響整個網(wǎng)頁構(gòu)架與功能的情況下,網(wǎng)頁文件越小越好,因為更小的網(wǎng)頁文件有利于瀏覽器對網(wǎng)頁的解釋時間縮到更短,自然訪客也就不用面臨等待網(wǎng)頁緩慢呈現(xiàn)的煩躁了,這一點對于那些帶寬少網(wǎng)速慢的用戶猶為明顯。試想一下,你會是希望打開一個網(wǎng)站的時候整個站點馬上呈現(xiàn)在你面前呢?還是喜歡花上十幾秒甚至是幾分釧來看整個站點一點一點的被瀏覽器解釋出來呢?

            在Table布局的時代,代碼無數(shù)次的隨著表格在頁面里重復(fù),致使整個網(wǎng)頁文件變得臃腫無比,代碼的可讀性也降到最低,瀏覽器的解釋時間自然也增加了不少。而自從DIV+CSS的布局替代Table布局之后,這一切都得到了極大的改善,讓Table回歸到它原本用于顯示數(shù)據(jù)的位置上去,而布局就交給DIV+CSS來做,這樣代碼的可讀性與復(fù)用性都得到了提高,而DIV +CSS更為重要的一點就是將網(wǎng)頁文件的表現(xiàn)與結(jié)構(gòu)區(qū)分開來,再也不用為了表現(xiàn)而去改動整個網(wǎng)頁文件的結(jié)構(gòu)了。

            即使DIV+CSS的布局方式將以前Table布局時代碼的臃腫降到了最低,但對于網(wǎng)頁設(shè)計師來說,如何將網(wǎng)頁文件的大小控制到最小是永遠值得探索和追求的一個問題。

            看如下一段代碼:

            #header {
             margin-top:10px;
             margin-right:15px;
             margin-bottom:10px;
             margin-left:15px;
             backgroung-color:#333333;
             background-images:url(Images/header.jpg);
             }


            這樣的一段CSS代碼,在條理上很清晰,結(jié)構(gòu)也很明了,可讀性很強,可是這樣的一段代碼卻沒有做精簡,也就是說它是最原始的CSS代碼,下面看精簡后的代碼:

            #header {
             margin:10px 15px;
             backgroung:#333 url(Images/header.jpg);
             }


            在CSS中有復(fù)合屬性這一說法,也就是說可以將很多屬性參數(shù)整合在一起的,比如說上面的“margin-top; margin-right; margin-bottom; margin-left;”可以整合成一個“margin”屬性,然后為其配上參數(shù)。
            

            通過這一點,我們就可以在原始CSS代碼的基本上將代碼進一步的精簡。而且這樣寫的結(jié)構(gòu)也合理,可讀性也同樣強。可是對于要精簡到徹底來說,這還不夠。為了讓這段CSS代碼的結(jié)構(gòu)明了,我們用上了空格換行等占用空間的東西,如果將這些占用空間的去掉呢?

            #header{margin:10px 15px;background:#333 url(Images/header.jpg);}


            只這一句就替代了上面的一段代碼,這樣代碼就已經(jīng)精簡到了最大化,當(dāng)然,并不推薦所有人都這樣寫,這樣寫的CSS代碼在可讀性上要遠遠差于段落式的寫法,除非你對自己寫的代碼有完全掌握的信心。

            在同一個站點的CSS文件中,不可避免的會出現(xiàn)不同的ID或Class卻有一部分相同的屬性,如果將這些ID或Class逐個分開來寫的話,在CSS文件里無疑會生成重復(fù)代碼,而我們要盡量的精簡CSS文件的大小,那么“消滅”這部分重復(fù)的代碼就變得勢在必行。
            

            看下面一段CSS代碼:

            #header{margin:10px 15px;background:#333 url(Images/header.jpg);}
            #content{margin:10px 15px;padding:10px;background:#999;}
            #copyright{margin:10px 15px;border:1px solid #f00;}


            在上面的三個ID中都有一個相同的屬性“margin:10px 15px;”,如果就這樣分開來寫的話,這三個ID之間將保持各自獨立的關(guān)系,但卻生成了重復(fù)的代碼,而我們可以將其寫成如下格式:

            #header,#content,#copyright{margin:10px 15px;}
            #header{background:#333 url(Images/header.jpg);}
            #content{padding:10px;background:#999;}
            #copyright{border:1px solid #f00;}



            將上面的ID換成Class也是一樣的。這樣寫我們就成功的將重復(fù)代碼“消滅”掉了。但是如果這里具有相同的屬性的ID或Class過多的話,難免會造成代碼可讀性降到很低很低,所以除此之外當(dāng)具有相同屬性的都是Class時還有另外的一種寫法:


            .main{margin:10px 15px;}
            .header{background:#333 url(Images/header.jpg);}
            .content{padding:10px;background:#999;}
            .copyright{border:1px solid #f00;}


            當(dāng)然這種寫法時,調(diào)用時的寫法也與平常不一樣。



            這樣的寫法同樣可以達到效果,并且也不會再怕具有相同屬性的Class多而造成代碼可讀性差的問題,但值得注意的一點就是,這種寫法對于ID是無效的,不管其中是存在一個ID或者全部都是ID,都將造成這段代碼的無效。
          posted @ 2008-06-23 15:01 jadmin 閱讀(79) | 評論 (0)編輯 收藏
          css對文字的布局上沒有靠容器底部對齊的參數(shù),目前使用的一個不錯的方法也比較好.就是用position屬性來解決,看下面的代碼,用position的相對和絕對定位功能也輕松的實現(xiàn)了,文字靠近div低部對齊,并且靠近的距離還可以精確到像素,自己可以調(diào)節(jié),是不是很不錯呢?

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
          "http://www.w3.org/TR/html4/loose.dtd">
          <html>
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
          <title>無標題文檔</title>
          <style type="text/css">
          #txt{

          height:300px;
          width:300px;
          border:1px solid #333333;
          text-align:center;
          position:relative

          }
          #txt p{
          position:absolute;
          bottom:0px;
          padding:0px;
          margin:0px
          }
          </style>
          </head>

          <body>
          <div id=txt>
          <p>aadsad</p>
          </div>
          </body>
          </html>

          posted @ 2008-06-23 15:00 jadmin 閱讀(104) | 評論 (0)編輯 收藏

          apache的commons項目下有個email子項目,它對JavaMail API進行了封裝,用起來特變方便。在開始之前,需要做以下準備:

          1、JavaMail API

          添加JavaMail API里的mail包到CLASSPATH里,JavaMail API下載地址:http://java.sun.com/products/javamail/downloads/index.html

          2、commons email

          下載地址:http://www.apache.org/dist/commons/email/

          工程目錄結(jié)構(gòu)如下:

          以下給出兩個簡單示例程序

          // SendMail.java 使用SimpleEmail發(fā)郵件

          package com.apache.commons.email.demo;

          import org.apache.commons.mail.SimpleEmail;

          public class SendMail
          {
          ??? public static void main ( String[] arg ) throws Exception
          ??? {
          ??? // 使用SimpleEmail對于中文內(nèi)容,可能會產(chǎn)生亂碼
          ??????? SimpleEmail email = new SimpleEmail ( );

          ??????? // SMTP服務(wù)器名
          ??????? email.setHostName ( "smtp.163.com" );
          ??????? // 登陸郵件服務(wù)器的用戶名和密碼
          ??????? email.setAuthentication ( "peki", "123456" );
          ??????? // 接收人
          ??????? email.addTo ( "jstio@qq.com", "曦勤" );
          ??????? // 發(fā)送人
          ??????? email.setFrom ( "peki@163.com", "小陳" );
          ??????? // 標題
          ??????? email.setSubject ( "Test message" );
          ??????? // 郵件內(nèi)容
          ??????? email.setMsg ( "This is a simple test of commons-email<br>我是小陳" );
          ??????? // 發(fā)送
          ??????? email.send ( );
          ???????
          ??????? System.out.println ( "Send email successful!" );

          ??? }
          }

          收信結(jié)果如下:

          This is a simple test of commons-email<br>????

          有亂碼產(chǎn)生,并且html內(nèi)容沒有正常顯示

          // MailSender.java?? 使用HtmlEmail發(fā)郵件

          package com.apache.commons.email.demo;

          import org.apache.commons.mail.EmailException;
          import org.apache.commons.mail.HtmlEmail;

          public class MailSender {


          public static void main(String[] args) {
          ?? // 不要使用SimpleEmail,會出現(xiàn)亂碼問題
          ?? HtmlEmail email = new HtmlEmail();
          ?? try {
          ??? // 這里是SMTP發(fā)送服務(wù)器的名字:,163的如下:
          ??? email.setHostName("smtp.163.com");
          ??? // 字符編碼集的設(shè)置
          ??? email.setCharset("gbk");
          ??? // 收件人的郵箱
          ??? email.addTo("jstio@qq.com");
          ??? // 發(fā)送人的郵箱
          ??? email.setFrom("peki@163.com", "小陳");
          ??? // 如果需要認證信息的話,設(shè)置認證:用戶名-密碼。分別為發(fā)件人在郵件服務(wù)器上的注冊名稱和密碼
          ??? email.setAuthentication("peki", "123456");
          ??? email.setSubject("下午3:00會議室討論,請準時參加");
          ??? // 要發(fā)送的信息,由于使用了HtmlEmail,可以在郵件內(nèi)容中使用HTML標簽
          ??? email.setMsg("下午3:00會議室討論,請準時參加<BR>呵呵~!");
          ??? // 發(fā)送
          ??? email.send();
          ???
          ??? System.out.println ( "郵件發(fā)送成功!" );
          ?? } catch (EmailException e) {
          ??? // TODO Auto-generated catch block
          ??? e.printStackTrace();
          ??? System.out.println ( "郵件發(fā)送失敗!" );
          ?? }

          }

          }

          收信結(jié)果如下:

          下午3:00會議室討論,請準時參加
          呵呵~!
          沒有產(chǎn)生亂碼,html內(nèi)容正常顯示
          以上程序盡供參考,如需要在開發(fā)中使用,還得深入研究
          posted @ 2008-06-21 22:12 jadmin 閱讀(3477) | 評論 (0)編輯 收藏

          1、我們在做驗證碼的時候往往由于要反作弊,驗證有時故意加入多的干擾因素,這時驗證碼顯示不很清楚,用戶經(jīng)常輸入錯誤。這樣不但要重新刷新頁面,導(dǎo)致用戶沒有看清楚驗證碼而重填而不是修改,而且如果沒有用session保存下用戶輸入的其它數(shù)據(jù)的話(如姓名),用戶剛剛輸入的內(nèi)容也不存在了,這樣給用戶造成不好的體驗。

          2、本例在原有驗證方式基礎(chǔ)之上增加一段js,通過xmlhttp來獲取返回值,以此來驗證是否有效,這樣即使用戶瀏覽器不支持js,也不會影響他的正常使用了。

          3、為了防止作弊,當(dāng)用戶連接3次輸入錯誤時則重載一下圖片,這樣也利于用戶因為圖片上的驗證碼辨認不清而使其終無法輸入正確。

          4、本例還特別適合檢驗用戶名是否有效,只要從后臺做個sql查詢,返回一個值或是xml即可。(這種例子太多 ,就在此不贅述了)。

          5、本例的優(yōu)點在于非常方便用戶輸入,而且減少對服務(wù)器端的請求,可以說既改善用戶體驗而且略會節(jié)省帶寬成本,但相應(yīng)地要在頁面上增加一段JavaScript代碼,在目前網(wǎng)速越來越快人們要求便捷舒適的今天,似乎我們更應(yīng)注意提供給用戶良好的使用感受。

          代碼如下:

          1、img.jsp,輸入主頁面

          posted @ 2008-06-18 21:29 jadmin 閱讀(187) | 評論 (1)編輯 收藏
          僅列出標題
          共50頁: First 上一頁 15 16 17 18 19 20 21 22 23 下一頁 Last 
          主站蜘蛛池模板: 开远市| 彰武县| 包头市| 巴林左旗| 福贡县| 阳东县| 龙井市| 左贡县| 普宁市| 六盘水市| 霍山县| 广宁县| 白水县| 玛纳斯县| 金山区| 镇江市| 桐庐县| 南昌县| 绥芬河市| 滦平县| 玉龙| 五家渠市| 清涧县| 洛宁县| 永丰县| 富源县| 宝丰县| 会宁县| 桂阳县| 乌海市| 孝昌县| 时尚| 资兴市| 阿勒泰市| 垣曲县| 竹溪县| 璧山县| 柳州市| 兰州市| 西宁市| 屏东县|