91啦中文在线,成人情趣视频,国产www.大片在线http://www.aygfsteel.com/xiaohei/zh-cnTue, 17 Jun 2025 17:38:29 GMTTue, 17 Jun 2025 17:38:29 GMT60JS 動(dòng)態(tài)加載腳本(轉(zhuǎn))http://www.aygfsteel.com/xiaohei/archive/2013/06/01/400049.htmlTomasTomasSat, 01 Jun 2013 01:19:00 GMThttp://www.aygfsteel.com/xiaohei/archive/2013/06/01/400049.htmlhttp://www.aygfsteel.com/xiaohei/comments/400049.htmlhttp://www.aygfsteel.com/xiaohei/archive/2013/06/01/400049.html#Feedback0http://www.aygfsteel.com/xiaohei/comments/commentRss/400049.htmlhttp://www.aygfsteel.com/xiaohei/services/trackbacks/400049.html閱讀全文

]]>
多文件上傳http://www.aygfsteel.com/xiaohei/archive/2013/05/17/399414.htmlTomasTomasFri, 17 May 2013 07:56:00 GMThttp://www.aygfsteel.com/xiaohei/archive/2013/05/17/399414.htmlhttp://www.aygfsteel.com/xiaohei/comments/399414.htmlhttp://www.aygfsteel.com/xiaohei/archive/2013/05/17/399414.html#Feedback2http://www.aygfsteel.com/xiaohei/comments/commentRss/399414.htmlhttp://www.aygfsteel.com/xiaohei/services/trackbacks/399414.html
多文件上傳 jquery的插件
使用的方法  導(dǎo)入 jquery.js 及 jquery.MultiFile.js ,
方式一: 后臺(tái)是文件數(shù)組  
 private File[] upload; // 與jsp表單中的名稱(chēng)對(duì)應(yīng)
 private String[] uploadFileName;
 private String[] uploadContentType;
在 form 中加入 <input type="file" name="upload[]" class="multi" /> 即可。

方式二:后臺(tái)是List<File>
 private List<File> upload; // 與jsp表單中的名稱(chēng)對(duì)應(yīng)
 private List<String> uploadFileName;
 private List<String> uploadContentType;

jquery.MultiFile.js  將選中的文件列在From中,名字為upload的<input>,所以要用 name="upload[]"(方法一)或者name="upload" (方法二) 來(lái)接收
class="multi" 是 jQuery 用來(lái)作的文件類(lèi)型,HTML 部份代碼如下:

<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<title>Untitled Document</title>
<script src="/multiple-file-upload/jquery.js" type="text/javascript" language="javascript"></script>
<script src="/multiple-file-upload/jquery.MultiFile.js" type="text/javascript" language="javascript"></script>

</head>
<body>

<form enctype="multipart/form-data" action="<?php $_SERVER['PHP_SELF'] ?>" method="POST">
<input type="file" name="upload[]" class="multi" maxlength="2"/>
//<input type="file" name="upload" class="multi" />

<input type="submit" value="Upload File" />
</form>

</body>

參數(shù)說(shuō)明:

參數(shù) 說(shuō)明 說(shuō)明
class="multi" maxlength="2" Limit: 2 files.
Allowed extensions: any.
限制數(shù)量2
class="multi" accept="gif|jpg" Limit: no limit.
Allowed extensions: gif and jpg.
格式只能 gif  jpg
class="multi" accept="gif|jpg" maxlength="3" Limit: 3 files
Allowed extensions: gif, jpg.
限制數(shù)量3,格式只能 gif  jpg


主頁(yè):http://www.fyneworks.com/jquery/multiple-file-upload/

下載:http://www.fyneworks.com/jquery/multiple-file-upload/#tab-Download

示例:http://www.fyneworks.com/jquery/multiple-file-upload/#tab-Examples



]]>
數(shù)字轉(zhuǎn)換為大寫(xiě)人民幣計(jì)數(shù)http://www.aygfsteel.com/xiaohei/archive/2011/12/26/367181.htmlTomasTomasMon, 26 Dec 2011 05:26:00 GMThttp://www.aygfsteel.com/xiaohei/archive/2011/12/26/367181.htmlhttp://www.aygfsteel.com/xiaohei/comments/367181.htmlhttp://www.aygfsteel.com/xiaohei/archive/2011/12/26/367181.html#Feedback0http://www.aygfsteel.com/xiaohei/comments/commentRss/367181.htmlhttp://www.aygfsteel.com/xiaohei/services/trackbacks/367181.html/**
 * 數(shù)字轉(zhuǎn)換為大寫(xiě)人民幣計(jì)數(shù)
 * @author 王代軍
 * @since Dec 16,2011
 */

public class Num2Rmb
{
    private String[] hanArr = {"零" , "壹" , "貳" , "叁" , "肆" ,
        "伍" , "陸" , "柒" , "捌" , "玖"};
    private String[] unitArr = {"拾","百","千","萬(wàn)"};

