<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    IT精英俱樂部

    方便自己查閱,僅此而已!

    統計

    留言簿(4)

    閱讀排行榜

    評論排行榜

    2009年6月29日 #

    RBAC用戶角色權限設計方案

    http://www.iteye.com/topic/930648

    RBAC(Role-Based Access Control,基于角色的訪問控制),就是用戶通過角色與權限進行關聯。簡單地說,一個用戶擁有若干角色,每一個角色擁有若干權限。這樣,就構造成“用戶-角色-權限”的授權模型。在這種模型中,用戶與角色之間,角色與權限之間,一般者是多對多的關系。(如下圖)



    角色是什么?可以理解為一定數量的權限的集合,權限的載體。例如:一個論壇系統,“超級管理員”、“版主”都是角色。版主可管理版內的帖子、可管理版內的用戶等,這些是權限。要給某個用戶授予這些權限,不需要直接將權限授予用戶,可將“版主”這個角色賦予該用戶。 

     

    當用戶的數量非常大時,要給系統每個用戶逐一授權(授角色),是件非常煩瑣的事情。這時,就需要給用戶分組,每個用戶組內有多個用戶。除了可給用戶授權外,還可以給用戶組授權。這樣一來,用戶擁有的所有權限,就是用戶個人擁有的權限與該用戶所在用戶組擁有的權限之和。(下圖為用戶組、用戶與角色三者的關聯關系)

    在應用系統中,權限表現成什么?對功能模塊的操作,對上傳文件的刪改,菜單的訪問,甚至頁面上某個按鈕、某個圖片的可見性控制,都可屬于權限的范疇。有些權限設計,會把功能操作作為一類,而把文件、菜單、頁面元素等作為另一類,這樣構成“用戶-角色-權限-資源”的授權模型。而在做數據表建模時,可把功能操作和資源統一管理,也就是都直接與權限表進行關聯,這樣可能更具便捷性和易擴展性。(見下圖)



    請留意權限表中有一列“權限類型”,我們根據它的取值來區分是哪一類權限,如“MENU”表示菜單的訪問權限、“OPERATION”表示功能模塊的操作權限、“FILE”表示文件的修改權限、“ELEMENT”表示頁面元素的可見性控制等。

     

    這樣設計的好處有二。其一,不需要區分哪些是權限操作,哪些是資源,(實際上,有時候也不好區分,如菜單,把它理解為資源呢還是功能模塊權限呢?)。其二,方便擴展,當系統要對新的東西進行權限控制時,我只需要建立一個新的關聯表“權限XX關聯表”,并確定這類權限的權限類型字符串。

     

    這里要注意的是,權限表與權限菜單關聯表、權限菜單關聯表與菜單表都是一對一的關系。(文件、頁面權限點、功能操作等同理)。也就是每添加一個菜單,就得同時往這三個表中各插入一條記錄。這樣,可以不需要權限菜單關聯表,讓權限表與菜單表直接關聯,此時,須在權限表中新增一列用來保存菜單的ID,權限表通過“權限類型”和這個ID來區分是種類型下的哪條記錄。

     

    到這里,RBAC權限模型的擴展模型的完整設計圖如下:



    隨著系統的日益龐大,為了方便管理,可引入角色組對角色進行分類管理,跟用戶組不同,角色組不參與授權。例如:某電網系統的權限管理模塊中,角色就是掛在區局下,而區局在這里可當作角色組,它不參于權限分配。另外,為方便上面各主表自身的管理與查找,可采用樹型結構,如菜單樹、功能樹等,當然這些可不需要參于權限分配。

    posted @ 2011-07-30 16:36 suplayer 閱讀(1005) | 評論 (0)編輯 收藏

    iBATIS操作Blob與Clob淺析

    http://developer.51cto.com/art/200907/136668.htm


    spring 中已經提供了很好的實現,所以這又省去了很多的功夫,接下來看看iBATIS是如何支持Clob和blob的。

    iBATIS提供了TypeHandler接口,用于處理數據類型,基本的實現類為BaseTypeHandler

    在spring 中,提供了AbstractLobTypeHandler作為基礎類,并且提供了相應的模版方法,所有的工作由LobHandler處理。

    BlobByteArrayTypeHandler 主要用于處理blob類型數據,使用byte[]來映射相應的Blob

    ClobStringTypeHandler 用于處理Clob類型數據,使用字符串來映射Clob

    有一點需要注意的是,AbstractLobTypeHandler中實現了事務支持,需要用來釋放相應的資源,所以一定需要在事務環境中進行。

    下面是一個簡單的例子:

    1. public class Food {   
    2. private String content;   
    3.  
    4. private String id;   
    5.  
    6. private byte[] image;   
    7.  
    8. private String name;     
    9.     ...   
    10. }  

    xml如下:說明一下,在resultMap中可以通過typeHandler來指定具體的handler.在inline變量中,可以通過handler來定義相應的typeHandler

    1. ﹤sqlMap namespace="Food"﹥   
    2.      
    3.    ﹤typeAlias alias="Food" type="org.esoft.hdb.bo.Food"/﹥   
    4.    ﹤resultMap id="foodResult" class="Food"﹥   
    5.   ﹤result property="id" column="C_ID"/﹥   
    6.   ﹤result property="name" column="C_NAME"/﹥   
    7.   ﹤result property="content" column="C_content"   
    8.  typeHandler="org.springframework.orm.ibatis.support.ClobStringTypeHandler"/﹥   
    9.   ﹤result property="image" column="C_image"   
    10.  typeHandler="org.springframework.orm.ibatis.support.BlobByteArrayTypeHandler"/﹥   
    11.    ﹤/resultMap﹥   
    12.    ﹤sql id="foodFragment"﹥select C_ID,C_NAME,C_CONTENT,C_IMAGE from T_FOOD﹤/sql﹥   
    13.   ﹤select id="getAll" resultMap="foodResult"﹥   
    14.   ﹤include refid="foodFragment"/﹥   
    15.    ﹤/select﹥   
    16.    ﹤select id="selectById" parameterClass="string" resultMap="foodResult"﹥   
    17.   ﹤include refid="foodFragment"/﹥ where C_ID=#id#﹤/select﹥   
    18.      
    19.    ﹤insert id="insert" parameterClass="Food"﹥ insert into T_FOOD ( C_ID,   
    20.   C_NAME,C_CONTENT, C_IMAGE) values ( #id#,   
    21.   #name#,#content,handler=org.springframework.orm.ibatis.support.ClobStringTypeHandler#,   
    22.   #image,handler=org.springframework.orm.ibatis.support.BlobByteArrayTypeHandler#)   
    23.   ﹤/insert﹥   
    24.      
    25.    ﹤update id="update" parameterClass="Food"﹥ update T_FOOD set C_NAME = #name#,   
    26.   C_CONTENT =   
    27.   #content,handler=org.springframework.orm.ibatis.support.ClobStringTypeHandler#,   
    28.   C_IMAGE =   
    29.   #image,handler=org.springframework.orm.ibatis.support.BlobByteArrayTypeHandler#   
    30.   where C_ID = #id# ﹤/update﹥   
    31.      
    32.    ﹤delete id="deleteById" parameterClass="string"﹥ delete from T_FOOD where C_ID = #id#   
    33.   ﹤/delete﹥   
    34.      
    35. ﹤/sqlMap﹥   
    36.  
    37.  
    38. public interface FoodService {   
    39.  
    40.      
    41. void save(Food food);   
    42. Food get(String id);   
    43. /**   
    44. * @param food   
    45. */   
    46. void update(Food food);   
    47. }   
    48.  
    49. public class FoodServiceImpl implements FoodService {   
    50. private FoodDAO foodDAO;   
    51.  
    52. private DaoCreator creator;   
    53.  
    54. public void setCreator(DaoCreator creator) {   
    55.     this.creator = creator;   
    56. }   
    57.  
    58. protected FoodDAO getFoodDAO() {   
    59.     if (foodDAO == null) {   
    60.    foodDAO = (FoodDAO) creator.createDao(FoodDAO.class, Food.class);   
    61.     }   
    62.     return foodDAO;   
    63. }   
    64.  
    65. public Food get(String id) {   
    66.     return getFoodDAO().get(id);   
    67. }   
    68. public void save(Food food) {   
    69.     getFoodDAO().save(food);   
    70. }   
    71. public void update(Food food) {   
    72.     getFoodDAO().update(food);   
    73. }   
    74.  
    75. }   
    76.  
    77. spring xml 配置:  
    78.    
    79. 。。。   
    80.  ﹤bean id="lobHandler"   
    81.   class="org.springframework.jdbc.support.lob.DefaultLobHandler"/﹥   
    82.      
    83.    ﹤bean id="transactionManager"   
    84.   class="org.springframework.jdbc.datasource.DataSourceTransactionManager"﹥   
    85.   ﹤property name="dataSource" ref="dataSource"/﹥   
    86.    ﹤/bean﹥   
    87.      
    88.    ﹤bean id="sqlMapClient"   
    89.   class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"﹥   
    90.   ﹤property name="dataSource" ref="dataSource"/﹥   
    91.   ﹤property name="configLocation"﹥   
    92.  ﹤value﹥SqlMapConfig.xml﹤/value﹥   
    93.   ﹤/property﹥   
    94.   ﹤property name="lobHandler" ref="lobHandler"/﹥   
    95.    ﹤/bean﹥   
    96.      
    97.    ﹤bean id="daoCreate" class="org.esoft.hdb.ibatis.IbatisDaoCreator"﹥   
    98.   ﹤property name="sqlMapClient" ref="sqlMapClient"/﹥   
    99.    ﹤/bean﹥   
    100.      
    101.    ﹤bean id="foodService" class="org.esoft.hdb.service.FoodServiceImpl"﹥   
    102.   ﹤property name="creator" ref="daoCreate"/﹥   
    103.    ﹤/bean﹥   
    104.      
    105.      
    106.    ﹤aop:config﹥   
    107.   ﹤aop:pointcut id="foodServiceMethods"   
    108.  expression="execution(* org.esoft.hdb.service.FoodService.*(..))"/﹥   
    109.   ﹤aop:advisor advice-ref="txAdvice" pointcut-ref="foodServiceMethods"/﹥   
    110.    ﹤/aop:config﹥   
    111.    ﹤tx:advice id="txAdvice" transaction-manager="transactionManager"﹥   
    112.   ﹤tx:attributes﹥   
    113.  ﹤tx:method name="*" propagation="REQUIRED"/﹥   
    114.   ﹤/tx:attributes﹥   
    115.    ﹤/tx:advice﹥  

    簡單的測試:

    1. save :   
    2.     Food food = new Food();   
    3.     food.setPk("1");   
    4.     food.setName("food1");   
    5.     BufferedInputStream in = new BufferedInputStream(getClass()   
    6.   .getResourceAsStream("/1.gif"));   
    7.     byte[] b = FileCopyUtils.copyToByteArray(in);   
    8.     food.setImage(b);   
    9.   in = new BufferedInputStream(getClass().getResourceAsStream(   
    10.   "/hibernate.cfg.xml"));   
    11.     b = FileCopyUtils.copyToByteArray(in);   
    12.     food.setContent(new String(b));   
    13.     foodService.save(food);   
    14. update:   
    15. Food food = foodService.get("1");   
    16.     BufferedInputStream in = new BufferedInputStream(getClass()   
    17.   .getResourceAsStream("/jdbc.properties"));   
    18.     byte[] b = FileCopyUtils.copyToByteArray(in);   
    19.     food.setContent(new String(b));   
    20.     foodService.update(food);   
    21.     food = foodService.get("1");   
    22.     assertNotNull(food.getImage());  

    posted @ 2011-07-30 16:35 suplayer 閱讀(322) | 評論 (0)編輯 收藏

    ORACLE表解鎖

    select sess.sid,
       sess.serial#,
       lo.oracle_username,
       lo.os_user_name,
       ao.
    object_name,
       lo.locked_mode
       
    from v$locked_object lo,
       dba_objects ao,
       v$session sess
    where ao.object_id = lo.object_id and lo.session_id = sess.SID;
    獲得未提交的事物的列表和基礎信息
    然后根據 sessionID和serial#號強制關閉事物:

    ALTER SYSTEM KILL SESSION '9,108';
    --'9,108'為sessionID和serial#號,逗號分開


    posted @ 2011-07-30 16:33 suplayer 閱讀(118) | 評論 (0)編輯 收藏

    UML類與類之間的關系

    http://www.javaeye.com/topic/37302

    類與類之間的關系對于理解面向對象具有很重要的作用,以前在面試的時候也經常被問到這個問題,在這里我就介紹一下。
    類與類之間存在以下關系:
    (1)泛化(Generalization)
    (2)關聯(Association)
    (3)依賴(Dependency)
    (4)聚合(Aggregation)

    UML圖與應用代碼例子:
    1.泛化(Generalization)
    [泛化]
    表示類與類之間的繼承關系,接口與接口之間的繼承關系,或類對接口的實現關系。一般化的關系是從子類指向父類的,與繼承或實現的方法相反。
    [具體表現]
    父類 父類實例=new 子類()
    [UML圖](圖1.1)

    圖1.1 Animal類與Tiger類,Dog類的泛化關系

    [代碼表現]

    1. class Animal{}   
    2. class Tiger extends Animal{}   
    3. public class Test   
    4. {   
    5.     public void test()   
    6.     {   
    7.         Animal a=new Tiger();   
    8.     }   
    9. }  

    2.依賴(Dependency)
    [依賴]
    對于兩個相對獨立的對象,當一個對象負責構造另一個對象的實例,或者依賴另一個對象的服務時,這兩個對象之間主要體現為依賴關系。
    [具體表現]
    依賴關系表現在局部變量,方法的參數,以及對靜態方法的調用
    [現實例子]
    比如說你要去擰螺絲,你是不是要借助(也就是依賴)螺絲刀(Screwdriver)來幫助你完成擰螺絲(screw)的工作
    [UML表現](圖1.2)


    圖1.2 Person類與Screwdriver類的依賴關系

    [代碼表現]

    1. public class Person{   
    2.     /** 擰螺絲 */  
    3.     public void screw(Screwdriver screwdriver){   
    4.         screwdriver.screw();   
    5.     }   
    6. }  

    3.關聯(Association)
    [關聯]
    對于兩個相對獨立的對象,當一個對象的實例與另一個對象的一些特定實例存在固定的對應關系時,這兩個對象之間為關聯關系。
    [具體表現]
    關聯關系是使用實例變量來實現
    [現實例子]
    比如客戶和訂單,每個訂單對應特定的客戶,每個客戶對應一些特定的訂單;再例如公司和員工,每個公司對應一些特定的員工,每個員工對應一特定的公司
    [UML圖] (圖1.3)

    圖1.3 公司和員工的關聯關系


    [代碼表現]
    1. public class Company{   
    2.     private Employee employee;   
    3.     public Employee getEmployee(){   
    4.         return employee;   
    5.     }   
    6.     public void setEmployee(Employee employee){   
    7.         this.employee=employee;   
    8.     }   
    9.     //公司運作   
    10.     public void run(){   
    11.         employee.startWorking();   
    12.     }   
    13. }  
    (4)聚合(Aggregation)
    [聚合]
    當對象A被加入到對象B中,成為對象B的組成部分時,對象B和對象A之間為聚集關系。聚合是關聯關系的一種,是較強的關聯關系,強調的是整體部分之間的關系。
    [具體表現]
    與關聯關系一樣,聚合關系也是通過實例變量來實現這樣關系的。關聯關系和聚合關系來語法上是沒辦法區分的,從語義上才能更好的區分兩者的區別。
    [關聯與聚合的區別]
    (1)關聯關系所涉及的兩個對象是處在同一個層次上的。比如人和自行車就是一種關聯關系,而不是聚合關系,因為人不是由自行車組成的。
    聚合關系涉及的兩個對象處于不平等的層次上,一個代表整體,一個代表部分。比如電腦和它的顯示器、鍵盤、主板以及內存就是聚集關系,因為主板是電腦的組成部分。
    (2)對于具有聚集關系(尤其是強聚集關系)的兩個對象,整體對象會制約它的組成對象的生命周期。部分類的對象不能單獨存在,它的生命周期依賴于整體類的對象的生命周期,當整體消失,部分也就隨之消失。比如張三的電腦被偷了,那么電腦的所有組件也不存在了,除非張三事先把一些電腦的組件(比如硬盤和內存)拆了下來。
    [UML圖](圖1.4)

    圖1.3 電腦和組件的聚合關系

    [代碼表現]
    1. public class Computer{   
    2.     private CPU cpu;   
    3.     public CPU getCPU(){   
    4.         return cpu;   
    5.     }   
    6.     public void setCPU(CPU cpu){   
    7.         this.cpu=cpu;   
    8.     }   
    9.     //開啟電腦   
    10.     public void start(){   
    11.         //cpu運作   
    12.         cpu.run();   
    13.     }   
    14. }  

    posted @ 2010-05-07 12:47 suplayer 閱讀(108) | 評論 (0)編輯 收藏

    解決eclipse與360啟動沖突

    在快捷方式屬性-目標里加入 -vm "%JAVA_HOME%/jre/bin/javaw.exe"

    posted @ 2010-04-13 08:45 suplayer 閱讀(185) | 評論 (0)編輯 收藏

    Oracle 10g Express Edition字符集修改

     Oracle 10g Express Edition是Oracle專門為小型用戶提供的免費版本。Oracle XE十分小巧,安裝簡單,可供第三方軟件開發商部署較小的應用。 

      不過Oracle XE目前的beta2缺省安裝的字符集是WE8MSWIN1252,不是中文字符集,并且不能通過直接運行 alter  database  character  set  ZHS16GBK  ; 來修改,因為ZHS16GBK不是缺省字符集的超集。過去流傳很廣的直接修改sys用戶下的PROPS$表的方法,也會給字符集的變更留下很多潛在的問題. 

      不過在安裝完Oracle XE后,可以在sqlplus(即Oracle XE的run SQL command line)中, 進行如下的操作來修改字符集: 

    connect  system/oracle9i  as  sysdba 

    shutdown  immediate 

    startup  mount 

    alter  system  enable  restricted  session  ; 

    alter  system  set  JOB_QUEUE_PROCESSES=0; 

    alter  system  set  AQ_TM_PROCESSES=0; 

    alter  database  open  ; 

    alter  database  character  set  internal_use  ZHS16GBK  ; 

    shutdown  immediate 

    startup 

    這樣字符集的修改就完成了


    摘自紅色黑客聯盟(www.7747.net) 原文:http://www.7747.net/px/200902/34068.html

    posted @ 2009-11-27 19:56 suplayer 閱讀(136) | 評論 (0)編輯 收藏

    解決Oracle XE允許連接的用戶數不足問題



    在數據庫服務器上運行 sqlplus system/password@xe (其中 system 是數據庫用戶無需改變;password 是數據庫密碼應指定為實際密碼;xe 是數據庫實例名稱) ,然后執行:

    alter system set session_cached_cursors=200 scope=spfile;
    alter system set session_max_open_files=200 scope=spfile;
    alter system set sessions=20 scope=spfile;
    alter system set license_max_sessions=200 scope=spfile;
    alter system set license_sessions_warning=200 scope=spfile;
    alter system set processes=200 scope=spfile;

    執行后,重啟 Oracle XE 數據庫實例即可。要重啟 Oracle XE 數據庫實例:

    1. 如安裝于 Windows 上,先運行 net stop oracleservicexe,再運行 net start oracleservicexe 即可。也可通過“服務”管理控制臺重啟 OracleServiceXE 服務。
    2. 如安裝于 Linux 上,先運行 /etc/init.d/oracle-xe start,再運行 /etc/init.d/oracle-xe stop 即可。

    此時,可以支持 179 個額外的連接會話。

    posted @ 2009-11-27 19:54 suplayer 閱讀(417) | 評論 (0)編輯 收藏

    如何改變Oracle 10g Express Edition默認的8080端口

    選擇“運行SQL命令”,進入如下提示符
    SQL>
    首先連接到服務器
    connect 用戶名/密碼
    登陸后輸入如下命令:
    sql 代碼
    1.call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(),'/xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text()',8081));    
    其中8081是修改后的端口,可以任意。
     
    這樣你就不會與Tomcat的默認端口沖突了,方便開發。

    ftp服務占用2100端口,更改命令是:
    sql 代碼
    1.call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get() , '/xdbconfig/sysconfig/protocolconfig/ftpconfig/ftp-port/text()', 2111));   

    posted @ 2009-11-27 19:53 suplayer 閱讀(233) | 評論 (0)編輯 收藏

    Eclipse插件安裝的3種方法

     

       1. 把插件文件直接覆蓋到eclipse目錄里
       2. 使用link文件,就是把插件存放到任一的地方(例如/eclipse/MyPuls),然后 在eclipse的文件夾里新建一個links的文件,在里面添加一些后追名為.link的文件(例如emfPlugins.link)結構是這樣的:

              /eclipse/
                   links/
                        emfPlugins.link
                        webtools.link
                        updateManager.link
                        ...
                   ...

              link文件的里包含這樣一條 “path=D:\\JavaDev\\plugins\\vssplugin”這個路徑就是插件的存放路徑。

       3. 使用eclipse自帶的圖形界面的插件安裝方法:選擇Help > Software Updates > Manager Configuration

        在選擇Add > Extension Location 找到你要安裝插件的目錄就可以了。強烈推薦這種方法,優點很多比如可以方便的添加刪除,也不用自己寫link文件!

    備注:Eclipse插件的目錄結構

        /eclipse-plugins/
           eclipse/
              .eclipseextension
              features/
              plugins/

        第2、3種方法所指向的目錄都指的是"eclipse"目錄,

        如果用第3種方法,在eclipse這個目錄下必須有文件.eclipseextension,如果你下的插件沒有這個文件,那就隨便eclipse安裝目錄下的那個文件靠過去就行了!只有有這么個文件就可以了,內容沒什么用,主要是一些版本信息!例如:

        id=org.eclipse.platform name=Eclipse Platformversion=3.3.1

     

    posted @ 2009-09-06 15:21 suplayer 閱讀(139) | 評論 (0)編輯 收藏

    創建XMLHtttRequest對象

    創建XMLHtttRequest對象(針對mozilla,IE8,FF,IE5,IE5.5,IE6,IE7)
    //2、創建XMLHttpRequest對象
        //這其實是XMLHttpReqest對象使用最復雜的一步
        //針對IE和其他類型瀏覽器建立這個對象的不同方式寫不同的代碼
       
        if(window.XMLHttpRequest){
        //針對firefox,mozillaz,opera,IE7,IE8
            xmlhttp = new XMLHttpRequest();
            //用于修復某些Mozillaz瀏覽器bug
            if(xmlhttp.overrideMimeType)
            {
                xmlhttp.overrideMimeType("text/xml");
            }
        }
        else if(window.ActiveXObject){
            //針對IE6,IE5.5,IE5
            //兩個都可以創建XMLHttpRequest對象,保存在js數組中
            var activeName=["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];

    //var activeName= ['MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.5.0', //'MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0', //'MSXML2.XMLHTTP','Microsoft.XMLHTTP'];
            for(var i =0;i<activeName.length;i++)
            {//取出一個控件名來創建XMLHttpRequest對象,創建成功就終止循環,如果創建失敗可以繼續創建
            //可以拋出異常,繼續創建
                try{
                    xmlhttp= new ActiveXObject(activeName[i]);
                    break;
                }catch(e){
                }
            }
           
        }
        //確認XMLHttpRequest對象已經創建成功
        if(!xmlhttp)
        {
            alert("XmlHttpRequest創建失敗");
            return;
        }   
       
       
        //3、注冊回調函數,函數名后面不要加括號
        //如果加了括號,就變成了調用函數,會把函數的返回值發揮給xmlhttp,沒有達到我們的目的  
        xmlhttp.onreadystatechange=callback;
       
        //4、設置連接信息
        //第一個參數設置http請求方式,主要是get和post兩種方式
        //第二個參數是uri地址
        //第三個參數表示異步交互還是同步交互方式,true表示異步,false表示同步
        xmlhttp.open("GET","/JQuery/servlet/AjaxServlet?name="+username,true);
       
        //5、發送數據開始和服務器端交互
        //同步方式下,send這句話會在服務器端的數據回來后,才執行完
        //異步方式下,send會立即執行完
        xmlhttp.send(null);
    }
    //5、寫回調函數
    //回調函數
    function callback(){
        //接收相應的相應數據
        //判斷交互狀態已經完成
        if(xmlhttp.readyState ==4)
        {
            //判斷http的交互狀態
            if(xmlhttp.status == 200)
            {
               //獲取服務器端返回的數據
                //獲取服務器端純文本數據
                var responseText = xmlhttp.responseText;
                //將數據顯示在頁面上
                //通過dom獲取div元素節點
                var divNode =document.getElementById("result");
                //設置元素節點的html內容
                divNode.innerHTML=responseText;
            }   
        }

     

    posted @ 2009-09-04 21:18 suplayer 閱讀(201) | 評論 (0)編輯 收藏

    網頁頭部 用法

     

    1,<meta name="Robots" contect="all|none|index|noindex|follow|nofollow">   默認是all
    其中的屬性說明如下:
    設定為all:文件將被檢索,且頁面上的鏈接可以被查詢;
    設定為none:文件將不被檢索,且頁面上的鏈接不可以被查詢;
    設定為index:文件將被檢索;
    設定為follow:頁面上的鏈接可以被查詢;
    設定為noindex:文件將不被檢索,但頁面上的鏈接可以被查詢;
    設定為nofollow:文件將不被檢索,頁面上的鏈接可以被查詢。

    2,revisit-after (重訪)
    <META name="revisit-after" CONTENT="7 days" >
    通知搜索引擎多少天訪問一次

    其他的:
    <META NAME="GENERATOR" CONTENT="Macromedia Dreamweaver MX">
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <Meta http-equiv="Content-Language" Content="zh-CN">
    <Meta http-equiv="Refresh" Content="5; Url=http://hi.baidu.com/pihi">
    <Meta http-equiv="Expires" Content="Wed, 26 Feb 1997 08:21:57 GMT">
    <meta http-equiv="cache-control" content="no-cache">
    <META name="keywords" content="關鍵字">
    <meta name="description" content="描述">
    <meta name="author" content="作者">
    <meta name="build" content="日期">
    <meta name="coprright" content="版權">
    <meta name="reply-to" content="email">
    <meta name="robots" content="all">
    <meta http-equiv="Page-Enter" content="RevealTrans (Duration=3, Transition=23)">
    <meta http-equiv="Page-Exit" content="RevealTrans (Duration=3, Transition=23)">
    <link rel="shortcut icon" href="favicon.ico">
    ------------------------------------------------------------------------------------------------------------


    meta標簽分兩大部分:HTTP標題信息(HTTP-EQUIV)和頁面描述信息(NAME)。


    1、Content-Type和Content-Language (顯示字符集的設定)
    說明:設定頁面使用的字符集,用以說明主頁制作所使用的文字已經語言,瀏覽器會根據此來調用相應的字符集顯示page內容。
    注意: 該meta標簽定義了HTML頁面所使用的字符集為GB2132,就是國標漢字碼。如果將其中的“charset=GB2312”替換成“BIG5”,則該頁面所用的字符集就是繁體中文Big5碼。當你瀏覽一些國外的站點時,IE瀏覽器會提示你要正確顯示該頁面需要下載xx語支持。這個功能就是通過讀取HTML頁面Meta標簽的Content-Type屬性而得知需要使用哪種字符集顯示該頁面的。如果系統里沒有裝相應的字符集,則IE就提示下載。其他的語言也對應不同的charset,比如日文的字符集是“iso-2022-jp ”,韓文的是“ks_c_5601”。
    Charset選項:ISO-8859-1(英文)、BIG5、UTF-8、SHIFT-Jis、Euc、Koi8-2、us-ascii, x-mac-roman, iso-8859-2, x-mac-ce, iso-2022-jp, x-sjis, x-euc-jp,euc-kr, iso-2022-kr, gb2312, gb_2312-80, x-euc-tw, x-cns11643-1,x-cns11643-2等字符集;Content-Language的Content還可以是:EN、FR等語言代碼。


    2、Refresh (刷新)
    3、Expires (期限)
    說明:指定網頁在緩存中的過期時間,一旦網頁過期,必須到服務器上重新調閱。
    注意:必須使用GMT的時間格式,或直接設為0(數字表示多少時間后過期)。


    4、Pragma (cach模式)
    說明:禁止瀏覽器從本地機的緩存中調閱頁面內容。
    注意:網頁不保存在緩存中,每次訪問都刷新頁面。這樣設定,訪問者將無法脫機瀏覽。


    5、Set-Cookie (cookie設定)
    說明:瀏覽器訪問某個頁面時會將它存在緩存中,下次再次訪問時就可從緩存中讀取,以提高速度。當你希望訪問者每次都刷新你廣告的圖標,或每次都刷新你的計數器,就要禁用緩存了。通常HTML文件沒有必要禁用緩存,對于ASP等頁面,就可以使用禁用緩存,因為每次看到的頁面都是在服務器動態生成的,緩存就失去意義。如果網頁過期,那么存盤的cookie將被刪除。
    用法:<Meta http-equiv="Set-Cookie" Content="cookievalue=xxx; expires=Wednesday,
    21-Oct-98 16:14:21 GMT; path=/">
    注意:必須使用GMT的時間格式。


    6、Window-target (顯示窗口的設定)
    說明:強制頁面在當前窗口以獨立頁面顯示。
    用法:<Meta http-equiv="Widow-target" Content="_top">
    注意:這個屬性是用來防止別人在框架里調用你的頁面。Content選項:_blank、_top、_self、_parent。


    7、Pics-label (網頁RSAC等級評定)
    說明:在IE的Internet選項中有一項內容設置,可以防止瀏覽一些受限制的網站,而網站的限制級
    別就是通過該參數來設置的。
    用法:<META http-equiv="Pics-label" Contect=
    "(PICS-1.1'http://www.rsac.org/ratingsv01.html'
    I gen comment 'RSACi North America Sever' by 'inet@microsoft.com'
    for 'http://www.microsoft.com' on '1997.06.30T14:21-0500' r(n0 s0 v0 l0))">
    注意:不要將級別設置的太高。RSAC的評估系統提供了一種用來評價Web站點內容的標準。用戶可以設置Microsoft Internet Explorer(IE3.0以上)來排除包含有色情和暴力內容的站點。上面這個例子中的HTML取自Microsoft的主頁。代碼中的(n 0 s 0 v 0 l 0)表示該站點不包含不健康內容。級別的評定是由RSAC,即美國娛樂委員會的評級機構評定的,如果你想進一步了解RSAC評估系統的等級內容,或者你需要評價自己的網站,可以訪問RSAC的站點:http://www.rsac.org/。


    8、Page-Enter、Page-Exit (進入與退出)
    說明:這個是頁面被載入和調出時的一些特效。
    用法:<Meta http-equiv="Page-Enter" Content="blendTrans(Duration=0.5)">
    <Meta http-equiv="Page-Exit" Content="blendTrans(Duration=0.5)">
    注意:blendTrans是動態濾鏡的一種,產生漸隱效果。另一種動態濾鏡RevealTrans也可以用于頁面進入與退出效果:
    <Meta http-equiv="Page-Enter" Content="revealTrans(duration=x, transition=y)">
    <Meta http-equiv="Page-Exit" Content="revealTrans(duration=x, transition=y)">

    Duration 表示濾鏡特效的持續時間(單位:秒)
    Transition 濾鏡類型。表示使用哪種特效,取值為0-23。

    0 矩形縮小
    1 矩形擴大
    2 圓形縮小
    3 圓形擴大
    4 下到上刷新
    5 上到下刷新
    6 左到右刷新
    7 右到左刷新
    8 豎百葉窗
    9 橫百葉窗
    10 錯位橫百葉窗
    11 錯位豎百葉窗
    12 點擴散
    13 左右到中間刷新
    14 中間到左右刷新
    15 中間到上下
    16 上下到中間
    17 右下到左上
    18 右上到左下
    19 左上到右下
    20 左下到右上
    21 橫條
    22 豎條
    23 以上22種隨機選擇一種


    9、MSThemeCompatible (XP主題)
    說明:是否在IE中關閉 xp 的主題
    用法:<Meta http-equiv="MSThemeCompatible" Content="Yes">
    注意:關閉 xp 的藍色立體按鈕系統顯示樣式,從而和win2k 很象。
    10、IE6 (頁面生成器)


    說明:頁面生成器generator,是ie6
    用法:<Meta http-equiv="IE6" Content="Generator">
    注意:用什么東西做的,類似商品出廠廠商。
    11、Content-Script-Type (腳本相關)
    說明:這是近來W3C的規范,指明頁面中腳本的類型。
    用法:<Meta http-equiv="Content-Script-Type" Content="text/javascript">

     

    ★NAME變量


    name是描述網頁的,對應于Content(網頁內容),以便于搜索引擎機器人查找、分類(目前幾乎所有的搜索引擎都使用網上機器人自動查找meta值來給網頁分類)。
    name的value值(name="")指定所提供信息的類型。有些值是已經定義好的。例如description(說明)、keyword(關鍵字)、refresh(刷新)等。還可以指定其他任意值,如:creationdate(創建日期) 、
    document ID(文檔編號)和level(等級)等。
    name的content指定實際內容。如:如果指定level(等級)為value(值),則Content可能是beginner(初級)、intermediate(中級)、advanced(高級)。


    1、Keywords (關鍵字)
    說明:為搜索引擎提供的關鍵字列表
    用法:<Meta name="Keywords" Content="關鍵詞1,關鍵詞2,關鍵詞3,關鍵詞4,……">
    注意:各關鍵詞間用英文逗號“,”隔開。META的通常用處是指定搜索引擎用來提高搜索質量的關鍵詞。當數個META元素提供文檔語言從屬信息時,搜索引擎會使用lang特性來過濾并通過用戶的語言優先參照來顯示搜索結果。例如:
    <Meta name="Kyewords" Lang="EN" Content="vacation,greece,sunshine">
    <Meta name="Kyewords" Lang="FR" Content="vacances,grè:ce,soleil">


    2、Description (簡介)
    說明:Description用來告訴搜索引擎你的網站主要內容。
    用法:<Meta name="Description" Content="你網頁的簡述">
    注意:


    3、Robots (機器人向導)
    說明:Robots用來告訴搜索機器人哪些頁面需要索引,哪些頁面不需要索引。Content的參數有all、none、index、noindex、follow、nofollow。默認是all。
    用法:<Meta name="Robots" Content="All|None|Index|Noindex|Follow|Nofollow">
    注意:許多搜索引擎都通過放出robot/spider搜索來登錄網站,這些robot/spider就要用到meta元素的一些特性來決定怎樣登錄。


    all:文件將被檢索,且頁面上的鏈接可以被查詢;
    none:文件將不被檢索,且頁面上的鏈接不可以被查詢;(和 "noindex, no follow" 起相同作用)
    index:文件將被檢索;(讓robot/spider登錄)
    follow:頁面上的鏈接可以被查詢;
    noindex:文件將不被檢索,但頁面上的鏈接可以被查詢;(不讓robot/spider登錄)
    nofollow:文件將不被檢索,頁面上的鏈接可以被查詢。(不讓robot/spider順著此頁的連接往下探找)


    4、Author (作者)
    說明:標注網頁的作者或制作組
    用法:<Meta name="Author" Content="張三,abc@sina.com">
    注意:Content可以是:你或你的制作組的名字,或Email


    5、Copyright (版權)
    說明:標注版權
    用法:<Meta name="Copyright" Content="本頁版權歸Zerospace所有。All Rights Reserved">
    注意:


    6、Generator (編輯器)
    說明:編輯器的說明
    用法:<Meta name="Generator" Content="PCDATA|FrontPage|">
    注意:Content="你所用編輯器"


    7、revisit-after (重訪)
    說明:
    用法:<META name="revisit-after" CONTENT="7 days" >
     

    posted @ 2009-09-04 21:17 suplayer 閱讀(110) | 評論 (0)編輯 收藏

    使用免安裝版本在windows上手動安裝PostgreSQL

     
        PostgreSQL支持管理員直接手動安裝數據庫,給用戶提供了更大的方便。
        1. 在PostgreSQL官方網站上下載免安裝二進制的包,名字類似于postgresql-*.*.*.*-binaries-no-installer.tar.gz之類的。
    下載到本地,解壓到某路徑PATH下。
        2. 在PATH目錄中創建data文件夾,用于存放數據。
        3. 開始-->運行-->cmd 進入命令行。并cd到PATH\bin目錄下執行下面的命令用來初始化數據庫:
    PATH\bin> initdb.exe -D PATH\data -E UTF8 --locale=C
     

        4. 將pgsql注冊為windows服務,便于操作和控制:

    PATH\bin> pg_ctl.exe register -D PATH\data -N pgsql
     

        其中-N參數用來設置pgsql作為windows服務的名稱。

        5. 啟動和關閉數據庫,在命令行下:

    > net start pgsql (開啟數據庫)

    > net stop pgsql (關閉數據庫)
     

        注:為避免以后可能發生的亞州大字符集的亂碼問題,統一使用UTF8編碼。


    需要一個非管理員帳號來運行PostgreSQL?
    當一個駭客通過軟件的缺陷獲得了侵入一臺計算機的入口時,她獲得的是這個程序運行所用用戶帳號的對應權限。由于我們無法預知PostgreSQL中是否還存在這樣的bug,所以我們強制使用一個非管理員的服務帳號來最小化潛在的駭客利用此類漏洞對系統進行破壞的風險。這樣的設置已是Unix界的慣例做法,同時在Windows世界中,Microsoft以及其他供應商也開始采用這樣的做法來改進他們系統的安全性。補充: 自PostgreSQL 8.2發行后,從管理帳號啟動變得可行。PostgreSQL 8.2及后續版本會在啟動后不可撤銷地放棄管理權限,從而保證了當極端不可能事件,當PostgreSQL受到入侵時,系統的安全性。

     
     
     
     

    posted @ 2009-09-04 21:16 suplayer 閱讀(1642) | 評論 (0)編輯 收藏

    iframe自動適應頁面

    <script type="text/javascript">
    //** iframe自動適應頁面 **//

    //輸入你希望根據頁面高度自動調整高度的iframe的名稱的列表
    //用逗號把每個iframe的ID分隔. 例如: ["myframe1", "myframe2"],可以只有一個窗體,則不用逗號。

    //定義iframe的ID
    var iframeids=["test"]

    //如果用戶的瀏覽器不支持iframe是否將iframe隱藏 yes 表示隱藏,no表示不隱藏
    var iframehide="yes"

    function dyniframesize()
    {
    var dyniframe=new Array()
    for (i=0; i<iframeids.length; i++)
    {
       if (document.getElementById)
       {
        //自動調整iframe高度
        dyniframe[dyniframe.length] = document.getElementById(iframeids[i]);
        if (dyniframe[i] && !window.opera)
        {
         dyniframe[i].style.display="block"
         if (dyniframe[i].contentDocument && dyniframe[i].contentDocument.body.offsetHeight) //如果用戶的瀏覽器是NetScape
          dyniframe[i].height = dyniframe[i].contentDocument.body.offsetHeight;
         else if (dyniframe[i].Document && dyniframe[i].Document.body.scrollHeight) //如果用戶的瀏覽器是IE
          dyniframe[i].height = dyniframe[i].Document.body.scrollHeight;
        }
       }
       //根據設定的參數來處理不支持iframe的瀏覽器的顯示問題
       if ((document.all || document.getElementById) && iframehide=="no")
       {
        var tempobj=document.all? document.all[iframeids[i]] : document.getElementById(iframeids[i])
        tempobj.style.display="block"
       }
    }
    }

    if (window.addEventListener)
    window.addEventListener("load", dyniframesize, false)
    else if (window.attachEvent)
    window.attachEvent("onload", dyniframesize)
    else
    window.onload=dyniframesize
    </script>


    使用的時候只要貼在<head></head>里面就可以

    posted @ 2009-09-03 00:26 suplayer 閱讀(97) | 評論 (0)編輯 收藏

    歡迎加入IT精英俱樂部(QQ群:11672321)

      


            歡迎各位大俠加入IT精英俱樂部(QQ群:11672321)

    posted @ 2009-08-07 11:33 suplayer 閱讀(896) | 評論 (1)編輯 收藏

    dwr回調傳入參數

     

    function check(id,msg){
     var value 
    = DWRUtil.getValue(id);
     
    if (value === ""{
      
    return false;
     }
     
    else {
        UserService.getUserByName(value, 
                function(data)
    {callback                    (data,msg)});
    break;
      }

      
     }

    }

    function callback(data,id,msg) {
        result 
    = DWRUtil.getValue(id);
        result.innerHTML 
    = msg;
    }

    posted @ 2009-07-29 11:44 suplayer 閱讀(135) | 評論 (0)編輯 收藏

    windows xp下Apache2.2.11整合Tomcat6.0.20

     

    一、使用mod_jk.so方式
       
        1.無集群方式
          1)下載、安裝Apache2.2.11,Tomcat6.0.20略
         
          2)下載mod_jk-1.2.28-httpd-2.2.3.so改名為mod_jk.so放到%APACHE_HOME%\modules下(不改名會出錯,不知道為什么)
         
          3)打開%APACHE_HOME%\conf\httpd.conf,找到最末一個Include節點,加入mod-jk_nocluster.conf
         
          4)在%APACHE_HOME%\conf\新建mod-jk_nocluster.conf,加入以下內容:
             
        LoadModule jk_module modules/mod_jk.so

        JkWorkersFile conf/workers_nocluster.properties

        JkLogFile logs/mod_jk_nocluster.log

        JkLogLevel info

        JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

        JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

        JkRequestLogFormat "%w %V %T"

        JkMount /* ajp13

        #關掉主機Lookup,如果為on,很影響性能,可以有10多秒鐘的延遲。
        HostnameLookups Off

          5)在%APACHE_HOME%\conf\新建workers_nocluster.properties,加入以下內容:
         
           worker.list=ajp13
        worker.maintain=60

        worker.ajp13.port=8009
        worker.ajp13.host=localhost
        worker.ajp13.type=ajp13
        worker.ajp13.lbfactor=1
        
       6)啟動Apache,tomcat,在地址欄輸入http://localhost看到tomcat畫面成功了
       
      2.使用集群(以兩個tomcat為例) 
       
        1)、2)同上
       
        3)打開%APACHE_HOME%\conf\httpd.conf,找到最末一個Include節點,更改mod-jk_nocluster.conf為mod-jk_cluster.conf

          4)在%APACHE_HOME%\conf\新建mod-jk_cluster.conf,加入以下內容:
          
         
        LoadModule jk_module modules/mod_jk.so

        JkWorkersFile conf/workers_cluster.properties

        JkLogFile logs/mod_jk_cluster.log

        JkLogLevel info

        JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "

        JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

        JkRequestLogFormat "%w %V %T"

            JkMount /* controller 

        HostnameLookups Off
        
       5)在%APACHE_HOME%\conf\新建workers_cluster.properties,加入以下內容:
       
       worker.list = controller,tomcat1,tomcat2  #server 列表
       #========tomcat1========
       worker.tomcat1.port=18109         #ajp13 端口號,在tomcat下server.xml配置,默認8009
       worker.tomcat1.host=localhost  #tomcat的主機地址,如不為本機,請填寫ip地址
       worker.tomcat1.type=ajp13
       worker.tomcat1.lbfactor = 1   #server的加權比重,值越高,分得的請求越多
       #worker.tomcat1.redirect=tomcat2 #是在cluster環境之下,當tomcat1掛點或無回應,jk會將request導向這個指令指定的其他worker作處理。
       #========tomcat2========
       worker.tomcat2.port=18209       #ajp13 端口號,在tomcat下server.xml配置,默認8009
       worker.tomcat2.host=localhost  #tomcat的主機地址,如不為本機,請填寫ip地址
       worker.tomcat2.type=ajp13
       worker.tomcat2.lbfactor = 1   #server的加權比重,值越高,分得的請求越多
       #worker.tomcat2.activation=disabled #

       #========controller,負載均衡控制器========
       worker.controller.type=lb
       worker.controller.balanced_workers=tomcat1,tomcat2   #指定分擔請求的tomcat
       worker.controller.sticky_session=1
       
       6)修改tomcat1配置文件server.xml,tomcat2配置修改地方同tomcat1,僅需注意相關端口號,在同一臺服務器上時不能重復
       
         以下列出需修改節點地方:
        
         #默認為8005
         <Server port="8105" shutdown="SHUTDOWN">
        
         #默認8080,此處可根據需求修改線程并發等
         <Connector port="8180" ...>
        
         #默認8009,
         <Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />
        
         #name可為Standalone
         <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
        
          <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
          channelSendOptions="6">
      <Manager
       className="org.apache.catalina.ha.session.BackupManager"
       expireSessionsOnShutdown="false" notifyListenersOnReplication="true"
       mapSendOptions="6" />
      <!--
       <Manager className="org.apache.catalina.ha.session.DeltaManager"
       expireSessionsOnShutdown="false"
       notifyListenersOnReplication="true"/>
      -->
      <Channel
       className="org.apache.catalina.tribes.group.GroupChannel">
       <Membership
        className="org.apache.catalina.tribes.membership.McastService"
        mcastBindAddress="127.0.0.1" #安裝了VPN、svn等,會導致綁定失敗需加上此句
        address="228.0.0.4" port="45564"
        frequency="500" dropTime="3000" />
       <Receiver
        className="org.apache.catalina.tribes.transport.nio.NioReceiver"
        address="auto" port="4001" selectorTimeout="100" maxThreads="6" />
       <Sender
        className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
        <Transport
         className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" />
       </Sender>
       <Interceptor
        className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector" />
       <Interceptor
        className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor" />
       <Interceptor
        className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor" />
      </Channel>
      <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
       filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;" />

      <ClusterListener
       className="org.apache.catalina.ha.session.ClusterSessionListener" />
     </Cluster>
     
     在<Host>節點加入
     <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
      tempDir="/tmp/war-temp/xxx/"
      deployDir="/tmp/war-deploy/xxx/"
      watchDir="/tmp/war-listen/xxx/"
      watchEnabled="false"/>
      
      7)將Web應用打成war包放到每一個webapps下,確保web.xml中加了
      <display-name>xxx<display-name>
       <distributable />
       或者直接放到tomcat的web.xml中
      
       至此mod-jk.so方式全配好了,啟動服務就OK了!
      
      
    待續Apache新增的配置方式。。。。。。

     

     

    posted @ 2009-07-10 16:14 suplayer 閱讀(1496) | 評論 (1)編輯 收藏

    求助:windows xp下svn-win32-1.6.3整合Apache2.2.11搭建svn服務器

     

      1.安裝Apache-httpd-2.2.11
     
      2.下載svn-win32-1.6.3.zip for Apache-httpd-2.2.11,解壓到某個目錄
     
      3.添加環境變量%SVN_HOME%,修改%PATH%,增加%SVN_HOME%\bin
     
      4.新建空目錄x:\Respository\test\
     
      5.進入命令行:svnadmin create --fs-type fsfs x:\Respository\test\
     
      6.進入x:\Respository\test\conf\svnserve.conf
        去掉注釋
         auth-access = write  
         password-db = passwd
        
         在本目錄passwd文件中新建用戶 xxx = xxx
        
       7.新增服務
      
         sc create svnservice binPath= "%SVN_HOME%\bin\svnserve.exe --service -r x:\Respository" displayname= "SVNService" depend= Tcpip start= auto
        
         刪除服務運行"sc delete svnservice"
        
       8.復制%SVN_HOME%\bin中的文件mod_dav_svn.so和mod_authz_svn.so到%APACHE_HOME%\modules目錄,
         復制%SVN_HOME%\bin\libdb44.dll、libeay32.dll、 ssleay32.dll到%APACHE_HOME%\bin 
      
       9.%APACHE_HOME%\conf\httd.conf做如下修改:

         去掉以下行的注釋(將開頭的#刪除):

       #LoadModule dav_fs_module modules/mod_dav_fs.so
       #LoadModule dav_module modules/mod_dav.so
       在LoadModule節的最后添加以下兩行:

       LoadModule dav_svn_module modules/mod_dav_svn.so
       LoadModule authz_svn_module modules/mod_authz_svn.so

          在文件末尾加入:
       <Location /svn>
         DAV svn
         SVNParentPath x:\Respository         
         AuthType Basic
         AuthName "Subversion repositories"
         AuthUserFile x:\Respository\conf\passwd       
         #AuthzSVNAccessFile x:\Respository\conf\authz
         Require valid-user
       </Location> 
       
      可是現在啟動不了Apache ,那位大俠能幫幫我,網上找了好多都試過了還是不行

    posted @ 2009-07-10 16:12 suplayer 閱讀(1337) | 評論 (0)編輯 收藏

    右鍵彈出菜單

      <script   language="javascript">  
      var   oPopup=null;   //彈出菜單  
      var   popWidth=110;   //彈出菜單的寬度  
      var   popHeight=140;   //彈出菜單的高度  
      var   curRow=null;   //記錄彈出菜單最后指向的行  
       
      function   init(){  
            oPopup   =   window.createPopup();  
            var   oPopBody   =   oPopup.document.body;  
            //設置菜單樣式  
            oPopBody.style.backgroundColor   =   "scrollbar";  
            oPopBody.style.border   =   "2px   solid";  
            oPopBody.style.borderColor   =   "buttonhighlight   buttonshadow   buttonshadow   buttonhighlight"  
            var   strHTML=""  
            strHTML+='<table   oncontextmenu="return   false;"   onselectstart="return   false;"   id="tbMenu"   ';  
            strHTML+='   style="cursor:default;   width:100%;   height:100%;font-size:12px;"   border=0   cellpadding=0   cellspacing=2>';  
            //在這里擴展菜單的選項start  
            strHTML+='<tr   operation="edit"><td>&nbsp;&nbsp;編輯</td></tr>';  
            strHTML+='<tr   operation="refresh"><td>&nbsp;&nbsp;刷新</td></tr>';  
            strHTML+='<tr   operation="addrowup"><td>&nbsp;&nbsp;添加新行(上)</td></tr>';  
            strHTML+='<tr   operation="addrowdown"><td>&nbsp;&nbsp;添加新行(下)</td></tr>';  
            strHTML+='<tr   operation="delrow"><td>&nbsp;&nbsp;刪除該行</td></tr>';  
            strHTML+='<tr   operation="moveup"><td>&nbsp;&nbsp;向上移動一行</td></tr>';  
            strHTML+='<tr   operation="movedown"><td>&nbsp;&nbsp;向下移動一行</td></tr>';  
            //在這里擴展菜單的選項end  
            strHTML+='</table>';  
       
            oPopBody.innerHTML=strHTML;  
            var   tb   =   oPopup.document.getElementById("tbMenu");  
            var   rs=tb.rows;  
            for(var   i=0;i<rs.length;i++){  
                  var   row=rs[i];  
                  addEvent(row);  
            }  
      }  
       
      function   showMenu(){  
            var   e=window.event;  
            var   src=e.srcElement;  
            oPopup.show(window.event.clientX,   window.event.clientY,   popWidth,   popHeight,   document.body);  
            window.event.returnValue=false;  
      }  
       
      function   addEvent(row){  
            row.attachEvent("onmouseover",function(){selRow(row)});  
            row.attachEvent("onclick",function(){onEvent(row)});  
      }  
       
       
      function   selRow(src){  
            if(curRow!=null){     curRow.style.backgroundColor="scrollbar";   curRow.style.color="black";}  
            curRow=src;       curRow.style.backgroundColor="midnightblue";   curRow.style.color="white";  
      }  
       
      function   onEvent(src){  
            oPopup.hide();  
            switch(src.operation){  
                  //在這里為菜單項的點擊事件添加處理方法  
                  //本示例的方法只供參考,沒有實現  
                  case   "edit":   example(src.operation);   break;  
                  case   "refresh":   example(src.operation);   break;  
                  case   "addrowup":   example(src.operation);   break;  
                  case   "addrowdown":   example(src.operation);   break;  
                  case   "delrow":   example(src.operation);   break;  
                  case   "moveup":   example(src.operation);   break;  
                  case   "movedown":   example(src.operation);   break;  
                  default:   return;  
            }  
            src.style.backgroundColor="scrollbar";    
            src.style.color="black";  
            curRow=null;    
      }  
       
      function   example(str){  
            alert("您選擇了"+str+"操作!");  
      }  
      </script>
    <body onload="init();showMenu()">
    </body>

    posted @ 2009-06-29 14:35 suplayer 閱讀(137) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 99久9在线|免费| 精品女同一区二区三区免费播放 | 日本免费一区尤物| 全免费一级午夜毛片| 精品国产免费观看久久久| 成人午夜大片免费7777| 国产精品国产免费无码专区不卡| 毛片高清视频在线看免费观看| 免费A级毛片无码免费视| 精品少妇人妻AV免费久久洗澡| 国产zzjjzzjj视频全免费| 免费观看国产小粉嫩喷水| 四虎精品亚洲一区二区三区| www国产亚洲精品久久久| 亚洲精品色婷婷在线影院| 中文亚洲AV片在线观看不卡| 亚洲精品国产精品乱码视色| 亚洲第一福利网站| 亚洲精品视频在线观看视频| 亚洲不卡在线观看| 亚洲A∨精品一区二区三区下载| 国产成人精品亚洲一区| fc2成年免费共享视频18| 免费精品一区二区三区第35 | sss在线观看免费高清| 最新亚洲成av人免费看| 99国产精品免费视频观看| 在线天堂免费观看.WWW| 日本免费的一级v一片| 久久精品夜色噜噜亚洲A∨| 亚洲av福利无码无一区二区| 亚洲大尺码专区影院| WWW亚洲色大成网络.COM| 丰满人妻一区二区三区免费视频| 小草在线看片免费人成视久网| 中文字幕无码免费久久99| 亚洲AV日韩精品一区二区三区| 国产亚洲综合久久系列| 亚洲综合丁香婷婷六月香| 无遮挡呻吟娇喘视频免费播放| 在线涩涩免费观看国产精品 |