溫馨提示:您的每一次轉載,體現了我寫此文的意義!!!煩請您在轉載時注明出處http://www.aygfsteel.com/sxyx2008/謝謝合作!!!

          雪山飛鵠

          溫馨提示:您的每一次轉載,體現了我寫此文的意義!!!煩請您在轉載時注明出處http://www.aygfsteel.com/sxyx2008/謝謝合作!!!

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            215 Posts :: 1 Stories :: 674 Comments :: 0 Trackbacks

          #

               摘要:   此文檔中除MySQL 存儲過程參數類型(in、out、inout)小節來自網上,其余均為本人原創,歡迎大家轉載,如有不足,請指教。 由于是在word中編輯好拷貝過來的所以字體較小大家點此下載電子版文檔    MySQL存儲過程 1.1         CREATE &nb...  閱讀全文
          posted @ 2009-11-24 17:12 雪山飛鵠 閱讀(116100) | 評論 (30)編輯 收藏

                  log4j是一款很強大的日志記錄工具,使用起來十分靈活,功能也十分強大.本人在開發中喜歡將日志以HTML的形式輸出,該種形式輸出的日志比較清晰,在閱讀的時候可以達到事半功倍的效果
          貼出log4j的配置文件
          log4j.properties

          #All level less than INFO will be logged
          log4j.rootLogger
          =INFO, A1

          #A1 is the output device
          log4j.appender.A1
          =org.apache.log4j.FileAppender
          log4j.appender.A1.File
          =e:/log4j.htm 

          #use html layout
          log4j.appender.A1.layout
          =org.apache.log4j.HTMLLayout
          生成的日志文件:
          posted @ 2009-11-18 11:49 雪山飛鵠 閱讀(3153) | 評論 (1)編輯 收藏

          在spring開發中收集了幾個常見的異常
          (1)org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class

          'com.microsoft.sqlserver.jdbc.SQLServerDriver'

                答:sqljdbc.jar

          (2)java.lang.ClassNotFoundException: org.springframework.ejb.config.JeeNamespaceHandler

               答:spring-remoting.jar

          (3)java.lang.ClassNotFoundException: org.springframework.scripting.config.LangNamespaceHandler   

               答:spring-support.jar

          (4)java.lang.ClassNotFoundException: org.springframework.transaction.config.TxNamespaceHandler  

               答:spring-dao.jar

          (5)java.lang.ClassNotFoundException: org.springframework.aop.config.AopNamespaceHandler

            答:spring-aop.jar

          posted @ 2009-11-16 15:18 雪山飛鵠 閱讀(1656) | 評論 (1)編輯 收藏

               摘要: applicationContext.xml 文件: <bean id="dataSource"         class="com.mchange.v2.c3p0.ComboPooledDataSource"         destroy-method="clo...  閱讀全文
          posted @ 2009-11-16 15:08 雪山飛鵠 閱讀(8228) | 評論 (2)編輯 收藏

          //設置jframe無邊框,無標題
            this.setUndecorated(true);
          posted @ 2009-11-09 12:00 雪山飛鵠 閱讀(1991) | 評論 (0)編輯 收藏

           首先解釋兩個概念,何為序列化?何為反序列化?

          序列化:將對象轉化成流的過程稱為序列化

          反序列化:將流轉化成對象的過程稱之為反序列化

          序列化與反序列化必須遵守的原則

          a)         Java對象

          java中要想使一個java對象可以實現序列化與反序列化,必須讓該類實現java.io.Serializable接口

          java.io.Serializable接口定義如下:

          publicinterface Serializable {

          }

          從上述定義中可以看到該接口中未定義任何方法,這大大的簡化了開發者

          b)      序列化主要依賴java.io.ObjectOutputStream,該類對java.io.FileOutputStream進一步做了封裝,這里主要使用ObjectOutputStream類的writeObject()方法實現序列化功能

          Demo:

          /**

               *將對象序列化到磁盤文件中

               *@paramo

               *@throwsException

               */

              publicstaticvoid writeObject(Object o) throws Exception{

                 File f=new File("d:""user.tmp");

                 if(f.exists()){

                     f.delete();

                 }

                 FileOutputStream os=new FileOutputStream(f);

                 //ObjectOutputStream 核心類

                 ObjectOutputStream oos=new ObjectOutputStream(os);

                 oos.writeObject(o);

                 oos.close();

                 os.close();

              }

          c)      反序列化主要依賴java.io.ObjectInputStream,該類對java.io.InputStream進一步做了封裝,這里主要使用ObjectInputStream類的readObject()方法實現序列化功能

          Demo:

          /**

               *反序列化,將磁盤文件轉化為對象

               *@paramf

               *@return

               *@throwsException

               */

              publicstatic User readObject(File f) throws Exception{

                 InputStream is=new FileInputStream(f);

                 //ObjectOutputStream 核心類

                 ObjectInputStream ois=new ObjectInputStream(is);

                 return (User)ois.readObject();

              }

          貼出完整的demo

          Java對象:

          package com.io.bean;

          import java.io.Serializable;

          publicclass User implements Serializable {

             

              privateintuserId;

              private String userName;

              private String userSex;

              privateintuserAge;

              publicint getUserAge() {

                 returnuserAge;

              }

              publicvoid setUserAge(int userAge) {

                 this.userAge = userAge;

              }

              publicint getUserId() {

                 returnuserId;

              }

              publicvoid setUserId(int userId) {

                 this.userId = userId;

              }

              public String getUserName() {

                 returnuserName;

              }

              publicvoid setUserName(String userName) {

                 this.userName = userName;

              }

              public String getUserSex() {

                 returnuserSex;

              }

              publicvoid setUserSex(String userSex) {

                 this.userSex = userSex;

              }

              @Override

              public String toString() {

                 returnthis.getUserId() + "   " + this.getUserName() + "   "

                        + this.getUserSex() + "    " + this.getUserAge();

              }

          }

          序列化與反序列化

          package com.io.test;

          import java.io.File;

          import java.io.FileInputStream;

          import java.io.FileOutputStream;

          import java.io.InputStream;

          import java.io.ObjectInputStream;

          import java.io.ObjectOutputStream;

          import com.io.bean.User;

          publicclass TestSerializable {

              /**

               *將對象序列化到磁盤文件中

               *@paramo

               *@throwsException

               */

              publicstaticvoid writeObject(Object o) throws Exception{

                 File f=new File("d:""user.tmp");

                 if(f.exists()){

                     f.delete();

                 }

                 FileOutputStream os=new FileOutputStream(f);

                 //ObjectOutputStream 核心類

                 ObjectOutputStream oos=new ObjectOutputStream(os);

                 oos.writeObject(o);

                 oos.close();

                 os.close();

              }

             

              /**

               *反序列化,將磁盤文件轉化為對象

               *@paramf

               *@return

               *@throwsException

               */

              publicstatic User readObject(File f) throws Exception{

                 InputStream is=new FileInputStream(f);

                 //ObjectOutputStream 核心類

                 ObjectInputStream ois=new ObjectInputStream(is);

                 return (User)ois.readObject();

              }

             

             

              publicstaticvoid main(String[] args) throws Exception{

                

                 /*****************將對象序列化***************/

                

              /* 

                  User user=new User();

                 user.setUserId(1);

                 user.setUserName("張藝謀");

                 user.setUserSex("");

                 user.setUserAge(50);

                 TestSerializable.writeObject(user);

              */

                

                 /*****************將對象序反列化***************/

                

                 User user=TestSerializable.readObject(new File("d:""user.tmp"));

                 System.out.println(user);

              }

          }

          posted @ 2009-11-09 10:43 雪山飛鵠 閱讀(38983) | 評論 (7)編輯 收藏

           

          package com.fengjing.javamail;

          import java.util.Date;
          import java.util.Properties;

          import javax.activation.DataHandler;
          import javax.activation.FileDataSource;
          import javax.mail.Address;
          import javax.mail.Message;
          import javax.mail.Multipart;
          import javax.mail.Session;
          import javax.mail.Transport;
          import javax.mail.Message.RecipientType;
          import javax.mail.internet.InternetAddress;
          import javax.mail.internet.MimeBodyPart;
          import javax.mail.internet.MimeMessage;
          import javax.mail.internet.MimeMultipart;

          import sun.misc.BASE64Encoder;

          public class SendMail {

           
          public static void main(String[] args) throws Exception{

            Properties props
          =new Properties();
            
          //設置采用郵箱認證
            props.setProperty("mail.smtp.auth""true");
            
          //獲得session
            Session session=Session.getInstance(props);
            
          //設置調試信息
            session.setDebug(true);
            
          //創建message
            Message message=new MimeMessage(session);
            
            
          //對message做些配置
            
          //郵件主題
            message.setSubject("這是用javamail寫得帶附件的郵件");
            
          //郵件發送人
            message.setFrom(new InternetAddress("*****@163.com"));
            
          //發送時間
            message.setSentDate(new Date());
            
          //設置收件人
            /**
             * RecipientType.TO 指定郵件發送類型
             * RecipientType.TO 直接發送
             * RecipientType.CC 抄送
             * RecipientType.BCC 暗送
             * new Address[]{} 郵件接收人列表
             
          */
            message.addRecipients(RecipientType.TO, 
          new Address[]{
              
          new InternetAddress("*******@sohu.com")
            });
            
            
          //使用message中的setText()方法發送文本文件
            
          //message.setText("郵件正文");
            /**
             * "<span style='color:red'>這是用javamail發送的郵件正文</span>" 郵件內容
             * "text/html;charset=utf-8" 指定編碼
             
          */
            
          //message.setContent("<span style='color:red'>這是用javamail發送的郵件正文</span>", "text/html;charset=utf-8");
            
            
          /**********創建帶附件的郵件********************/
            
            
          //創建Multipart對象,最后將Multipart對象添加到message中
            Multipart multipart=new MimeMultipart();
            
          //創建MimeBodyPart對象
            MimeBodyPart mimeBodyPart=new MimeBodyPart();
            
          //設置附件內容
            FileDataSource fds=new FileDataSource("d:\\5.jpg");
            
          //設置附件的名字
            
            
          /********************處理附件中文名亂碼***************************/
           
            sun.misc.BASE64Encoder enc 
          = new sun.misc.BASE64Encoder(); 
            
          //System.out.println(enc.encode("徐熙媛.jpg".getBytes()));
            mimeBodyPart.setFileName("=?GB2312?B?"+enc.encode("徐熙媛.jpg".getBytes())+"?=");
           
            
          //處理附件
            mimeBodyPart.setDataHandler(new DataHandler(fds));
            
            multipart.addBodyPart(mimeBodyPart);
            
            
          /********設置郵件正文內容********/
            
            
          //新創建MimeBodyPart對象,否則正文將會覆蓋掉附件內容
            mimeBodyPart=new MimeBodyPart();
            
          //設置郵件正文內容
            mimeBodyPart.setContent("<span style='color:red'>這是用javamail發送的郵件正文</span>""text/html;charset=utf-8");
            
          //將MimeBodyPart添加到Multipart中
            multipart.addBodyPart(mimeBodyPart);
           
            
          //將multipart添加到message中
            message.setContent(multipart);

            
          //創建傳輸對象
            Transport transport=session.getTransport("smtp");
            
          //配置連接信息
            /**
             * smtp.sohu.com 指定主機
             * 25 端口號
             * sxyx 用戶名
             * ******** 密碼
             
          */
            transport.connect(
          "smtp.sohu.com"25"sxyx""*******");
            
          //發送消息
            /**
             * message 消息內容
             * message.getAllRecipients() 收件人地址  
             * 返回
             * message.addRecipients()方法中指定的郵件接收人列表
             
          */
            transport.sendMessage(message, message.getAllRecipients());
            transport.close();
           }

          }

          文中提到的base64編碼其實可以替換為cos.jar(既歐萊里公司提供的文件上傳包)
          posted @ 2009-11-05 15:15 雪山飛鵠 閱讀(793) | 評論 (0)編輯 收藏

                 鑒于此文圖片丟失,影響閱讀質量,特上傳此博文word文檔,廣大網友可點此下載word文檔

          呵呵,最近一直在看struts2方面的資料。大家都知道web開發過程中,我們經常要處理客戶端(用戶)提交過來的數據(增加記錄)及后臺數據庫查詢出來的數據(修改記錄),這里難免會出現一些不符合要求的數據,我們稱為“臟數據”。這里就借助于struts2提供的驗證框架來做數據的驗證(其實它依賴的還是webwork)

          在使用struts2或者說webwork的驗證框架時必須遵守以下幾點:

          在這里不要管為什么,人家就是這么約定的,我們只要照做就是了。除非你是科研人員,如果僅僅是項目需要,建議大家還是不要在這上面花過多的時間,不值得。

          在對應的Action的包下(必須跟該Action在同一個目錄)創建驗證框架規則(.xml文件)

          xml文件的命名必須遵守如下規則:

          1)         該文件必須跟該對應的Action在同一個目錄

          2)         Action的名字---對應Action中的方法名(execute方法除外)-validation.xml

          如:

          如圖所示該文件名由三部分組成:

          第一部分:Action的類名

          第二部分:Action中的方法名

          第三部分:validation.xml(固定)

                   這三部分之間用橫線連接-

                   驗證規則(EmployeeAction-updateEmployee-validation.xml)內容

                   因為Action是基于模型驅動的即在Action引用了對象模型,所以在寫驗證規則的時候字段屬性為Action中對象模型名.具體的屬性()

          Action中的引用關系

          EmployeeAction-updateEmployee-validation.xml中的配置內容

          詳細參看EmployeeAction-updateEmployee-validation.xml中的配置

          <?xml version="1.0" encoding="UTF-8"?>

          <!DOCTYPE validators PUBLIC

                 "-//OpenSymphony Group//XWork Validator 1.0.2//EN"

                 "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">

                 <validators>

                     <field name="employee.empName">

                         <field-validator type="requiredstring">

                             <message>雇員姓名不能為空</message>

                         </field-validator>

                     </field>

                       <field name="employee.age">

                         <field-validator type="required">

                             <message>雇員年齡不能為空</message>

                         </field-validator>

                     </field>

                    <field name="employee.sex">

                         <field-validator type="requiredstring">

                             <message>雇員性別不能為空</message>

                         </field-validator>

                     </field>

                     <field name="employee.context">

                         <field-validator type="requiredstring">

                             <message>雇員備注信息不能為空</message>

                         </field-validator>

                     </field>

                 </validators>

          <field name="驗證字段(Action中對象模型名字.具體的屬性)">

                         <field-validator type="requiredstring">   驗證規則

                             <message>驗證出錯信息</message>

                         </field-validator>

          </field>

          最后千萬別忘了在struts.xml文件中一定要配置一個結果為input的轉向

          否則驗證失敗時會出現如下錯誤:


          鑒于此文圖片丟失,影響閱讀質量,特上傳此博文word文檔,廣大網友可點此下載word文檔

          posted @ 2009-10-23 17:42 雪山飛鵠 閱讀(3701) | 評論 (6)編輯 收藏

               摘要:   Struts2文件上傳 大家都知道struts2對文件上傳做了很好的封裝,使文件上傳不再那么恐怖。這里面struts2的文件上傳主要依賴的是org.apache.struts2.interceptor.FileUploadInterceptor這個攔截器 關于這個攔截器我不想做過多的研究,這里主要討論的是該攔截器里面定義的幾個關于文件上傳的重要屬性。 ...  閱讀全文
          posted @ 2009-10-22 09:35 雪山飛鵠 閱讀(9514) | 評論 (3)編輯 收藏

               摘要:   Struts2文件上傳一些小細節 大家都知道struts2對文件上傳做了很好的封裝,使文件上傳不再那么恐怖。這里面struts2的文件上傳主要依賴的是org.apache.struts2.interceptor.FileUploadInterceptor這個攔截器 關于這個攔截器我不想做過多的研究,這里主要討論的是該攔截器里面定義的幾個關于文件上傳的重要屬性。 ...  閱讀全文
          posted @ 2009-10-21 10:33 雪山飛鵠 閱讀(602) | 評論 (0)編輯 收藏

          僅列出標題
          共22頁: First 上一頁 14 15 16 17 18 19 20 21 22 下一頁 
          主站蜘蛛池模板: 玉龙| 锡林浩特市| 揭西县| 宝丰县| 甘孜县| 金坛市| 集安市| 瑞昌市| 马鞍山市| 通海县| 望城县| 明溪县| 科技| 施甸县| 临潭县| 安达市| 桐柏县| 米易县| 玛曲县| 瓮安县| 磐安县| 安达市| 永康市| 石林| 余庆县| 潼南县| 广丰县| 青海省| 桐城市| 安顺市| 焦作市| 辛集市| 贵德县| 肇东市| 江口县| 哈密市| 木里| 庐江县| 阳新县| 咸阳市| 黄大仙区|