    /**
     * 把一個(gè)四位的數(shù)字字符串變成漢字字符串
     * @param numStr 需要被轉(zhuǎn)換的四位的數(shù)字字符串
     * @return 四位的數(shù)字字符串被轉(zhuǎn)換成的漢字字符串。
     */
    private String toHanStr(String numStr)
    {
        String result = "";
        int numLen = numStr.length();
        //依次遍歷數(shù)字字符串的每一位數(shù)字
        for (int i = 0 ; i < numLen ; i++ )
        {
            //把char型數(shù)字轉(zhuǎn)換成的int型數(shù)字,因?yàn)樗鼈兊腁SCII碼值恰好相差48
            //因此把char型數(shù)字減去48得到int型數(shù)字,例如'4'被轉(zhuǎn)換成4。
            int num = numStr.charAt(i) - 48;
            //如果不是最后一位數(shù)字,而且數(shù)字不是零,則需要添加單位(千、百、十)
            if ( i != numLen - 1 && num != 0)
            {
                result += hanArr[num] + unitArr[numLen - 2 - i];
            }
            //否則不要添加單位
            else
            {
                
                //上一個(gè)數(shù)是否為“零”,不為“零”時(shí)就添加
                if(result.length()>0 && hanArr[num].equals("零") && result.charAt(result.length()-1)=='零')
                    continue;
                result += hanArr[num];
            }
        }
        //只有個(gè)位數(shù),直接返回
        if(result.length()==1)
            return result;
        
        int index=result.length()-1;
        while(result.charAt(index)=='零'){
            index--;
        }
        if(index!=result.length()-1)
            return result.substring(0,index+1);
        else {
            return result;
        }
    }
    /**
     * 把一個(gè)輸入的數(shù)字字符串變成漢字字符串
     * @param numStr 需要被轉(zhuǎn)換得到數(shù)字字符串
     * @return 數(shù)字字符串被轉(zhuǎn)換成的漢字RMB字符串。
     */
    private String toRmbStr(String numStr){
        //獲取字符串長(zhǎng)度
        int numLen = numStr.length();
        //判斷長(zhǎng)度小于4(一萬(wàn)以內(nèi)~0-9999) 調(diào)用toHanStr();
        if(numLen<=4){
            return toHanStr(numStr);
        }
        //4<長(zhǎng)度<=8 (一億以內(nèi) 1000-99999999)
        else if(numLen>4&&numLen<=8){
            String[] subArr={numStr.substring(0, numLen-4),numStr.substring(numLen-4, numLen)};
            return toHanStr(subArr[0])+"萬(wàn)"+toHanStr(subArr[1]);
        }
        //8<長(zhǎng)度<=10 (百億以內(nèi) 一億-9999999999)
        else if(numLen>8&&numLen<=10){
            String[] subArr={numStr.substring(0,numLen-8),numStr.substring(numLen-8,numLen-4),numStr.substring(numLen-4,numLen)};
            return toHanStr(subArr[0])+"億"+toHanStr(subArr[1])+"萬(wàn)"+toHanStr(subArr[2]);
        }
        else return "輸入有誤!";    
    }          
    public static void main(String[] args)
    {        
        Num2Rmb nr = new Num2Rmb();
        System.out.println("只支持整數(shù)(0~99億)");
        //測(cè)試把一個(gè)四位的數(shù)字字符串變成漢字字符串
        System.out.println(nr.toRmbStr("1"));
        System.out.println(nr.toRmbStr("10"));
        System.out.println(nr.toRmbStr("15"));
        System.out.println(nr.toRmbStr("110"));
        System.out.println(nr.toRmbStr("123"));
        System.out.println(nr.toRmbStr("105"));
        System.out.println(nr.toRmbStr("1000"));
        System.out.println(nr.toRmbStr("1101"));
        System.out.println(nr.toRmbStr("1110"));
        System.out.println(nr.toRmbStr("1005"));
        System.out.println(nr.toRmbStr("101105"));
        System.out.println(nr.toRmbStr("1011109"));
        System.out.println(nr.toRmbStr("9999999999"));
    }
}



]]>
hibernate 通用的增該查 工具類(lèi) 供Dao層使用http://www.aygfsteel.com/xiaohei/archive/2011/12/26/367180.htmlTomasTomasMon, 26 Dec 2011 05:22:00 GMThttp://www.aygfsteel.com/xiaohei/archive/2011/12/26/367180.htmlhttp://www.aygfsteel.com/xiaohei/comments/367180.htmlhttp://www.aygfsteel.com/xiaohei/archive/2011/12/26/367180.html#Feedback1http://www.aygfsteel.com/xiaohei/comments/commentRss/367180.htmlhttp://www.aygfsteel.com/xiaohei/services/trackbacks/367180.htmlCommonCrudUtil(本類(lèi))實(shí)例  實(shí)現(xiàn)對(duì)數(shù)據(jù)的增刪改查



