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

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

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

    posts - 66,comments - 41,trackbacks - 0
    Struts應用采用兩個基于XML的配置文件來配置,分別是web.xml和struts-cofig.xml文件.web.xml文件是配置所有web應用的而struts-config.xml文件是struts專用的配置文件,事實上也是可以根據需要給這個配置文件起其他名稱的.
            Web應用的發布描述文件:

            web應用發布描述文件可以在應用開著者,發布者和組裝者之間傳遞配置信息,Web容器在啟動的時候從該文件中讀取配置信息,根據它來裝載和配置web應用.文檔類型定義DTD對XML文檔的格式做了定義,DTD吧XML文檔劃分為元素,屬性,實體每一種XML文檔都有獨自的DTD文件.可以從網上下載.<web-app>元素是web.xml的根元素,其他元素必須嵌入在<web-app>元素之內.要注意的是子元素也是有順序的比如必須是首先<servlet>,然后<servlet-mapping>最后<taglib>.

            為Struts應用配置Web.xml文件:

            首先最重要的一步是配置ActionServlet,這個用<servlet>標簽的servlet-name屬性起一個名字叫action,然后用servlet-class屬性指定ActionServlet的類.

            然后用<servlet-mapping>標簽的servlet-name屬性指定action,在用url-pattern指定接收范圍是*.do的請求.不管應用中包含了多少子應用,都只需要配置一個ActionServlet,類來出來應用中的不同的功能,其實者就是不必要的,因為Servlet本身就是多線程的,而且目前Struts只允許配置一個ActionServlet.聲明ActionServlet的初始化參數:<servlet>的<init-param>子元素用來配置Servlet的初始化參數.param-name設置config參數名.param-value設置struts-config.xml的路徑參數值.

            配置歡迎使用清單:

            如果客戶訪問Web的時候值是訪問了WEB應用的根目錄URL.沒有具體的指定文件,Web會自動調用Web的歡迎文件.<welcome-file-list>元素來配置的.通過其中的<welcome-file>歡迎頁面</welcome-file>來配置.

            配置錯誤處理:

            盡管Struts框架功能強大的錯誤處理機制,但是不能保證處理所有的錯誤或者異常.當錯誤發生時,如果框架不能處理這種錯誤,把錯誤拋棄給Web容器,在默認的情況下web容器會想客戶端返回錯誤信息.如果想避免讓客戶看到原始的錯誤信息,可以在Web應用發布描述文件中配置<error-page>元素.通過<error-code>404來定義錯誤的類型.然后通過<location>要處理錯誤的JSP頁面來對錯誤進行處理.還可以用<exception-type>來設置異常,然后通過<location>來處理異常的JSP頁面來處理異常.

            配置Struts標簽庫:

            這個就和以前學到的JSP自定義標簽類似,配置元素為<taglib>來配置.<taglib-uri>這個指定標簽庫的uri,類似起一個名稱.<taglib-location>這個是標簽庫的位置也就是實際所在的路徑.通過這樣的方法引入一個標簽庫,然后在前臺JSP頁面就可以通過自己定義的URI來調用標簽.

            Struts配置文件:

            struts-config.xml文件.

            首先研討一下org.apache.struts.config包,在struts應用啟動的時候會把Struts配置文件信息讀取到內存中,并把它們存放在config包中相關的JavaBean類的實例中.包中的每一個類都和struts配置文件中特定的配置元素對應,ModuleConfig在Struts框架中扮演了十分重要的角色,它是整個config包的核心,在Struts運行時來存放整個應用的配置信息.如果有多個子應用都會有一個ModuleConfig對象,它和Struts文件根元素的<struts-config>對應.根元素中包含<form-bean><action><forward>等元素.

            <struts-config>元素:時Struts配置文件的根元素,和它對應的配置類ModuleConfig類,<struts-config>元素有8個子元素.他們的DTD定義是data-sources?form-bean? global-exception?global-forwards?action-mapping?controller?message-resources?plug-in*在Struts配置文件中,必須按照DTD指定的先手順序來配置<struts-config>元素的各個子元素,如果顛倒了這些子元素的順序,會產生錯誤.

            <data-sources>元素:用來配置應用所需要的數據源,數據源負責創建和特定的數據庫的連接.許多數據源采用連接池的機制實現.以便提高數據庫訪問的性能.JAVA語言提供了javax.sql.DataSource接口,所有的數據源都必須實現這個接口.許多應用服務器和Web服務器都提供了數據源組件.很多數據庫廠商也提供了數據源的實現.<data-sources>元素包含多個<data-source>子元素永遠配置特定的數據源.他們可以包含多個<set-property>子元素用于設置數據源的各種屬性.配置了數據源以后,就可以在Action類中訪問數據源,在Action中定義了getDataSource(HttpRequest)方法,用于獲取數據源對象的引用.然后可以利用DataSource對象調用getConnection獲取一個連接對象對數據庫進行操作.在配置文件中聲明多個數據源的時候需要為每一個數據源分配唯一的Key值,通過這個來表示特定的數據源.獲取特定的數據源的時候可以用dataSource = getDataSource(reqeust,”A”);

            <form-beans>元素:用來配置多個ActionForm,包含一個或者N個<form-bean>子元素.每個<form-bean>元素都包含多個屬性.className指定和<form-bean>匹配的類.name指定該ActionForm的唯一標識符,這個屬性是必須的以后作為引用使用.type指定ActionForm類的完整類名,這個屬性也是必須的.注意包名也要加上.<form-property>是指定動態的Form的元素,以后會深入了解.

            <global-exception>元素:用于配置異常處理,元素可以包含一個或者多個<exception>元素,用來設置JAVA異常和異常處理類ExceptionHandler之間的映射.className指定和元素對應的配置類,默認的不用動.handler指定異常處理類默認是ExceptionHandler.key指定在本地資源文件中異常的消息Key,path指定當前異常發生的時候轉發的路徑.scope指定ActionMessages實例存放的范圍.type指定需要處理異常類的名字,必須的.bundle指定Resource Bundle.

            <global-forwards>元素:用來聲明全局轉發,元素可以有一個或者N個<forward>元素組成,用于把一個邏輯名映射到特定的URL,通過這種方法Action類或者JSP頁面無需指定URL,只要指定邏輯名稱就可以實現請求轉發或者重定向.這樣可以減少控制組件和視圖的聚合.易于維護.className對應的配置類.contextRelative如果為true表示當path屬性以/開頭的時候,給出的是對應的上下文URL默認是false.name轉發路徑的邏輯名,必須寫.path轉發或者重定向的URL,必須寫必須是以/開頭.redirect設置為true的時候表示執行重定向操作,此項為false的時候,表示執行請求轉發操作.重定向與請求轉發的區別以后就是重定向是把請求生成應答給客戶端然后在重新發送給定向的URL,瀏覽器地址欄會有顯示.而轉發就是直接把請求轉發給本應用的另一個文件,不生成應答所以客戶端IE沒顯示.

            <action-mapping>元素:包含一個或者N個<action>元素,描述了從特定的請求路徑到響應的Action的映射.在<action>元素中可以包含多個<exception>和<forward>子元素,他們分別配置局部異常處理和局部轉發.attribute設置Action關聯的ActionForm在request或者session范圍內的key.就是在request或者session共享內的名稱.className對應配置元素的類.默認的是ActionMapping.forward指定轉發URL路徑include指定包含URL路徑.input指定包含表單的URL,當表單驗證失敗的時候發送的URL.name,指定和該Action關聯的Form名字.該名字必須是在form-bean中定義過的,可寫可不寫.path必須/開頭的方位Action的路徑.parameter指定Action配置參數.在Action的execute()方法中可以調用ActionMapping的getParameter()方法來讀取匹配的參數.roles指定允許調用該Action的安全角色,多個角色之間逗號格開.scope指定Form的存在范圍.默認是session.tyep指定Action的完整類名.unknown如果是true表示可以處理用戶發出的所有的無效的ActionURL默認是false.validate指定是否調用ActionForm的validate方法.

            <controller>元素:用于配置ActionServlet.buffreSize指定上載文件的輸入緩沖大小.該屬性為可選默認4096.className指定元素對應的配置類,ControllerConfig.然后是contentType指定響應結果內容類型和字符編碼,該屬性為可選,默認是text/html如果在Action或者JSP網頁也設置了類型內容,會覆蓋這個.locale指定是否把Locale對象保存到當前用戶的session中默認false.tempDir指定處理文件上載的臨時工作目錄.nochache如果是true在響應結果中加入特定的頭參數.

            <message-resources>元素:用來配置Resource Bundle.用于存放本地文本消息文件.className元素對應的配置類.MessageResourcesConfig.factory指定消息的工廠類.key指定文件存放的Servlet對象中采用的屬性Key.null指定如何處理未知消息.parameter指定消息的文件名.

            <plug-in>元素:用于配置Struts插件.

            配置多應用模塊:所有的子應用都可以共享同一個ActionServlet實例,但是每個子應用都有單獨的配置文件.把應用劃分為多個子應用模塊.首先為每個應用創建單獨的Struts配置文件,在web.xml的ActionServlet配置代碼中添加幾個子應用信息.采用<forward>元素來實現應用之間的切換.

            Digester組件:是一個Apache的另一個開源代碼項目.當Struts被初始化的時候,首先會讀取并解析配置文件,框架采用Digester組件來且西配置文件.然后創建config包中的對象.者對象用于存放配置信息.

            其實配置文件不難,只要都理其中的原理就OK了.真正實際的項目開發中,采用的工具例如Eclipse系列,提供了相應的插件,在創建一個Struts工程的時候配置文件的標簽都是自動生成的,而我們只需要往里面填寫屬性就OK了.

    posted @ 2007-12-27 21:23 kylixlu 閱讀(159) | 評論 (0)編輯 收藏
    Key Generator
    主鍵產生器
    可選項說明:
    1) assigned
    主鍵由外部程序負責生成,無需Hibernate參與。

    2) hilo
    通過hi/lo 算法實現的主鍵生成機制,需要額外的數據庫表保存主
    鍵生成歷史狀態。

    3) seqhilo
    與hilo 類似,通過hi/lo 算法實現的主鍵生成機制,只是主鍵歷史
    狀態保存在Sequence中,適用于支持Sequence的數據庫,如Oracle。

    4) increment
    主鍵按數值順序遞增。此方式的實現機制為在當前應用實例中維持
    一個變量,以保存著當前的最大值,之后每次需要生成主鍵的時候
    將此值加1作為主鍵。
    這種方式可能產生的問題是:如果當前有多個實例訪問同一個數據
    庫,那么由于各個實例各自維護主鍵狀態,不同實例可能生成同樣
    的主鍵,從而造成主鍵重復異常。因此,如果同一數據庫有多個實
    例訪問,此方式必須避免使用。

    5) identity
    采用數據庫提供的主鍵生成機制。如DB2、SQL Server、MySQL
    中的主鍵生成機制。

    6) sequence
    采用數據庫提供的sequence 機制生成主鍵。如Oralce 中的
    Sequence。

    7) native
    由Hibernate根據底層數據庫自行判斷采用identity、hilo、sequence
    其中一種作為主鍵生成方式。

    8) uuid.hex
    由Hibernate基于128 位唯一值產生算法生成16 進制數值(編碼后
    以長度32 的字符串表示)作為主鍵。

    9) uuid.string
    與uuid.hex 類似,只是生成的主鍵未進行編碼(長度16)。在某些
    數據庫中可能出現問題(如PostgreSQL)。

    10) foreign
    使用外部表的字段作為主鍵。
    一般而言,利用uuid.hex方式生成主鍵將提供最好的性能和數據庫平臺適
    應性。

    另外由于常用的數據庫,如Oracle、DB2、SQLServer、MySql 等,都提
    供了易用的主鍵生成機制(Auto-Increase 字段或者Sequence)。我們可以在數
    據庫提供的主鍵生成機制上,采用generator-class=native的主鍵生成方式。
    不過值得注意的是,一些數據庫提供的主鍵生成機制在效率上未必最佳,
    大量并發insert數據時可能會引起表之間的互鎖。
    數據庫提供的主鍵生成機制,往往是通過在一個內部表中保存當前主鍵狀
    態(如對于自增型主鍵而言,此內部表中就維護著當前的最大值和遞增量),
    之后每次插入數據會讀取這個最大值,然后加上遞增量作為新記錄的主鍵,之
    后再把這個新的最大值更新回內部表中,這樣,一次Insert操作可能導致數據
    庫內部多次表讀寫操作,同時伴隨的還有數據的加鎖解鎖操作,這對性能產生
    了較大影響。
    因此,對于并發Insert要求較高的系統,推薦采用uuid.hex 作為主鍵生成
    機制。
    posted @ 2007-12-27 21:12 kylixlu 閱讀(157) | 評論 (0)編輯 收藏

    e.g : column_name IS NULL不可以寫成column_name=NULL;除了IS[NOT] NULL之外,空值不滿足任何查找條件;如果NULL參與算術運算,則結果可視為False,在SQL-92中可看成UNKNOWN;如果NULL參與聚集運算,則除count(*)之外其他聚集函數都忽略NULL。

    posted @ 2007-12-26 11:17 kylixlu 閱讀(210) | 評論 (0)編輯 收藏
    當執行Select語句時,DBMS的執行步驟表示如下:

    (1)執行FORM子句,根據FROM子句中的一個或多個表創建工作表。如果在FROM子句中有兩個或多個表,DBMS將對表進行交叉連接,作為工作表。

    (2)如果有WHERE子句,DBMS將WHERE子句列出的搜索條件作用于步驟(1)生成的工作表。DBMS將保留那些滿足搜索條件的行,刪除那些不滿足搜索條件的行。

    (3)如果有GROUP BY子句,DBMS將步驟(2)生成的結果表中的行分成多個組,每個組所有行的group_by_expression字段具有相同的值,DBMS將每組減少到單行,然后將其添加到新的結果表中。

    (4)如果有HAVING子句,DBMS將HAVING子句列出的搜索條件作用于步驟(3)生成的“組合”表中的每一行。DBMS將保留那些滿足搜索條件的行,刪除那些不滿足搜索條件的行。

    (5)將SELECT子句作用于結果表。刪除結果表中不包含在select_list中的列。如果SELECT子句包含DISTINCT關鍵字,DBMS將從結果中刪除重復的行。

    (6)如果有ORDER BY子句,按指定的排序規則對結果進行排序。

    (7)對于交互式的SELECT語句,在屏幕上顯示結果,對于嵌入式SQL,使用游標將結果傳遞給宿主程序中。

      以上就是SQL SELECT語句的基本執行過程。
    posted @ 2007-12-26 10:49 kylixlu 閱讀(179) | 評論 (0)編輯 收藏
    數學函數:
    1.絕對值
    S:select abs(-1) value
    O:select abs(-1) value from dual

    2.取整(大)
    S:select ceiling(-1.001) value
    O:select ceil(-1.001) value from dual

    3.取整(小)
    S:select floor(-1.001) value
    O:select floor(-1.001) value from dual

    4.取整(截取)
    S:select cast(-1.002 as int) value
    O:select trunc(-1.002) value from dual

    5.四舍五入
    S:select round(1.23456,4) value 1.23460
    O:select round(1.23456,4) value from dual 1.2346

    6.e為底的冪
    S:select Exp(1) value 2.7182818284590451
    O:select Exp(1) value from dual 2.71828182

    7.取e為底的對數
    S:select log(2.7182818284590451) value 1
    O:select ln(2.7182818284590451) value from dual; 1

    8.取10為底對數
    S:select log10(10) value 1
    O:select log(10,10) value from dual; 1

    9.取平方
    S:select SQUARE(4) value 16
    O:select power(4,2) value from dual 16

    10.取平方根
    S:select SQRT(4) value 2
    O:select SQRT(4) value from dual 2

    11.求任意數為底的冪
    S:select power(3,4) value 81
    O:select power(3,4) value from dual 81

    12.取隨機數
    S:select rand() value
    O:select sys.dbms_random.value(0,1) value from dual;

    13.取符號
    S:select sign(-8) value -1
    O:select sign(-8) value from dual -1

    14.圓周率
    S:SELECT PI() value 3.1415926535897931
    O:不知道

    15.sin,cos,tan 參數都以弧度為單位
    例如:select sin(PI()/2) value 得到1(SQLServer)

    16.Asin,Acos,Atan,Atan2 返回弧度

    17.弧度角度互換(SQLServer,Oracle不知道)
    DEGREES:弧度-〉角度
    RADIANS:角度-〉弧度
    數值間比較:
    18. 求集合最大值
    S:select max(value) value from
    (select 1 value
    union
    select -2 value
    union
    select 4 value
    union
    select 3 value)a

    O:select greatest(1,-2,4,3) value from dual

    19. 求集合最小值
    S:select min(value) value from
    (select 1 value
    union
    select -2 value
    union
    select 4 value
    union
    select 3 value)a

    O:select least(1,-2,4,3) value from dual

    20.如何處理null值(F2中的null以10代替)
    S:select F1,IsNull(F2,10) value from Tbl
    O:select F1,nvl(F2,10) value from Tbl

    21.求字符序號
    S:select ascii('a') value
    O:select ascii('a') value from dual

    22.從序號求字符
    S:select char(97) value
    O:select chr(97) value from dual

    23.連接
    S:select '11'+'22'+'33' value
    O:select CONCAT('11','22')  33 value from dual

    23.子串位置 --返回3
    S:select CHARINDEX('s','sdsq',2) value
    O:select INSTR('sdsq','s',2) value from dual

    23.模糊子串的位置 --返回2,參數去掉中間%則返回7
    S:select patindex('%d%q%','sdsfasdqe') value
    O:oracle沒發現,但是instr可以通過第四個參數控制出現次數
    select INSTR('sdsfasdqe','sd',1,2) value from dual 返回6

    24.求子串
    S:select substring('abcd',2,2) value
    O:select substr('abcd',2,2) value from dual

    25.子串代替 返回aijklmnef
    S:SELECT STUFF('abcdef', 2, 3, 'ijklmn') value
    O:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual

    26.子串全部替換
    S:沒發現
    O:select Translate('fasdbfasegas','fa','我' ) value from dual

    27.長度
    S:len,datalength
    O:length

    28.大小寫轉換 lower,upper

    29.單詞首字母大寫
    S:沒發現
    O:select INITCAP('abcd dsaf df') value from dual

    30.左補空格(LPAD的第一個參數為空格則同space函數)
    S:select space(10)+'abcd' value
    O:select LPAD('abcd',14) value from dual

    31.右補空格(RPAD的第一個參數為空格則同space函數)
    S:select 'abcd'+space(10) value
    O:select RPAD('abcd',14) value from dual

    32.刪除空格
    S:ltrim,rtrim
    O:ltrim,rtrim,trim

    33. 重復字符串
    S:select REPLICATE('abcd',2) value
    O:沒發現

    34.發音相似性比較(這兩個單詞返回值一樣,發音相同)
    S:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe')
    O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from dual
    SQLServer中用SELECT DIFFERENCE('Smithers', 'Smythers') 比較soundex的差
    返回0-4,4為同音,1最高
    日期函數:
    35.系統時間
    S:select getdate() value
    O:select sysdate value from dual

    36.前后幾日
    直接與整數相加減

    37.求日期
    S:select convert(char(10),getdate(),20) value
    O:select trunc(sysdate) value from dual
    select to_char(sysdate,'yyyy-mm-dd') value from dual

    38.求時間
    S:select convert(char(8),getdate(),108) value
    O:select to_char(sysdate,'hh24:mm:ss') value from dual

    39.取日期時間的其他部分
    S:DATEPART 和 DATENAME 函數 (第一個參數決定)
    O:to_char函數 第二個參數決定

    參數---------------------------------下表需要補充
    year yy, yyyy
    quarter qq, q (季度)
    month mm, m (m O無效)
    dayofyear dy, y (O表星期)
    day dd, d (d O無效)
    week wk, ww (wk O無效)
    weekday dw (O不清楚)
    Hour hh,hh12,hh24 (hh12,hh24 S無效)
    minute mi, n (n O無效)
    second ss, s (s O無效)
    millisecond ms (O無效)
    ----------------------------------------------

    40.當月最后一天
    S:不知道
    O:select LAST_DAY(sysdate) value from dual

    41.本星期的某一天(比如星期日)
    S:不知道
    O:SELECT Next_day(sysdate,7) vaule FROM DUAL;

    42.字符串轉時間
    S:可以直接轉或者select cast('2004-09-08'as datetime) value
    O:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL;

    43.求兩日期某一部分的差(比如秒)
    S:select datediff(ss,getdate(),getdate()+12.3) value
    O:直接用兩個日期相減(比如d1-d2=12.3)
    SELECT (d1-d2)*24*60*60 vaule FROM DUAL;

    44.根據差值求新的日期(比如分鐘)
    S:select dateadd(mi,8,getdate()) value
    O:SELECT sysdate+8/60/24 vaule FROM DUAL;

    45.求不同時區時間
    S:不知道
    O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL;

    -----時區參數,北京在東8區應該是Ydt-------
    AST ADT 大西洋標準時間
    BST BDT 白令海標準時間
    CST CDT 中部標準時間
    EST EDT 東部標準時間
    GMT 格林尼治標準時間
    HST HDT 阿拉斯加?夏威夷標準時間
    MST MDT 山區標準時間
    NST 紐芬蘭標準時間
    PST PDT 太平洋標準時間
    YST YDT YUKON標準時間


    posted @ 2007-12-24 09:59 kylixlu 閱讀(179) | 評論 (0)編輯 收藏
    僅列出標題
    共14頁: First 上一頁 6 7 8 9 10 11 12 13 14 下一頁 
    主站蜘蛛池模板: 国产成人毛片亚洲精品| 四虎免费大片aⅴ入口| 日本亚洲成高清一区二区三区| 男女作爱免费网站| 亚洲精品第一国产综合境外资源| 在线亚洲精品视频| 亚洲美女在线国产| 国产精品玖玖美女张开腿让男人桶爽免费看 | 亚洲高清专区日韩精品| 永久免费不卡在线观看黄网站| 亚洲中文字幕无码一区二区三区| 国产三级在线免费观看| 人人狠狠综合久久亚洲88| 亚洲视频在线观看免费视频| 亚洲婷婷在线视频| 黄a大片av永久免费| 免费国产草莓视频在线观看黄| 久久久久亚洲AV综合波多野结衣 | 亚洲日韩中文无码久久| 午夜影院免费观看| 中文字幕亚洲综合小综合在线 | AV在线亚洲男人的天堂| 大地资源在线资源免费观看| 精品日韩亚洲AV无码一区二区三区 | 国产成人高清精品免费观看| 亚洲91av视频| 午夜免费福利影院| 黄桃AV无码免费一区二区三区| 日本久久久久亚洲中字幕| 午夜成年女人毛片免费观看| 国产va免费精品| 亚洲一区二区三区精品视频| 亚洲欧洲中文日韩久久AV乱码| 久久久久久AV无码免费网站 | 亚洲精品~无码抽插| 2021久久精品免费观看| 日产久久强奸免费的看| 亚洲电影中文字幕| 国产麻豆剧传媒精品国产免费| 十八禁在线观看视频播放免费| 亚洲日本国产综合高清|