posts - 11, comments - 0, trackbacks - 0, articles - 3

          2006年11月1日

          第一種:
          ????<script language="javascript" type="text/javascript">
          ?????????? window.location.href=
          "login.jsp?backurl="+window.location.href;
          ????</script>

          第二種:
          ????<script language=
          "javascript">
          alert(
          "返回");
          window.history.back(-1);
          ?? </script>

          第三種:
          ?? <script language=
          "javascript">
          window.navigate(
          "top.jsp");
          ??</script>

          第四種:
          ?? <script language=
          "JavaScript">
          ??????????self.location='top.htm';
          ?? </script>

          第五種:
          ?? <script language=
          "javascript">
          ??????????alert(
          "非法訪問!");
          ??????????top.location='xx.jsp';
          ?? </script>

          posted @ 2007-03-28 01:16 團隊精神 閱讀(309) | 評論 (0)編輯 收藏

          關于 Servlet 中的事件監聽

          Servlet2.3 規范中添加了一些監聽 web 應用中重要事件的能力。這項功能可以讓我們根據事件的狀態更有效的對資源進行管理和自動化進行。這部分描述了 servlet 的事件監聽,包含以下部分:

          1. ? 事件的分類和 Listener 接口

          2. ? 典型的事件監聽過程

          3. ? 事件監聽的聲明和調用

          4. ? 事件監聽編碼和發布向導

          5. ? 事件監聽的方法和相關的類

          事件的分類和 Listener 接口

          Servlet 事件有兩個級別:

          1. ? Application 級別事件

          包含著運行應用程序的虛擬機級別的相關資源和狀態,即和 servlet Context 對象相關。

          2. ? Session 級別的事件

          包含著一個單一用戶的 session 的一系列請求的相關資源和狀態,即 Http Session 對象。

          在上面兩個級別的事件,又可分別分為兩種:

          1. ? 生命周期的改變

          2. ? 屬性的改變

          你可以為上面四種事件創建一個或多個監聽類。一個單一的監聽類可以監視多種事件。

          創建一個事件類可以從 javax.servlet 包或 javax.servlet.http 包中實現合適的接口。下表中列出了四種事件相關的接口。

          事件種類

          事件描述

          接口

          Context 生命周期的改變

          context 的建立和即將關閉 context

          Javax.servlet.ServletContextListener

          Context 屬性值的改變

          添加,刪除,修改 context 的屬性值

          Javax..servlet.ServletContextAttributeListener

          Session 生命周期的改變

          Session 的創建,注銷,超時

          Javax.servlet.http.HttpSessionListener

          Session 屬性值的改變

          添加,刪除,修改 session 的屬性值

          Javax.servlet.htpp.HttpSessionAttributeListener

          典型的事件監聽過程

          考慮一個 web 應用是由一組訪問數據庫的 servlet 組成的。一個典型的事件監聽機制是這樣的,創建一個 context 生命周期的事件來管理數據庫連接,這個監聽器可以有如下的功能:

          1. ? 這個監聽器監視著應用程序的啟動

          2. ? 這個應用程序寫入日志到數據庫中并且把連接對象存儲在 context

          3. ? Servelt 使用連接對象來執行 SQL

          4. ? 監聽器監聽應用程序的即將關閉

          5. ? 在關閉應用程序之前,先關閉連接對象

          事件監聽的聲明和調用

          事件監聽的聲明在應用程序的 web.xml 里,用 <listener> 元素,該元素是 <web-app> 的子元素。每個監聽器都對應一個 <listener> ,有一個 <listener-class> 子元素用來指定對應的類名。在每種事件中,你需要指定你想調用的順序。

          在應用程序啟動之后,并且在第一次請求之前, servlet 容器會創建并注冊每個監聽類的實例。每種事件,監聽器是按照他們聲明的順序來注冊的。然后,當應用程序開始運行,每種事件監聽器安裝他們的順序調用。在最后一次請求之前,所有的監聽器都保持活動狀態。

          一旦應用程序關閉, session 事件首先發生,以他們聲明的順序相反。然后 context 事件發生也是以聲明的順序相反。

          下面是一個例子:

          <web-app>

          ?? <display-name>MyListeningApplication</display-name>

          ?? <listener>

          ????? <listener-class>com.acme.MyConnectionManager</listenerclass>

          ?? </listener>

          ?? <listener>

          ????? <listener-class>com.acme.MyLoggingModule</listener-class>

          ?? </listener>

          ?? <servlet>

          ????? <display-name>RegistrationServlet</display-name>

          ????? ...

          ?? </servlet>

          </web-app>

          假設 MyConnectionMnanager MyLoggingModule 都是實現 ServletContextListener 接口, MyLoggingModule 也是實現了 HttpSessionListener 接口。

          當應用程序運行,兩個監聽器都會監聽 context 生命周期事件, MyLoggingModule 監聽器還會監聽 session 生命周期。在 context 生命周期中, MyConnectionMananger 會首先開始監聽,因為它聲明在前面。

          事件監聽器的編碼和發布指南

          請注意事件監聽器類的以下規則和指南:

          l ???????? 在多線程的應用程序中,屬性可能同時改變。這是不需要 Servlet 容器來同步結果――在這種情況下監聽類本身負責保持數據的完整性。

          l ???????? 每個監聽類都必須有一個 public 的零參數的構造函數。

          l ???????? 每個監聽類文件必須打包到 WAR 文件,也可以是在 /WEB-INF/classes 或是包含在 /WEB-INF/lib 下的 JAR 文件中。

          注意:在分布式的環境中,事件監聽類的作用域是包含這個部署描述文件的虛擬機。不需要分布式的 Web 容器來傳遞 servlet context 事件或是 session 事件到其他的虛擬機。這個在 Sun Microsystem Java Servlet 規范, 2.3 版本。

          事件監聽器的方法和相關的類

          這部分列出了事件監聽器的方法,當 servlet context 事件或是 servlet session 事件發生時,容器將會調用他們。這些方法的輸入的事件對象的類型不一樣,因此一下討論事件類和他們的方法。

          ServletContextListener 方法, ServletContextEvent

          ServletContextListener 接口規范以下的方法:

          ?????? void contextInitialized(ServletContextEvent sce)

          ????????????? servlet 容器調用這個方法來通知監聽器, servlet context 已經建立并且應用程序準備處理請求。

          ?????? void contextDestory(ServletContextEvent sce)

          ????????????? servlet 容器調用這個方法來通知監聽器應用程序即將關閉。

          Servlet 容器創建一個 java.servlet.ServletContextEvent 對象作為調用 ServletContextListener 方法的輸入。 ServletContextEvent 類包含以下方法,你的監聽器可以調用

          ServletContext getServletContext()

          用這個方法返回已創建的或是將要銷毀的 servlet context 對象,從中你可以得到你想要的信息

          posted @ 2007-03-28 01:14 團隊精神 閱讀(287) | 評論 (0)編輯 收藏

          事務:是單個的原子的操作的集合,由獨立的操作組成,又一種一致的狀態轉化為另一種一致的狀態。

          • 事物的四個屬性ACID:

            • ? 原子性:事務是一個不可分割的工作單元。要么全部執行、要么全部不執行。

            • 一致性:總體上不能破壞業務規則,使一種一致狀態轉化為另一種一致狀態。

            • 隔離性:每個事務必須獨立于其他事務執行,并且事務中的操作同時發生。

            • 持久性:確保事務提交后,其輸入是永久性的。

          事務的開始:標準SQL-99:START TRANSACTION

          ?????????????????????????MYSQL:用START TRANSACTION和BEGIN來啟動事物

          ?????????????????????????ORACLE:不支持START TRANSACTION ,它是自動啟動的

          在提交事務(COMMIT)之前可以用ROLLBACK回滾事務。

          ORACLE事務保存點的設置(MYSQL不支持):SAVEPOINT 保存點名稱;

          ORACLE中設置事務提交模式的方法:SET AUTOCOMMIT ON/OFF

          MYSQL中的方法是:SET AUTOCOMMIT=0/1???

          ?

          高級事務:

          • ????ORACLE中支持的事務隔離級別有:1)只讀事務? 2)提交讀(默認)3)可串行讀

          設置語法為(ORACLE):

          ?????????????SET TRANSACTION

          ???????????????{{READ ONLY|READ WRITE}

          ??????????????????|ISOLATION LEVEL

          ?????????????????????{ READ COMMIT|SERIALIZABLE}};???

          posted @ 2006-11-10 22:24 團隊精神 閱讀(274) | 評論 (0)編輯 收藏

          1. CURSOR-ALREADY-OPEN:如果打開一個已經打開的游標時的異常。

          2. DUP-VAL-ON-INDEX:如果試圖添加行帶有重復主鍵值或者唯一索引值時產生的異常。

          3. ?INVALID-NUMBER:將不包含數字的字符串轉換成數字時產生。

          4. NO-DATA-FOUND: 使用select into語句將一個值存入一個變量,但是select語句沒有返回行十產生

          5. TOO-MANY-ROWS:使用select into語句給變量負值,但返回了多個行。

          6. OTHERS:其他異常。

          posted @ 2006-11-10 21:50 團隊精神 閱讀(285) | 評論 (0)編輯 收藏

          • 我的理解,存儲過程就相當于JAVA中的方法;它可以

            • 輸入參數和輸出參數的形式將多個值返回至調用過程或批處理。

            • 包含數據庫執行操作(包括調用其他過程)的編程語句。

            • 向調用過程或批處理返回狀態值,以表明成功或失敗(以及失敗原因)。

          • 儲存過程的優點:

            • 允許模塊化程序設計。只需要創建一次并儲存在數據庫中,以后可以在程序中調用該程序任意次。

            • 允許更快執行。大量的SQL代碼需要執行的時候,存儲過程要比SQL代碼的執行過程快。

            • 減少網絡流量:多行SQL代碼可以由一行執行存儲過程的單獨語句實現,而不需發送多條SQL代碼。

            • 可以作為安全機制使用。對沒有權限直接使用存儲過程中代碼的用戶,給予他們使用儲存過程的權限。

          • 創建儲存過程: create or replace?procedure 儲存名 AS begin 儲存過程主體 end;?/??----?? oracle(支持IS代替AS)

          • 使用存儲過程:call 存儲過程名(program);

          • 刪除和更改存儲過程名:drop procedure 存儲過程名; alter procedure procName;

          • 定義變量:declare 變量名 變量類型(長度);

          • 游標是代表一個結果集的一種方式,他允許循環遍歷一個行集合,每次一行。

          • 聲明游標:declare 游標名 cursor is sql查詢;

          posted @ 2006-11-09 22:46 團隊精神 閱讀(274) | 評論 (0)編輯 收藏

          • 視圖,是用戶查看數據表中數據的一種方式,用戶可以通過它瀏覽數據表中部分或者全部數據.視圖就像是一個表一樣,但是實際上是引用的其基表中的的數據。同時如果想視圖的基表中添加列,試圖中是不會出現新的列的,除非刪除或重新創建視圖。此外視圖不能加參數。

          • 視圖的優點:

            • 將用戶的注意力集中到特定的數據上,保護數據的安全。

            • 簡化了數據的查詢和處理操作。

            • 有利于簡化數據交換的操作。

            • 有利于簡化對用戶權限的管理

          • 創建視圖:create view 視圖名 AS? query(任何SQL查詢);

          • 更改視圖:alter view 視圖名 as newquery;?? ---(mysql中用)??? create or replace view 視圖名 as newquery;? ---(oracle中用)

          • 查看視圖:show create view 視圖名;? ---(mysql)

          • 刪除視圖: drop view 視圖名;

          posted @ 2006-11-09 21:40 團隊精神 閱讀(236) | 評論 (0)編輯 收藏

          1. 使用兩表相等連接(標準形式):?select table1.column1, table1.column2,table2.column3 from table1 join table2 on? table1.column1= table2.column2;(使用別名在列后(如table1.column1后)加?? as 別名)

          2. 事業多表相等連接:select?* from table1 join table2 on? table1.column1= table2.column2 join table3 on table1.column3= table3.column4;\

          3. 內連接: 內連接是使用比較運算符根據每個表共有的列的值匹配兩個表中的行.: select table1.column1,table2.column2 from table1 inner join table2 on table1.column1 = table2.column;

          4. 外連接:是考慮到源表有些不匹配的情況分為三種:左外連接(以左表為準,右表中沒有匹配的指就顯示空),右外連接(以右表為準,左表中沒有匹配的指就顯示空),全外連接(左,右外連接都要執行) 即關鍵語法為left outer join,right outer join,full outer join

          posted @ 2006-11-07 23:09 團隊精神 閱讀(278) | 評論 (0)編輯 收藏

          ??????1)實體完整性:實體的存在是獨立于數據庫的,一個表如果與它所代表的實體完全一致,我們就說該表具有試題完整性。實體完整性強制表的表示符列或主鍵的完整性(通過索引、唯一約束、主鍵或標示列(自動增長的列)屬性)。
          ??????2)域完整性:指給定列的輸入有效性。強制域有效性的方法有:限制類型(通過數據類型)、格式(通過檢查約束和規則)或可能值的范圍(通過外鍵約束、檢查約束、默認值定義、非空約束和規則)。
          ??????3)引用完整性:保持表之間已定義的關系,確保鍵值在所有表中的一致性。
          ??????4)用戶自定義完整性:可以定義不屬于其他任何完整性的特定業務規則。

          posted @ 2006-11-02 23:03 團隊精神 閱讀(265) | 評論 (0)編輯 收藏

          ??????今天學習了關系型數據庫設計,昨天的模糊開始有點點頭緒了。因為有點實際的東西做了。
          ??????重要概念: 規范化數據,指數據被組織成一種結構,既可以保持數據的完整性,同時最小化數據的冗余。

          ??????最基本的規則——范式
          ??????第一范式:1、一個行的每一列必須是原子性的。即只能有一個值。
          ????????????????????????2、表中每一行必須包含相同數量的列。
              ?????? 3、一個表中的所有行必須是不同的。

          ??????第二范式:1、必須遵循第一范式。
          ?????????????????????????2、非主鍵列必須依賴于主鍵列。
           ???第三范式:1、必須遵循第二范式。
          ?????????????????????????2、非主鍵列必須依賴于主鍵列,且必須彼此相互獨立。

          ??????關系:一對一、一對多、多對多
          ??????外鍵:表中的一到多個列與另一個表中的一到多個列相匹配。
          ??????實體:一個代表一系列相關數據的對象。

          ??????創建數據模型:
          ??????識別實體,規范化數據,識別關系,改進數據模型。

          posted @ 2006-11-01 22:36 團隊精神 閱讀(302) | 評論 (0)編輯 收藏

          ?數據庫,就是以某種方式相關的數據的集合。主要的模型有:層次模型,網狀模型,關系模型(用最多的),對象模型。第一種模型的缺點就是更改復雜,費時,便利麻煩且易丟失數據。第二種是層次模型的增強,但是仍然有很多層次模型的缺點,一個更改可能導致更復雜的更改。關系模型是獨立于應用程序的,使更改數據庫設計,而不會影響應用程序成為可能,在表之間定義復雜的關系。
          ??????SQL是結構化查詢語言(Structured Quer Language)的英文縮寫,是一種用于管理關系型數據庫并且與數據庫中的數據進行通信的計算機語言。SQL與RDBMS協同工作來定義數據庫的結構、儲存數據、操作數據、獲取數據、控制對數據的訪問以及確保數據的完整性。SQL是數據庫語言的標準
          ??????SQL語句主要有三種:
          ??????1、DDL語句:用于創建、修改和刪除數據庫內的數據結構。
          ??????2、DML:  主要用于儲存在數據庫中的數據本身的插入、更改、刪除和查詢(SELECT)。
          ??????3、DCL:  主要是控制對數據庫的訪問權限。

          ??????ORACLE體系結構:
            主要分為兩層:一是ORACLE實例(ORACLE INSTANCE) ,二是ORACLE9I的數據文件。
          ????????其中ORACLE INSTANCE又包括系統全局區(SGA)和后臺處理程序
          ?????????SGA又包裹以下幾個重要的區域:
          ??????1、塊緩沖區高速緩存,用于存放讀取自數據文件的數據塊副本,或者用戶曾經處理過的數據。對應于DBMR(數據寫進程)。
          ??????2、重做日志緩沖區:對數據的修改被順序的記錄在該緩沖區,以便必要時候的恢復工作。主要對應于LGWR(日志寫進程)。
          ??????3、共享池: 重要用于存放解析過的SQL語句的結果,下次寫入同樣的SQL語句時就直接調用該結果,節省了時間,是特地為數據字典提供的一塊緩沖池。

          posted @ 2006-11-01 17:17 團隊精神 閱讀(528) | 評論 (0)編輯 收藏

            我是一個JAVA的新人,也沒有什么編程語言作為基礎.但是我對這個行業的興趣和熱愛覺得不會亞于一個編程熟練的人.
            初步學習了JAVA后,對其面向對象有了較為深刻的理解,也深深的對其魅力所吸引,他似乎可以模擬真實世界的任何東西(只要你能想到的).
            今天我進行了數據庫的初步學習,說實話理論這東西不管是自己去看還是聽老師講,很多人都有一個共同的反應,就是想睡覺,但用起來又特別的起勁.今天上數據庫的課對數據庫還是很模糊,相信在以后的學習中一切都會好起來.因為我更喜歡在運用中去理解東西.

          posted @ 2006-11-01 00:20 團隊精神 閱讀(137) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 平邑县| 张掖市| 定边县| 龙川县| 军事| 邮箱| 微博| 林周县| 甘泉县| 河北省| 贵州省| 措美县| 曲阜市| 芜湖市| 临汾市| 红河县| 太仓市| 仁怀市| 颍上县| 合阳县| 无为县| 灵山县| 台东县| 孙吴县| 巴东县| 伽师县| 辛集市| 海宁市| 中方县| 深水埗区| 望奎县| 沂源县| 云浮市| 双流县| 保靖县| 方城县| 武穴市| 永安市| 神池县| 横山县| 梓潼县|