package com.XXXXX.util;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.*;
/**
 * 通用增刪改查工具類(lèi)
 * @author 王代軍
 * @since Dec 19,2011
 * @version 1.0
 */
@SuppressWarnings("unchecked")
public class CommonCrudUtil<T> {
    /**
     * 添加功能
     * @param obj 要保存的對(duì)象
     */
    public boolean create(Object obj){
        Session session=HibernateSessionFactory.getSession();
        Transaction tx=null;
        boolean flag=false;
        try{
            tx=session.beginTransaction();
            session.persist(obj);
            tx.commit();
            flag=true;
        }catch(Exception e){
            e.printStackTrace();
            if(tx!=null){        
                tx.rollback();
            }
        }finally{
            session.close();
        }    
        return flag;
    }
    /**
     * 查詢功能
     * @param clazz 要查詢對(duì)象的類(lèi)型  obj 要查詢的對(duì)象的 可序列化的字段 (本設(shè)計(jì)指主鍵 id)
     */
    public Object retrieve(Class clazz,Object obj){
        Session session=HibernateSessionFactory.getSession();
        Transaction tx=null;
        try{
            tx=session.beginTransaction();
            Object object=session.get(clazz,(Serializable) obj);
            tx.commit();
            return object;
        }catch(Exception e){
            e.printStackTrace();
            if(tx!=null){        
                tx.rollback();
            }
            return null;
        }finally{
            session.close();
        }        
    }    
    /**
     * 查詢?nèi)抗δ?br />     * @param clazz 要查詢的對(duì)象的類(lèi)型
     */
    public List<T> retrieve(Class clazz){
        Session session=HibernateSessionFactory.getSession();
        List<T> list=new ArrayList<T>();
        Transaction tx=null;
        try{
            tx=session.beginTransaction();
            Criteria cr=session.createCriteria(clazz);
            list=cr.list();
            tx.commit();
            return list;
        }catch(Exception e){
            e.printStackTrace();
            if(tx!=null){            
                tx.rollback();
            }
            return null;
        }finally{
            session.close();
        }
    }
    /**
     * 更新功能
     * @param obj 要更新的對(duì)象
     */
    public boolean update(Object obj){
        Session session=HibernateSessionFactory.getSession();
        boolean flag=false;
        Transaction tx=null;
        try{
            tx=session.beginTransaction();
            session.update(obj);
            tx.commit();
            flag=true;
        }catch(Exception e){
            e.printStackTrace();
            if(tx!=null){            
                tx.rollback();
            }
        }finally{
            session.close();
        }
        return flag;
    }
    /**
     * 刪除功能
     * @param clazz 要?jiǎng)h除的對(duì)象的類(lèi)型 obj 要?jiǎng)h除的對(duì)象的 唯一標(biāo)識(shí)(可序列化)字段 (指主鍵 id)
     */
    public boolean delete(Class clazz,Object obj){
        Session session=HibernateSessionFactory.getSession();
        Transaction tx=null;
        boolean flag=false;
        try{
            tx=session.beginTransaction();
            Object object=session.get(clazz,(Serializable) obj);
            session.delete(object);
            tx.commit();
            flag=true;
        }catch(Exception e){
            e.printStackTrace();
            if(tx!=null){        
                tx.rollback();
            }
        }finally{
            session.close();
        }    
        return flag;
    }
    
}



調(diào)用實(shí)現(xiàn)   dao層的實(shí)現(xiàn)類(lèi)調(diào)用 
   CommonCrudUtil  的方法實(shí)現(xiàn)增刪改查

import java.util.Date;
import java.util.List;

import org.hibernate.Query;
import com.zhongyou.bean.IDCard;
import com.zhongyou.util.CommonCrudUtil;

public class IDCardDaoImpl implements IDCardDaoIf {

    
     CommonCrudUtil crud=new CommonCrudUtil<IDCard>();
   
     public int addInformation(IDCard card) {

     IDCard card=new IDCard();
     card.setId(16);
     card.setName("xiaoxiao");
     card.setAddress("xiaoxiao");
     card.setBirthday(new Date());
     card.setNumber("29472398734");
     card.setSex("男");


     crud.create(card);//增加.......

}
 
     。。。。。。查詢。。。。。
     crud.retrieve(IDCard.class,3);
    。。。。。。查詢?nèi)俊!!!!?br />
     crud.retrieve(IDCard.class);

    。。。。。。修改。。。。
     crud.update(card);
    。。。。。。刪除。。。。
     crud.delete(IDCard.class,3);
。。。。。。。。。



寫(xiě)的簡(jiǎn)陋些  只是些想法可借鑒而已 同志們 可以自己完善。。。。






]]>
Oracle 服務(wù)詳解http://www.aygfsteel.com/xiaohei/archive/2011/11/09/363282.htmlTomasTomasWed, 09 Nov 2011 03:50:00 GMThttp://www.aygfsteel.com/xiaohei/archive/2011/11/09/363282.htmlhttp://www.aygfsteel.com/xiaohei/comments/363282.htmlhttp://www.aygfsteel.com/xiaohei/archive/2011/11/09/363282.html#Feedback0http://www.aygfsteel.com/xiaohei/comments/commentRss/363282.htmlhttp://www.aygfsteel.com/xiaohei/services/trackbacks/363282.html

Oracle的默認(rèn)服務(wù)一共有5個(gè):

1.OracleDBConsoleorcl oem控制臺(tái)的服務(wù)進(jìn)程

2.OracleJobSchedulerORCL 定時(shí)器的服務(wù)進(jìn)程

3.OracleOraDb10g_home1iSQL*Plus isql*plus的服務(wù)進(jìn)程

4.OracleOraDb10g_home1TNSListener 監(jiān)聽(tīng)器的服務(wù)進(jìn)程


5.OracleServiceORCL 數(shù)據(jù)庫(kù)服務(wù)進(jìn)程

要查看系統(tǒng)中已啟動(dòng)的服務(wù),我們可以在“開(kāi)始→控制面板→管理工具”中雙擊“服務(wù)”,或者直接

在“運(yùn)行”中輸入 “Services.msc”打開(kāi)服務(wù)設(shè)置對(duì)話框,就可以看到每一個(gè)服務(wù)都有以下幾個(gè)屬

性:名稱(chēng)、描述、狀態(tài)、啟動(dòng)類(lèi)型、登錄身份、依存關(guān)系。

OracleDBConsoleorcl --可以不啟動(dòng),用于管理Oracle的企業(yè)管理器的服務(wù).

OracleJobSchedulerORCL --通常不啟動(dòng),用于定期操作任務(wù)的服務(wù)

OracleOraDb10g_home1iSQL*Plus --可以不啟動(dòng),這是isqlplus服務(wù),用于用網(wǎng)頁(yè)執(zhí)行sql執(zhí)行,11g已

經(jīng)取消了這個(gè)功能

OracleOraDb10g_home1TNSListener --必須啟動(dòng),這是臨聽(tīng),用于遠(yuǎn)程客戶端連接你的Oracle

OracleServiceORCL --必須啟動(dòng),這是Oracle數(shù)據(jù)庫(kù)的服務(wù)

可以用命令啟動(dòng):

#啟動(dòng)listener:

lsnrctl start

#啟動(dòng)數(shù)據(jù)庫(kù)

net start OracleServiceORCL

只有這兩項(xiàng)是必須啟動(dòng)的:

OracleOraDb10g_home1TNSListener

OracleServiceORCL

為什么OracleJobSchedulerORCL會(huì)顯示禁用?

數(shù)據(jù)庫(kù)工作日程調(diào)度,一般沒(méi)有安排工作日程就不需要啟動(dòng),為什么默認(rèn)是禁用?因?yàn)閱?dòng)后會(huì)占用很大的系統(tǒng)資源。

(1)OracleServiceSID                    

數(shù)據(jù)庫(kù)服務(wù),這個(gè)服務(wù)會(huì)自動(dòng)地啟動(dòng)和停止數(shù)據(jù)庫(kù)。如果安裝了一個(gè)數(shù)據(jù)庫(kù),它的缺省啟動(dòng)類(lèi)型為自動(dòng)。服務(wù)進(jìn)程為Oracle.EXE,參數(shù)文件initSID.ora,日志文件SIDALRT.log,控制臺(tái)SVRMGRL.EXE、SQLPLUS.EXE。

(2)OracleHOME_NAMETNSListener

監(jiān)聽(tīng)器服務(wù),服務(wù)只有在數(shù)據(jù)庫(kù)需要遠(yuǎn)程訪問(wèn)時(shí)才需要(無(wú)論是通過(guò)另外一臺(tái)主機(jī)還是在本地通過(guò) SQL.Net 網(wǎng)絡(luò)協(xié)議都屬于遠(yuǎn)程訪問(wèn)),不用這個(gè)服務(wù)就可以訪問(wèn)本地?cái)?shù)據(jù)庫(kù),它的缺省啟動(dòng)類(lèi)型為自動(dòng)。服務(wù)進(jìn)程為T(mén)NSLSNR.EXE,參數(shù)文件 Listener.ora,日志文件listener.log,控制臺(tái)LSNRCTL.EXE,默認(rèn)端口1521、1526。

(3)OracleHOME_NAMEAgent

OEM代理服務(wù),接收和響應(yīng)來(lái)自O(shè)EM控制臺(tái)的任務(wù)和事件請(qǐng)求,只有使用OEM管理數(shù)據(jù)庫(kù)時(shí)才需要,它的缺省啟動(dòng)類(lèi)型為自動(dòng)。服務(wù)進(jìn)程為DBSNMP.EXE,參數(shù)文件snmp_rw.ora,日志文件nmi.log,控制臺(tái)LSNRCTL.EXE,默認(rèn)端口1748。

(4)OracleHOME_NAMEClientCache      

名字緩存服務(wù),服務(wù)緩存用于連接遠(yuǎn)程數(shù)據(jù)庫(kù)的Oracle Names 數(shù)據(jù)。它的缺省啟動(dòng)類(lèi)型是手動(dòng)。然而,除非有一臺(tái)Oracle Names 服務(wù)器,否則沒(méi)有必要運(yùn)行這個(gè)服務(wù)。服務(wù)進(jìn)程為ONRSD.EXE,參數(shù)文件NAMES.ORA,日志文件ONRSD.LOG,控制臺(tái) NAMESCTL.EXE。

(5)OracleHOME_NAMECMAdmin                    

連接管理服務(wù),是構(gòu)建Connection Manager服務(wù)器所用,只有服務(wù)器作為Connection Manager才需要,它的缺省啟動(dòng)類(lèi)型是手動(dòng)。服務(wù)進(jìn)程為CMADMIN.EXE,參數(shù)文件CMAN.ORA,日志文件CMADM_PID.TRC,控 制臺(tái)CMCTL.EXE,默認(rèn)端口1830。

(6)OracleHOME_NAMECMan                    

連接網(wǎng)關(guān)服務(wù),是構(gòu)建Connection Manager服務(wù)器所用,只有服務(wù)器作為Connection Manager才需要,它的缺省啟動(dòng)類(lèi)型是手動(dòng)。服務(wù)進(jìn)程為CMGW.EXE,參數(shù)文件CMAN.ORA,日志文件CMAN_PID.TRC,控制臺(tái) CMCTL.EXE,默認(rèn)端口1630。

(7)OracleHOME_NAMEDataGatherer

性能包數(shù)據(jù)采集服務(wù),除非使用Oracle Capacity Planner 和 Oracle Performance Manager,否則不需要啟動(dòng),它的缺省啟動(dòng)類(lèi)型是手動(dòng)。服務(wù)進(jìn)程為VPPDC.EXE,日志文件alert_dg.log,控制臺(tái) vppcntl.exe。

(8)OracleHOME_NAMEHTTPServer

Oracle提供的WEB服務(wù)器,一般情況下我們只用它來(lái)訪問(wèn)Oracle Apache 目錄下的Web 頁(yè)面,比如說(shuō)JSP 或者modplsql 頁(yè)面。除非你使用它作為你的HTTP服務(wù),否則不需要啟動(dòng)(若啟動(dòng)它會(huì)接管IIS的服務(wù)),它的缺省啟動(dòng)類(lèi)型是手動(dòng)。服務(wù)進(jìn)程為APACHE.EXE,參 數(shù)文件httpd.conf,默認(rèn)端口80。

(9)OracleHOME_NAMEPagingServer

通過(guò)一個(gè)使用調(diào)制解調(diào)器的數(shù)字傳呼機(jī)或者電子郵件發(fā)出警告(沒(méi)試過(guò)),它的缺省啟動(dòng)類(lèi)型是手動(dòng)。服務(wù)進(jìn)程PAGNTSRV.EXE,日志文件paging.log。

(10)OracleHOME_NAMENames

Oracle Names服務(wù),只有服務(wù)器作為Names Server才需要,它的缺省啟動(dòng)類(lèi)型是手動(dòng)。服務(wù)進(jìn)程N(yùn)AMES.EXE,參數(shù)文件NAMES.ORA,日志文件NAMES.LOG,控制臺(tái)NAMESCTL.EXE,默認(rèn)端口1575。

(11)OracleSNMPPeerMasterAgent

SNMP服務(wù)代理,用于支持SNMP的網(wǎng)管軟件對(duì)服務(wù)器的管理,除非你使用網(wǎng)管工具監(jiān)控?cái)?shù)據(jù)庫(kù)的情況,否則不需要啟動(dòng),它的缺省啟動(dòng)類(lèi)型是手動(dòng)。服務(wù)進(jìn)程為AGNTSVC.EXE,參數(shù)文件MASTER.CFG,默認(rèn)端口161。

(12)OracleSNMPPeerEncapsulater

SNMP協(xié)議封裝服務(wù),用于SNMP協(xié)議轉(zhuǎn)換,除非你使用一個(gè)不兼容的SNMP代理服務(wù),否則不需要啟動(dòng),它的缺省啟動(dòng)類(lèi)型是手動(dòng)。服務(wù)進(jìn)程為ENCSVC.EXE,參數(shù)文件ENCAPS.CFG,默認(rèn)端口1161。

(13)OracleHOME_NAMEManagementServer

OEM管理服務(wù),使用OEM時(shí)需要,它的缺省啟動(dòng)類(lèi)型是手動(dòng)。服務(wù)進(jìn)程為OMSNTSVR.EXE,日志文件oms.nohup。

OracleServiceMYDB

OracleOraHome92TNSListener

別的一般不用開(kāi),有需要再開(kāi)






附(批處理)

:doit

  @echo off

  set /p xz=按"kq"鍵啟動(dòng)服務(wù)------按"gb"關(guān)閉服務(wù)

  if %xz%==kq goto kq

  if %xz%==gb goto gb

  goto doit

  :kq

  @echo off

  echo 正在啟動(dòng)oracle服務(wù),請(qǐng)稍等......

  net start OracleServiceORCL

  net start OracleDBConsoleorcl

  net start OracleOraDb10g_home1TNSListener

  net start OracleOraDb10g_home1iSQL*Plus

  echo 啟動(dòng)oracle服務(wù)完成

  echo. & pause

  goto doit

  :gb

  @echo off

  echo 正在關(guān)閉oracle服務(wù),請(qǐng)稍等.......

  net stop OracleServiceORCL

  net stop OracleDBConsoleorcl

  net stop OracleOraDb10g_home1TNSListener

  net stop OracleOraDb10g_home1iSQL*Plus

  echo 關(guān)閉oracle服務(wù)完成

  echo. & pause

  goto doit

把代碼復(fù)制 保存  修改后綴名為.bat 執(zhí)行即可;



]]>
解析--Sessionhttp://www.aygfsteel.com/xiaohei/archive/2011/10/16/361375.htmlTomasTomasSun, 16 Oct 2011 13:29:00 GMThttp://www.aygfsteel.com/xiaohei/archive/2011/10/16/361375.htmlhttp://www.aygfsteel.com/xiaohei/comments/361375.htmlhttp://www.aygfsteel.com/xiaohei/archive/2011/10/16/361375.html#Feedback0http://www.aygfsteel.com/xiaohei/comments/commentRss/361375.htmlhttp://www.aygfsteel.com/xiaohei/services/trackbacks/361375.html



會(huì)話跟蹤,其原理是什么。

我們都知道,為了在WEB服務(wù)器中識(shí)別發(fā)出請(qǐng)求的用戶,對(duì)于每一個(gè)訪問(wèn)者WEB服


務(wù)器都會(huì)給其創(chuàng)建一個(gè)session。在會(huì)話的創(chuàng)建于使用中,比較容易犯錯(cuò)誤的地


方主要是當(dāng)我們需要讀取出保存在session的數(shù)據(jù)時(shí),沒(méi)有轉(zhuǎn)化為相應(yīng)的格式,


導(dǎo)致程序出錯(cuò)。比如:

HttpSession session=request.getSession();


|\\\\\\\\\\


注意Session在為進(jìn)行HttpSession session=request.getSession();之前


out.println(request.getSession());


HttpSession hs=request.getSession();
out.println(hs);
兩者執(zhí)行的結(jié)果相同;


第一個(gè)是獲得Tomcat內(nèi)置的默認(rèn)Session (就是會(huì)話建立時(shí)自動(dòng)生成的Session唯一標(biāo)記本次會(huì)話)


第二次 是把 唯一的標(biāo)識(shí)Session 通過(guò)request.getSession()獲取內(nèi)存地址 給hs 然后hs


會(huì)獲取Session 然后對(duì)其操作  其實(shí)本質(zhì)上是對(duì)本次會(huì)話的唯一Session進(jìn)行操作.


\\\\\\\\\\\\\\

String MyName="Hello Accp";

session.setAttribute("name",MyName);

String name=seeeion.getAttribute("name");//錯(cuò)誤的

String name=(String)seeeion.getAttribute("name");//正確的

由于WEB服務(wù)器為用戶創(chuàng)建的Session會(huì)占用系統(tǒng)內(nèi)存,所以通常服務(wù)器都需要及


時(shí)的刪除Session信息以釋放資源,方法有:

①關(guān)閉瀏覽器,關(guān)閉Session。

②調(diào)用HttpSession的invalidate()方法,刪除HttpSession對(duì)象和數(shù)據(jù)。

③兩次訪問(wèn)時(shí)間間隔大于Session定義的非活動(dòng)時(shí)間。

在Servlet中的HttpRequestServlet對(duì)象創(chuàng)建HttpSession對(duì)象有兩種方法:

①HttpSession session=request.getSession(boolean value);

②HttpSession session=request.getSession();

第一中方法中,布爾值為true時(shí),如果存在于當(dāng)前請(qǐng)求相關(guān)聯(lián)的會(huì)話,就返回該


會(huì)話,否則就返回一個(gè)新會(huì)話。反之,布爾值為false時(shí),如果存在當(dāng)前請(qǐng)求相


關(guān)聯(lián)的會(huì)話,就返回該會(huì)話,否則就返回null。

第二種方法與第一種方法的第一種情況相同。通常我們都喜歡使用第二種方法。



]]>
Java Bean 的學(xué)習(xí)心得(轉(zhuǎn))http://www.aygfsteel.com/xiaohei/archive/2011/10/10/360916.htmlTomasTomasMon, 10 Oct 2011 15:18:00 GMThttp://www.aygfsteel.com/xiaohei/archive/2011/10/10/360916.htmlhttp://www.aygfsteel.com/xiaohei/comments/360916.htmlhttp://www.aygfsteel.com/xiaohei/archive/2011/10/10/360916.html#Feedback0http://www.aygfsteel.com/xiaohei/comments/commentRss/360916.htmlhttp://www.aygfsteel.com/xiaohei/services/trackbacks/360916.html

 今天主要講解了一下知識(shí)點(diǎn):
  JavaBean、javaBean規(guī)范、javaBean的動(dòng)作、開(kāi)發(fā)模式

先講一下javaBean的作用,以及我們?yōu)槭裁匆褂胘avabean?
 其實(shí)javabean的一個(gè)最主要的作用就是對(duì)數(shù)據(jù)進(jìn)行一個(gè)封裝,其次是增強(qiáng)代碼的復(fù)用性、結(jié)構(gòu)更清晰等。
在換句話說(shuō)javabean他其實(shí)本身就是一個(gè)對(duì)象,之所以學(xué)習(xí)javabean的好處,就是讓我們像操作對(duì)象一樣進(jìn)行操作數(shù)據(jù)。讓代碼變得更靈活、更簡(jiǎn)單。

舉個(gè)小小的例子:
 比如你做一個(gè)注冊(cè)功能。首先呢我們是需要獲取用戶界面的信息。然后在獲取進(jìn)來(lái)的數(shù)據(jù)傳給持久層,進(jìn)行持久的時(shí)候大家有沒(méi)有注意到,如果表單里面的數(shù)據(jù)少的話還可以,直接傳入?yún)?shù),而數(shù)據(jù)一旦超過(guò)10個(gè)數(shù)據(jù),那么你可以想象一個(gè)你傳入的參數(shù),那該是多么的一大串,所以我們采取javabean的方式,把從頁(yè)面上取來(lái)的信息把它存放到一個(gè)對(duì)象當(dāng)中,那么我們?cè)谶M(jìn)行持久化傳參的時(shí)候就只需要傳入一個(gè)對(duì)象就OK。 這就是javabean的好處之一。

JavaBean規(guī)范:
 一個(gè)javabean由四部分組成:
  第一部分:javabean必須有一個(gè)無(wú)慘的構(gòu)造方法。
  第二部分:所有的屬性必須都是private的。
  第三部分:必須生成get/set方法。
  第四部分:必須實(shí)現(xiàn)序列化(Serializable)這個(gè)接口。

下面我呢針對(duì)上面這些javabean的規(guī)范做一個(gè)解釋?zhuān)约盀槭裁匆x這個(gè)規(guī)范?
 1:javabean為什么需要一個(gè)無(wú)慘的構(gòu)造方法呢?
回答:這個(gè)無(wú)慘的構(gòu)造方法的作用主要是針對(duì)反射。為什么會(huì)針對(duì)反射呢?大家知道使用反射實(shí)例化一個(gè)類(lèi),是實(shí)例化該類(lèi)的一個(gè)無(wú)慘的構(gòu)造方法。
 比如:
  如果他是一個(gè)無(wú)慘的構(gòu)造方法: Class.forName("com.lovo.User").newInstance.
  如果他沒(méi)有一個(gè)無(wú)慘的構(gòu)造方法:Class c = Class.forName("com.lovo.User");
        手動(dòng)實(shí)例化他所有的公共的構(gòu)造方法: Constructor[] con = c.getConstructors()

 2:javabean為什么所有的屬性都是private的呢,為什么不可以是public的?
回答:private屬性增強(qiáng)javabean安全性。他們的區(qū)別就是如果他的屬性設(shè)置為public的話,我們可以任意的進(jìn)行訪問(wèn)或修改(沒(méi)有安全性)。而private屬性為什么要通過(guò)get/set去訪問(wèn)這就是下面馬上講到的。

 3:javaBean的get/set方法。
回答:get/set方法也是增加代碼的安全性。比如我們可以讓外部只可以訪問(wèn)屬性不能修改屬性的話,那么我在這里只需要生成get方法就行了,無(wú)須生成set方法,而public就無(wú)法做到這一點(diǎn)。還有一個(gè)就是比如我們?cè)谠O(shè)置他的age的時(shí)候我們還可以進(jìn)行驗(yàn)證工作,比如如果你的age小于18,那么就直接跳出,不允許設(shè)置該屬性。這個(gè)功能也是很強(qiáng)大的。

舉個(gè)小小列子:
 public void setAge(int age){
 //驗(yàn)證傳入進(jìn)來(lái)的age否大于18,如果小于就直接return,否則就添加到該對(duì)象的age屬性中。
  if(age<18){
   return; 
 }
 this.age = age;
}

 4:實(shí)現(xiàn)serializable接口?
回答:為了實(shí)現(xiàn)遠(yuǎn)程調(diào)用。比如我們要把該JavaBean從一個(gè)操作系統(tǒng)中傳輸?shù)搅硪慌_(tái)操作系統(tǒng),我們就只有采取實(shí)現(xiàn)該接口。

JavaBean的動(dòng)作:
    <!-- 創(chuàng)建user對(duì)象 -->
 1: 創(chuàng)建動(dòng)作:  <jsp:useBean id="user" class="com.lovo.User" scope="request" />
    id:一個(gè)變量名。可以任意取。
    classs:指明變量的類(lèi)型,也就是說(shuō)具體描述的一個(gè)對(duì)象。包名加類(lèi)名
    scope:總用于范圍。 也就是說(shuō)在我們?cè)诓檎乙粋€(gè)屬性值的時(shí)候,首先是從他的一個(gè)作用域中去進(jìn)行查找,如果找到就直接把它輸出,否則創(chuàng)建一個(gè)新的(null)。

    <!-- 設(shè)置user對(duì)象中的userName屬性 單一屬性。。-->
 2:設(shè)置動(dòng)作:     <jsp:setProperty name="user" property="userName" value="222" param="123"/> 
     name:必須和創(chuàng)建動(dòng)作的id一樣。
     property:具體的某一個(gè)屬性值。
     value:設(shè)置該屬性的值。
     param:是將請(qǐng)求到的值附加到userName屬性中.
  
    <!-- 代表名字相同的自動(dòng)填充。 如:http://localhost:8080/Huang_JavaBean/index.jsp?userName=444&password=123-->
     <jsp:setProperty name="user" property="*"  /> 
     name:必須和創(chuàng)建動(dòng)作的id一樣。
     property:設(shè)置相同屬性名的值他會(huì)自動(dòng)填充。
    
 3:輸出動(dòng)作:
   
   <!-- 輸出信息 。 相似于 out.println(user.getuserName()) -->
   <jsp:getProperty name="user" property="userName" />
   <jsp:getProperty name="user" property = "password"/>
開(kāi)發(fā)模式:
 為什么進(jìn)行分層的開(kāi)發(fā)?
  1:主要是為了并發(fā)性的開(kāi)發(fā)項(xiàng)目。比如:你做持久層,我做業(yè)務(wù)層
  2:可以獨(dú)立的測(cè)試,每一個(gè)方法。
  3:分層的開(kāi)發(fā)的好處還有一個(gè)就是一處代碼的改變不會(huì)影響到另一處代碼的改變。

在這里說(shuō)一下servlet和jsp的一些缺陷.
 servlet的缺陷使web應(yīng)用程序開(kāi)發(fā)變得非常繁瑣且不利于分工協(xié)作。
 jsp頁(yè)面嚴(yán)重的缺乏代碼的可讀性而且沒(méi)有將頁(yè)面的表現(xiàn)和業(yè)務(wù)邏輯分開(kāi),使維護(hù)變得更加復(fù)雜。

在這章講到了兩種開(kāi)發(fā)模式:
 模式一:JSP+JavaBean
 模式二:JSP+Servlet+JavaBean

現(xiàn)在大多數(shù)情況下都不用模式一,所以我就解釋了。
所謂的模式二就是現(xiàn)在比較流行的一個(gè)模式,也叫MVC模式。

那么什么是MVC模式?

      M(model)模型層,即完成業(yè)務(wù)功能部分,也要完成持久功能。

      V(view)視圖層,用于客戶端進(jìn)行頁(yè)面展現(xiàn)的部分,一般是jsp和html。

      C(controller)控制層,轉(zhuǎn)么用于調(diào)用業(yè)務(wù)層,進(jìn)行邏輯判斷,看他跳入那個(gè)頁(yè)面。

MVC的一個(gè)最大的好處是實(shí)現(xiàn)了良好的松散耦合。

  PO(persistentobject)持久化對(duì)象,它通常是在分析系統(tǒng)需求時(shí),外名詞或名詞短語(yǔ)中抽取出來(lái)(javaBan).

  DAO(datebase access  object)數(shù)據(jù)庫(kù)訪問(wèn)對(duì)象,用于對(duì)象關(guān)系映射時(shí)或?qū)ο蟪志没庋b了所有的JDBC操作

  BO(business   Object)業(yè)務(wù)層對(duì)象,用于完成業(yè)務(wù)功能的類(lèi)

  VO(value object)值對(duì)象,用于封裝各層次間要傳輸?shù)臄?shù)據(jù)

 



]]>
主站蜘蛛池模板: 桂阳县| 兰西县| 保亭| 慈溪市| 驻马店市| 阳江市| 浦东新区| 东安县| 海口市| 江阴市| 大田县| 中山市| 孝昌县| 鄱阳县| 灌阳县| 石城县| 溧阳市| 宁夏| 多伦县| 团风县| 文登市| 宿州市| 石家庄市| 黔东| 广州市| 铜山县| 钟山县| 兴和县| 焉耆| 惠安县| 合阳县| 凤阳县| 云南省| 鄂尔多斯市| 邯郸县| 邓州市| 中江县| 峨山| 新沂市| 太湖县| 株洲市|