Apache
Apache軟件包的組成
Apache服務器的啟動
Apache服務器的配置
Apache服務器的用戶認證
用戶web目錄
虛擬主機
1.Apache簡介
? ? ? ? WWW(World Wide Web)
? ? ? ? HTTP(HyperText Transfer Protocol)
? ? ? ? 交互式訪問
? ? ? ? 模塊化
2.Apache軟件包的組成
? ? ? ? /etc/httpd/conf/*
? ? ? ? ? ? ? ? 主配置文件位置
? ? ? ? /etc/rc.d/init.d/httpd
? ? ? ? ? ? ? ? 啟動腳本
? ? ? ? /home/httpd/html
? ? ? ? ? ? ? ? html文檔的主目錄
? ? ? ? /home/httpd/html/manual/*
? ? ? ? ? ? ? ? html格式的幫助文檔
? ? ? ? /home/httpd/icons/*
? ? ? ? ? ? ? ? 用在html網頁中的圖標文件
? ? ? ? /usr/sbin/*
? ? ? ? ? ? ? ? -/usr/sbin/htpasswd
? ? ? ? ? ? ? ? ? ? ? ? 建立和更新apache用戶的程序
? ? ? ? ? ? ? ? -/usr/sbin/httpd
? ? ? ? ? ? ? ? ? ? ? ? http服務器程序
? ? ? ? /var/log/httpd/*
? ? ? ? ? ? ? ? 日志文件
3.Apache服務器的啟動? ? ? ?
? ? ? ? /etc/rc.d/init.d/httpd start(reload/restart/stop)
? ? ? ???使其自動運行
? ? ? ? ntsysv
4.Apache服務器的配置
? ? ? ? 1.配置文件
? ? ? ? ? ? ? ? httpd.conf srm.conf access.conf
? ? ? ? 2.httpd.conf
? ? ? ? ? ? ? ? ServerType standlone/inetd
? ? ? ? ? ? ? ? 服務器的運行方式
? ? ? ? ? ? ? ? Port 80
? ? ? ? ? ? ? ? 在standlone方式下監聽的端口號
? ? ? ? ? ? ? ? User nobody
? ? ? ? ? ? ? ? 進程運行的屬主
? ? ? ? ? ? ? ? Group nobody
? ? ? ? ? ? ? ? 進程運行的屬組
? ? ? ? ? ? ? ? ServerAdmin admin@localhost
? ? ? ? ? ? ? ? 管理員信箱
? ? ? ? ? ? ? ? ServerRoot "/home/httpd/"
? ? ? ? ? ? ? ? 服務器文件位置
? ? ? ? ? ? ? ? ServerName httpserver
? ? ? ? ? ? ? ? 服務器名稱
? ? ? ? ? ? ? ? Timeout 300
? ? ? ? ? ? ? ? 設置服務器和客戶端的連接超時時間
? ? ? ? ? ? ? ? MaxClient 300
? ? ? ? ? ? ? ? 允許同時連接的客戶數
? ? ? ? ? ? ? ? ProxyRequests on
? ? ? ? ? ? ? ? 允許充當proxy
? ? ? ? ? ? ? ? DocumentRoot "/home/httpd/html"
? ? ? ? ? ? ? ? 提供服務器文檔服務的根目錄
? ? ? ? ? ? ? ? UserDir public_html
? ? ? ? ? ? ? ? 服務器上用戶自己主頁所在目錄
? ? ? ? ? ? ? ? DirectoryIndex index.html
? ? ? ? ? ? ? ? 目錄索引文件
? ? ? ? ? ? ? ? AccessFileName .htaccess
? ? ? ? ? ? ? ? 在每個目錄中包含訪問控制信息的文件名
? ? ? ? ? ? ? ? Alias /icons/ "/home/user/icons/"
? ? ? ? ? ? ? ? 為不在DocumentRoot之下的文檔建立別名
? ? ? ? ? ? ? ? <VirtualHost></VirtualHost>
? ? ? ? ? ? ? ? <Directory></Directory>
? ? ? ? 3.目錄訪問權限控制
? ? ? ? ? ? ? ? ----
? ? ? ? ? ? ? ? 通過修改httpd.conf文件中的Directory項來設置
? ? ? ? ? ? ? ? Ex:
? ? ? ? ? ? ? ? <Directory "/home/httpd/html/aa">
? ? ? ? ? ? ? ? ? ? ? ? Options Indexes
? ? ? ? ? ? ? ? ? ? ? ? AllowOverride None
? ? ? ? ? ? ? ? ? ? ? ? order allow,deny
? ? ? ? ? ? ? ? ? ? ? ? allow from all
? ? ? ? ? ? ? ? </Directory>
? ? ? ? ? ? ? ? Options指令
? ? ? ? ? ? ? ? ? ? ? ? --控制一個目錄的訪問特性
? ? ? ? ? ? ? ? ? ? ? ? -None:
? ? ? ? ? ? ? ? ? ? ? ? -All:
? ? ? ? ? ? ? ? ? ? ? ? -ExecCGI:可以執行cgi腳本
? ? ? ? ? ? ? ?? ?? ? ? ? -Indexes:訪問一個無索引文件的目錄時,返回一個文件? ? ? ? ? ? ? ? ? ? ? ?? ?列表
? ? ? ? ? ? ? ? AllowOverride指令
? ? ? ? ? ? ? ? ? ? ? ? --".htaccess"文件中哪些設置允許覆蓋先前的設置
? ? ? ? ? ? ? ? ? ? ? ? -None:不讀取.htaccess
? ? ? ? ? ? ? ? ? ? ? ? -Limit:覆蓋控制主機訪問的指令(allow,deny)
? ? ? ? ? ? ? ? ? ? ? ? -AuthConfig:允許覆蓋跟認證有關指令? ? ? ? ? ? ? ? ? ? ? ? (AuthType,AuthName)
? ? ? ? ? ? ? ? order指令
? ? ? ? ? ? ? ? ? ? ? ? 控制處理allow和deny指令的順序
? ? ? ? ? ? ? ? ? ? ? ? Ex:
? ? ? ? ? ? ? ? ? ? ? ? order allow,deny
? ? ? ? ? ? ? ? ? ? ? ? deny from all
? ? ? ? ? ? ? ? ? ? ? ? allow from host11
? ? ? ? ? ? ? ? allow指令
? ? ? ? ? ? ? ? ? ? ? ? 對于一個目錄來說,allow指令設置允許哪些主機訪問
? ? ? ? ? ? ? ? ? ? ? ? -all:所有主機
? ? ? ? ? ? ? ? ? ? ? ? -域名:eloo.com
? ? ? ? ? ? ? ? ? ? ? ? -一個完整IP:192.168.0.1
? ? ? ? ? ? ? ? ? ? ? ? -網絡號碼/子網掩碼:192.168.0.0/255.255.255.0
? ? ? ? ? ? ? ? ? ? ? ? -網絡號碼/nnn:192.168.0.0/24
? ? ? ? ? ? ? ? deny指令
? ? ? ? ? ? ? ? ? ? ? ? 對于一個目錄來說,allow指令設置禁止哪些主機訪問
? ? ? ? ? ? ? ? ? ? ? ? -all:所有主機
? ? ? ? ? ? ? ? ? ? ? ? -域名:eloo.com
? ? ? ? ? ? ? ? ? ? ? ? -一個完整IP:192.168.0.1
? ? ? ? ? ? ? ? ? ? ? ? -網絡號碼/子網掩碼:192.168.0.0/255.255.255.0
? ? ? ? ? ? ? ? ? ? ? ? -網絡號碼/nnn:192.168.0.0/24
? ? ? ? ? ? ? ? ? ? ? ???
5.Apache服務器的用戶認證
? ? ? ? ? ? ? ? 功能:只有合法的帳號名和密碼才能訪問到指定目錄的內容
? ? ? ? ? ? ? ? 1.建立用戶數據庫
? ? ? ? ? ? ? ?? ?格式:lpeng:BQ5DFS3%#$%
? ? ? ? ? ? ? ? ? ? ? ? 一般放在DocumentRoot以外的地方
? ? ? ? ? ? ? ? ? ? ? ? #htpasswd -bc /etc/httpd/users user1 1234
? ? ? ? ? ? ? ? 2.使用用戶數據庫
? ? ? ? ? ? ? ? ? ? ? ? 在要保護的目錄中建立".htaccess"文件
? ? ? ? ? ? ? ? ? ? ? ? Ex:
? ? ? ? ? ? ? ? ? ? ? ? AuthName "會員區"
? ? ? ? ? ? ? ? ? ? ? ? AuthType Basic
? ? ? ? ? ? ? ? ? ? ? ? AuthUserFile /etc/httpd/users
? ? ? ? ? ? ? ? ? ? ? ? require valid-user(requrie user <username1>

? ? ? ? ? ? ? ?? ?注意:也可以建立一個用戶組文件,然后在這里指定用戶組
? ? ? ? ? ? ? ? ? ? ? ? vi /etc/httpd/groups
? ? ? ? ? ? ? ? ? ? ? ? teacher:jacky lpeng
? ? ? ? ? ? ? ? ? ? ? ? Ex:
? ? ? ? ? ? ? ? ? ? ? ? AuthName "會員區"
? ? ? ? ? ? ? ? ? ? ? ? AuthType Basic
? ? ? ? ? ? ? ? ? ? ? ? AuthGroupFile /etc/httpd/users
? ? ? ? ? ? ? ? ? ? ? ? require group <group1>
? ? ? ? ? ? ? ? 另一種情況:
? ? ? ? ? ? ? ? ? ? ? ? Ex:
? ? ? ? ? ? ? ? ? ? ? ? AuthName "會員區"
? ? ? ? ? ? ? ? ? ? ? ? AuthType Basic
? ? ? ? ? ? ? ? ? ? ? ? AuthGroupFile /etc/httpd/users
? ? ? ? ? ? ? ? ? ? ? ? require group <group1>
? ? ? ? ? ? ? ? ? ? ? ? Allow from
? ? ? ? ? ? ? ? ? ? ? ? Deny from
? ? ? ? ? ? ? ? ? ? ? ? satisfy all //同時使用兩種,都滿足才可
? ? ? ? ? ? ? ? ? ? ? ? satisfy any? ? ? ? //符合一種即可
? ? ? ? 使用php+mysql數據庫來實現用戶認證
? ? ? ?
6.用戶Web目錄
? ? ? ? Apache允許主機上的用戶使用特定的目錄存放用戶自己的主頁
? ? ? ?
http://hostname/~username/? ? ? ? 一種方法
? ? ? ? UserDir public_html
? ? ? ? 注意:此目錄必須位于用戶主目錄下
? ? ? ? 另種方法
? ? ? ? UserDir /home/httpd/*/httpd
7.虛擬主機
基于名字的虛擬主機
? ? ? ? <VirtualHost 192.168.103.11>
? ? ? ?? ? ServerAdmin
webmaster@host.some_domain.com
? ?? ?? ???DocumentRoot /home/eloo/a
? ?? ?? ???ServerName a.eloo.com
? ?? ?? ???ErrorLog /home/eloo/logs/host.some_domain.com-error_log
? ?? ?? ???CustomLog /home/eloo/logs/host.some_domain.com-access_log common
? ?? ? </VirtualHost>
? ? ? ?
實驗:
? ? ? ? 1.建立/home/httpd/htmlapachetest目錄,并對其進行權限限制,使用戶aa可以訪問
? ? ? ? 2.設置自己服務器上的個人主頁空間
? ? ? ? 3.設置本機域名mydomain.com
? ? ? ? ? ? ? ? 主目錄為/home/httpd/html
? ? ? ? 再添加一別名為username.mydomain.com
? ? ? ? ? ? ? ? 使其訪問/home/username/html目錄下的內容
posted @
2008-02-18 10:50 華夢行 閱讀(153) |
評論 (0) |
編輯 收藏
wget -q -O -
https://rhn.redhat.com/help/new-cert.sh | /bin/bash
posted @
2008-01-31 14:03 華夢行 閱讀(179) |
評論 (0) |
編輯 收藏
<?xml version="1.0"?>
<!--
http://www.aeroflash.org/crossdomain.xml -->
<cross-domain-policy>
?? <allow-access-from domain="192.168.1.120" />
?? <allow-access-from domain="ser.wei.com" />
?? <allow-access-from domain="
?? <allow-access-from domain="192.168.1.200" />
?? <allow-access-from domain="192.168.1.110" />
?? <allow-access-from domain="192.168.1.109" />
?? <allow-access-from domain="192.168.1.2" />
</cross-domain-policy>
posted @
2008-01-30 16:44 華夢行 閱讀(199) |
評論 (0) |
編輯 收藏
Linux各個掛載點介紹
?
?
/bin???????????? ?存放最常用的命令,此目錄下的命令所有用戶都有執行的權限
?
/boot?????????????Linux系統引導目錄,此目錄保存系統啟動時的內核文件和內核映像文件及啟動時所需的其它文件
?
/dev????????????? 設備文件,保存所有的硬件設備文件,如硬盤設備文件,軟驅、光驅設備文件等等
?
/etc????????????? 存放各種服務的配置文件,相當于Windows 2000的winnt目錄
?
/home???????????? 各用宿主目錄,相當于Windows 2000的“我的文檔”
?
/lib????????????? 該目錄用來存放系統動態鏈接共享庫,幾乎所用的應該程序都會用到該目錄下的共享庫
?
/mnt???????????? ?掛載目錄,用來臨時掛載別的文件系統或者別的硬件設備(如光驅、軟驅)
?
/proc?????????????此目錄信息是在內存中由系統自行產生的,存儲了一些當前的進程ID號和CPU、內存的映射等
?
/sbin?????????????系統管理員命令存放目錄
?
/usr????????????? 最大的目錄,用戶的很多應該程序和文件都存放在此目錄下
?
/usr/X1186????????X-Windows目錄,存放一些X-Windows的配置文件
?
/usr/include????? 系統頭文件,存儲一些C語言的頭文件
?
/usr/src??????????Linux內核源代碼,Linux系統所安裝的內核源代碼都保存在此
?
/usr/bin????????? 對/bin目錄的一些補充
?
/usr/sbin??????? ?對/sbin目錄的一些補充
?
/var????????????? 大多數的日志存儲目錄和ftp,www服務的匿名訪問目錄
????????????????? 的根,在Linux工作一段時間后,此目錄會比較大,應即時對此目錄進行刪除
/misc?????????????autofs服務的目
?
/opt????????????? 用于存儲第三方軟件的目錄
?
/tmp????????????? 臨時文件的目錄,用來存放不同程序執行時產生的臨時文件
?
/lost+found?????? 該目錄在大多數情況下都是空的,但當實然停電或者非正常關機后,有些文件臨時存入在此
?
/root???????????? 管理員的根目錄,一般只有管理員才可以訪問此目錄
|
|
|
posted @
2008-01-30 15:52 華夢行 閱讀(563) |
評論 (0) |
編輯 收藏
標題: 急救:硬盤下安裝red hat linux 9.0,提示未找到任何驅動!
Device Auto Ok
posted @
2008-01-30 15:45 華夢行 閱讀(444) |
評論 (0) |
編輯 收藏
../j_acegi_logout
_acegi_logout 映射是在哪里定義的呢? 各位大俠請不吝賜教
posted @
2008-01-28 19:37 華夢行 閱讀(506) |
評論 (2) |
編輯 收藏
項目管理是50 年代后期發展起來的一種計劃管理方法,作為一門新興的管理科學,正日益引起項目建設者的廣泛重視,它是一種運用系統科學的原理對工程建設項目進行計劃、組織和控制的系統管理方法。隨著信息時代的到來,項目管理被廣泛地應用各個行業和領域的項目中,并發揮著越來越重要的作用。
??? 但具體到信息技術類型的企業,有關的統計數據顯示項目管理實施的效果并不理想。1997 年Garden Research Group 的調查結果顯示:在美國,即使借助項目管理,90% 的IT 項目仍然不能在規定的時間和預算內完成。在國內,失敗的IT項目也屢見不鮮。在項目管理理論發展的較為成熟的今天,會出現這樣的局面至少說明在項目管理理論的實踐運用中出現了一些問題。目前,國內的各行各業都開始了大規模的信息化建設,對于這些行業應用軟件開發的項目,又該如何通過項目管理來保證項目的順利推進呢?
??? 按照美國項目管理協會(
PMI)的項目管理論,對項目的管理可以按照啟動、規劃、執行、控制和收尾這五個過程組來進行,關注的知識領域包括項目范圍、進度、成本、質量、人力資源、溝通、風險、采購以及項目的整體管理。但是該項目管理理論是一個框架性的知識體系,且其針對的項目不僅僅是軟件開發項目,而且針對項目的規模和大小,項目管理團隊應該按照項目的特點對其建議的過程進行取舍,并輔以通用的一些管理和溝通技巧,以下,筆者結合自身的一些行業軟件開發項目的管理經驗,談一下在行業應用軟件開發中的項目管理的需要特別注意的地方和一些體會。
一、了解行業知識
-站在用戶的角度考慮問題
對于大多行業軟件項目來說,技術已不是項目成功的瓶頸。面對不同行業各具特色的行業知識,行業軟件的開發決非技術可以解決問題的,要想成功地推進項目,就必須轉變技術為先的觀點,而是要站在用戶的角度,看看用戶需要的是什么。在行業軟件開發中經常碰到的問題是用戶后期的需求變更,首先,在項目前期,項目經理應該熟悉行業的背景,包括該行的相關政策、法規;客戶信息化的現狀、與上級、下級以及同級單位或者其他相關單位之間的業務關系等,為項目做一個明確的定位和邊界劃分;其次,在需求調研階段,要學習以行業語言而不是計算機語言和客戶對話。如在和客戶進行需求調研的時候,如果不能對用戶的業務背景、業務流程等知識有一些初步認識,是很難和用戶做到深入的溝通的。如果調研的雙方不能以相同的“語言”進行交流,又怎么能夠真正了解業務的細節呢?對于一些特別復雜的業務,建議需求人員采取實習的方式,和具體的業務人員一同辦理,觀察業務的細節和工作人員的工作量消耗在什么地方,通過深入的學習和認真思考,將業務知識轉化為信息流程。通過這樣的工作,可以比較好地把握項目的范圍,即使后期有一些變更,也基本能夠進行控制;第三,在系統的功能設計和開發階段,必須以用戶的體驗和以能夠真正減輕用戶的工作負擔為出發點,而不是一味的考慮技術的先進性。即使系統采用的技術很先進,但如果信息化的結果不能真正減輕用戶的工作負擔,甚至加重用戶的工作量,這樣的系統用戶肯定是不愿意用的。一些項目經理認為這樣做會增加項目的成本,拖延項目的進度。但是如果在項目交付時才發現沒有系統不滿足需求、或者為適應實際的業務操作需要做大的變動,這種結果對項目的影響則是更為致命的。行業應用軟件,應該是行業在先,軟件在后,因此一個合格的項目經理,必須首先要理解這個軟件的業務應用,并且有意識地在項目組中培養技術和行業相結合的人才,以提高項目組的業務能力。這樣才能真正把握好業務需求,掌握業務模型并進行正確的項目開發。
二、積極面對變更
-沒有不變的需求
??? 用戶需求變更是所有項目團隊都會遇到的問題,特別是有些行業的標準不規范或者不健全,使得在項目建設的過程中需求變化不斷。事實上,需求變化是項目的常態,現代的項目管理理論認為對于變更應該采取更加主動地方式進行管理。要認識到項目的需求是在一個螺旋的過程中反復修改并不斷完善的,需求分析本身就是為了協調開發方與客戶之間對項目的認識。無論實現計劃得多么周密,隨著雙方對項目認知的不斷深化實踐,項目的變更是不可避免的。在上一節的提到的方法有助于減少項目后期的需求變更,項目管理人員也可以采取一些更為主動的方法來管理需求變更。首先,要定期與用戶交流系統的情況,例如以原型設計的方式與用戶確認需求。很多用戶雖然是行業專家,但他們并不清楚心目中的信息系統是以何種方式呈現的。這就需要項目開發人員盡早采取原型設計的方式來引導并確認需求。通過界面設計工具快速地設計出界面原型,使得用戶看到具體的“實物”,這樣可以使得用戶更容易表達其真實的想法。在項目開發過程中,也應該定期將完成的功能以演示或者試用的方式與用戶交流,聽取用戶對界面和功能設計方面的意見,及早發現可能出現的意見分歧,以免在項目后期才發現重大的偏差。不少項目組提交需求報告后就埋頭進行系統的設計和開發,等到項目完成后才將系統提交給客戶試用,結果造成用戶對項目評價不高,或者系統完全不能適合用戶當前的需求,甚至會因此影響雙方的關系,結果給項目造成難以挽回的損失。其次,對已經發生的變更要認真的面對。記錄用戶提出的變更需求,并以書面的方式進行記錄存檔,并以集體決議的方式分析變更可能對項目造成的影響,并做出是否變更的決定,如果有可能的話盡可能邀請客戶的項目負責人參與會議過程。根據對項目的影響程度,雙方確定變更的內容對加以實施。總之,本著雙方協商解決問題的態度以規范的流程處理項目中的變更,大部分的問題都是可以順利解決的。
三、主動地溝通
-以團隊精神做項目
??? 現在項目管理理論非常強調溝通能力對項目管理的重要性,良好的溝通能力是一名優秀的項目經理最重要的能力之一。隨著軟件規模的發展,以往憑著個人英雄主義的手工作坊形式越來越不適應當前軟件項目的開發。在行業應用軟件的開發中,通常我們是以一個團隊的形式來完成一項任務,在這種群體的活動中溝通是無法避免的。項目經理大約上70%的時間用在各種形式的溝通上。開會、談判、談話、做報告是最常見的溝通形式,撰寫報告實際上是一種書面溝通的方式,對外各種拜訪、約見也都是溝通的表現形式。因此項目經理必須掌握有效的溝通技巧。許多項目經理是由技術人員轉型發展而來的,往往以技術的觀點看待問題,認為溝通只是浪費時間,又或者因為性格內向靦腆而不愿與客戶溝通,這必然會對項目造成影響。因此項目經理要轉變觀念,積極有效的與客戶溝通,解決項目可能存在的問題。在項目推進的過程中還要特別注意和項目組成員之間的溝通。項目常見的效率低下的問題,往往是有了問題后,大家沒有溝通或不懂得溝通所引起的。另外,項目執行力差、領導力不強的問題,歸根到底,都與溝通欠缺有直接的關系。以項目經理和項目組成員之間的關系為例,項目經理不僅僅應該關注組員個人的工作和績效、職業規劃等職業要素,還應該了解員工的想法、思想動態、日常管理中的問題和員工的意見、抱怨等等非職業要素。這看似與員工的業績以及項目無關,但在實踐過程中往往成為影響員工工作態度和項目結果的關鍵因素。在面臨巨大、忙碌的項目壓力時,項目組成員常常產生各種抱怨、動搖,這些都是正常的現象,項目經理應該特別注重員工的生活和思想動態,積極溝通,對出現的問題積極予以協助。通過有效溝通,可以提高項目成員的歸屬感,加速項目成員之間得磨合,打造一支有戰斗力的項目團隊。
??? 項目管理方法沒有孰優孰劣,關鍵是根據項目的具體情況和外部環境的特點選擇最適合的方法。以科學的項目管理理論為指導并在項目認真實踐和探索,并不斷吸取教訓加以總結,就是項目管理的成功之道。
posted @
2008-01-25 18:00 華夢行 閱讀(96) |
評論 (0) |
編輯 收藏
/**********************
* 用戶-產品-訂單模塊
**********************/
/*
表名稱: CUSTOMER(客戶信息表)
ID (客戶編號)
NAME (姓名)
LOGINID (登陸ID)
PASSWD (密碼)
EMAIL (EMAIL)
ADDRESS (地址)
STATUS (狀態)
*/
create table customer (
id int not null identity,
name varchar(80) not null,
loginid varchar(20) not null,
passwd varchar(255) not null,
email varchar(80) null,
address varchar(80) null,
status varchar(20) null,
constraint pk_customer primary key (id)
);
/*
表名稱: CATEGORY(產品類別表)
ID (類別編碼)
NAME (類別名)
DESCN (描述)
Primary Key: PK_CATEGORY PRIMARY KEY(ID)
*/
create table category (
id int not null identity,
name varchar(80) not null,
descn varchar(255) null,
constraint pk_category primary key (id)
);
/*
表名稱: PRODUCT(產品表)
ID (產品編碼)
CATEGORY_ID (類別ID)
NAME (產品名稱)
DESCN (描述)
INVENTORY (存貨)
UNITPRICE (單價)
STATUS (狀態)
ATTR1 (自定義屬性1)
ATTR2 (自定義屬性2)
ATTR3 (自定義屬性3)
ATTR4 (自定義屬性4)
TYPE (類型)
CREATETIME (創建的日期)
CREATE_USER_ID (創建的操作員)
MODIFYTIME (最后一次修改的日期)
MODIFY_USER_ID (最后一次修改的操作員)
*/
create table product (
id int not null identity,
category_id int not null,
name varchar(80) not null,
descn varchar(255) null,
inventory int null,
unitprice decimal(10,2) null,
status varchar(20) null,
attr1 varchar(255) null,
attr2 varchar(255) null,
attr3 varchar(255) null,
attr4 varchar(255) null,
type varchar(20) default 'product',
createtime date null,
create_user_id int null,
modifytime date null,
modify_user_id int null,
constraint pk_product primary key (id),
constraint fk_product_1 foreign key (category_id)
references category (id),
constraint fk_product_2 foreign key (create_user_id)
references users (id),
constraint fk_product_3 foreign key (modify_user_id)
references users (id)
);
/*
表名稱: ORDERS(訂單信息表)
ID (訂單編碼)
CUSTOMER_ID (用戶編碼)
ORDERDATE (下訂日期)
TOTALPRICE (總費用)
ORIGINALPRICE (原價格)
APPLYRULES (所使用的促銷規則)
REGION (送貨地區)
SHIPADDR (發貨地址)
SHIPDATE (發貨日期)
STATUS (訂單狀態)
*/
create table orders (
id int not null identity,
customer_id int not null,
orderdate date not null,
totalprice decimal(10,2) not null,
originalprice decimal(10,2),
applyRules varchar(255) ,
region varchar(255),
shipaddr varchar(80) ,
shipdate date ,
status varchar(2) default '1',
constraint pk_orders primary key (id),
constraint FK_ORDERS_1 foreign key (CUSTOMER_ID) REFERENCES CUSTOMER(ID)
);
/*
表名稱: ORDER_ITEM(訂單貨物表)
ORDER_ID (訂單編碼)
LINENUM (訂單行號)
PRODUCT_ID (產品編碼)
QUANTITY (數量)
UNITPRICE (單價)
*/
create table order_item (
order_id int not null,
linenum int not null,
product_id int not null,
quantity int not null,
unitprice decimal(10,2) not null,
constraint pk_orderitem primary key (order_id, linenum),
constraint FK_ITEM_1 foreign key (ORDER_ID) REFERENCES orders(ID),
constraint FK_ITEM_2 foreign key (PRODUCT_ID) REFERENCES PRODUCT(ID)
);
/****************************
* 管理員及安全模塊
****************************/
/*
表名稱: log4j_log(日志信息)
ID (序號)
LOGINID (登陸ID)
PRIORITY (級別)
LOGDATE (時間)
CLASS (類名)
METHOD (方法名)
MSG (信息)
*/
create table log4j_log(
id int not null identity,
loginid varchar(20) not null,
priority varchar(10) not null,
logdate varchar(21) not null,
class varchar(255) not null,
method varchar(100) null,
msg varchar(255) null,
constraint pk_log4j_msg primary key (id)
);
/*
表名稱:change_history(領域對象修改記錄)
*/
create table change_history(
id int not null identity,
entitytype varchar(20) not null,
entityid int not null,
changeColumns varchar(255) null,
constraint pk_product primary key (id)
);
/*
表名稱: users(用戶)
loginid 登陸ID
passwd 密碼
name 用戶名
email 郵箱
region 管理地區
status 狀態
descn 用戶描述
*/
create table users(
id int not null identity,
loginid varchar(20) not null,
passwd varchar(255) not null,
name varchar(80) not null,
email varchar(255),
region varchar(255),
status VARCHAR(2) default 1,
descn varchar(255) null,
constraint pk_users primary key (id)
);
/*
表名稱: roles(角色)
name 角色名稱
descn 角色描述
*/
create table roles(
id int not null identity,
name varchar(80) not null,
descn varchar(255) null,
constraint pk_roles primary key (id)
);
/*
表名稱: user_role(用戶角色表)
user_id 用戶ID
role_id 角色ID
*/
create table user_role
(
user_id int not null,
role_id int not null,
constraint pk_user_role primary key (user_id,role_id),
constraint fk_user_role_1 foreign key (user_id) REFERENCES users(ID),
constraint fk_user_role_2 foreign key (role_id) REFERENCES roles(ID)
);
/*
表名稱: permissions (權限)
name 權限名稱
descn 描述
operation 操作
status 狀態
*/
create table permissions
(
id int not null identity,
name varchar(80) not null,
descn varchar(255) null,
operation varchar(80) null,
status VARCHAR(2) default '1',
constraint pk_permissons primary key (id)
);
/*
表名稱: role_permis(角色權限)
role_id 角色ID
permis_id 權限ID
*/
create table role_permis
(
role_id int not null,
permis_id int not null,
constraint pk_role_permis primary key (role_id,permis_id),
constraint fk_role_role_permis_1 foreign key (role_id) REFERENCES roles(ID),
constraint fk_role_role_permis_2 foreign key (permis_id) REFERENCES permissions(ID)
);
/*
表名稱: resources (資源)
name 資源名稱(模塊名稱)
res_type 資源類型
res_string 資源串
descn 資源描述
*/
create table resources
(
id int not null identity,
name varchar(80) not null,
res_type varchar(20) not null,
res_string varchar(255) not null,
descn varchar(255) null,
constraint pk_resources primary key (id)
);
/*
表名稱: permis_resc(權限資源)
resource_id 資源ID
operation_id 操作ID
*/
create table permis_resc
(
permis_id int not null,
resc_id int not null,
constraint pk_permis_resc primary key (permis_id,resc_id),
constraint fk_role_permis_resc_1 foreign key (resc_id) REFERENCES resources(ID),
constraint fk_role_permis_resc_2 foreign key (permis_id) REFERENCES permissions(ID)
);
/*
表名稱: acl_object_identity(保護的ACLDomain對象列表)
object_identity 受保護的ACL對象的標識符,一般是ClassName + ID
parent_object 該對象關聯的父對象
acl_class Acegi用來描述該類的Class,一般用來表示Mark等信息
*/
create table acl_object_identity (
id int not null identity,
object_identity varchar(250) not null,
parent_object integer,
acl_class varchar(250) NOT NULL,
constraint unique_object_identity unique(object_identity),
foreign key (parent_object) REFERENCES acl_object_identity(id)
);
/*
表名稱: permis_resc(ACL授權列表)
acl_object_identity 對應acl_object_identity表的id,表示一個Acl保護的對象。
recipient 用戶名或角色名
mask 所授權限
*/
create table acl_permission (
id int not null identity,
acl_object_identity integer not null,
recipient varchar(100) NOT NULL,
mask integer not null,
constraint unique_recipient unique(acl_object_identity, recipient),
foreign key (acl_object_identity) REFERENCES acl_object_identity(id)
);
posted @
2008-01-21 20:19 華夢行 閱讀(202) |
評論 (0) |
編輯 收藏
ljava -classpath hsqldb.jar org.hsqldb.util.DatabaseManagerSwing
java -classpath hsqldb.jar org.hsqldb.Server -database.0 acl -dbname.0 acl
posted @
2008-01-21 20:00 華夢行 閱讀(128) |
評論 (0) |
編輯 收藏
private void bbslogin(String name,String pwd) {
??WebContext context = WebContextFactory.get();
??Cookie[] cookie1 = context.getHttpServletRequest().getCookies();
??if (cookie1 == null) {
???Cookie cookie = new Cookie("bbsUser", name);
???Cookie cookpwd=new Cookie("bbsPwd",pwd);
???cookie.setMaxAge(60*60*2);
???cookpwd.setMaxAge(60*60*2);
???cookpwd.setPath("/");
???cookie.setPath("/");
???context.getHttpServletResponse().addCookie(cookie);
??} else {
???for (int i = 0; i < cookie1.length; i++) {
????String vname = cookie1[i].getName();
????String value = cookie1[i].getValue();
????if (!vname.equals("bbsUser")) {
?????Cookie cookie = new Cookie("bbsUser", name);
?????Cookie cookpwd=new Cookie("bbsPwd",pwd);
?????cookie.setMaxAge(60*60*2);
?????cookpwd.setMaxAge(60*60*2);
?????cookie.setPath("/");
?????cookpwd.setPath("/");
?????context.getHttpServletResponse().addCookie(cookie);
????}
???}
??}
?}
posted @
2008-01-21 15:32 華夢行 閱讀(156) |
評論 (0) |
編輯 收藏
<link rel=”icon” href=”/dir/favicon.ico” mce_href=”/dir/favicon.ico” type=”image/x-icon”>
<link rel=”shortcut icon” href=”/dir/favicon.ico” mce_href=”/dir/favicon.ico” type=”image/x-icon”>
posted @
2008-01-19 15:40 華夢行 閱讀(157) |
評論 (0) |
編輯 收藏
網上沒有找到比較合適的,自己看了看,然后放到項目中實驗的一下。
很多人都認為比DBCP優秀。
<bean id="c3p0DataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
????? <property name="driverClass">
??????? <value>${jdbc.driverClassName}</value>
????? </property>
????? <property name="jdbcUrl">
??????? <value>${jdbc.url}</value>
????? </property>
????? <property name="user">
????? ?<value>${jdbc.username}</value>
????? </property>
????? <property name="password">
????? ?<value>${jdbc.password}</value>
????? </property>
????? <property name="initialPoolSize"><value>10</value></property>
????? <property name="minPoolSize"><value>5</value></property>
????? <property name="maxPoolSize"><value>30</value></property>
????? <property name="acquireIncrement"><value>5</value></property>
????? <property name="maxIdleTime"><value>10</value></property>
????? <property name="maxStatements"><value>0</value></property>
??? </bean>
以下幾個參數是使用的基本配置參數:
initialPoolSize:
Number of Connections a pool will try to acquire upon startup. Should be between minPoolSize and maxPoolSize
連接池初始化時獲取的鏈接數,介于minPoolSize和maxPoolSize之間
minPoolSize:
Minimum number of Connections a pool will maintain at any given time.
最小鏈接數
maxPoolSize:
Maximum number of Connections a pool will maintain at any given time.
最大連接數
acquireIncrement:
Determines how many connections at a time c3p0 will try to acquire when the pool is exhausted.
在當前連接數耗盡的時候,一次獲取的新的連接數
maxIdleTime:
Seconds a Connection can remain pooled but unused before being discarded. Zero means idle connections never expire.
最大空閑的時間,單位是秒,無用的鏈接再過時后會被回收
posted @
2008-01-18 19:47 華夢行 閱讀(240) |
評論 (0) |
編輯 收藏
ALTER TABLE aUTHORITIES ADD constraint fk_authorities_users foreign key(username) references users(username)
posted @
2008-01-15 12:12 華夢行 閱讀(99) |
評論 (0) |
編輯 收藏
摘要: 當前位置: 首頁 >> 應用軟件 >> 網絡相關 >> Acegi安全系統詳解
?
Acegi安全系統詳解
作者:
???? 來源:http://blog.csdn.ne...
閱讀全文
posted @
2008-01-14 20:19 華夢行 閱讀(288) |
評論 (0) |
編輯 收藏
CREATE UNIQUE INDEX IX_mucgroupuser ON mucgroupuser(roomname,username)
在 sqlserver2000中你創建的一些約束都可以在查詢分析器中直接看到
posted @
2008-01-14 16:41 華夢行 閱讀(169) |
評論 (0) |
編輯 收藏
解決webwork utf-8 亂碼問題
起因:使用webwork+spring開發,出現提交數據亂碼。
1,首先嘗試修改webwork配制文件webwork.properties
webwork.locale=zh_CN
webwork.i18n.encoding=UTF-8
沒有解決問題
2,再次嘗試加入filter
?<filter>
??<filter-name>SetCharacterEncoding</filter-name>
??<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
??<init-param>
???<param-name>encoding</param-name>
???<param-value>UTF-8</param-value>
??</init-param>
?</filter>
?<filter-mapping>
??<filter-name>SetCharacterEncoding</filter-name>
??<url-pattern>*.jsp</url-pattern>
?</filter-mapping>
?<filter-mapping>
??<filter-name>SetCharacterEncoding</filter-name>
??<url-pattern>*.action</url-pattern>
?</filter-mapping>
還是沒有解決問題。
3,嘗試更改提交方式 ,頁面上加上? method="post"
問題解決。但是新問題出現,url中出現的中文依然是亂碼
更改tomcat server.xml文件,在<Connector port="8080" >中加入URIEncoding="utf-8"問題解決,
但有更好的一種解決方案。就是用useBodyEncodingForURI="true"代替URIEncoding="utf-8"
這樣tomcat會根據頁面的編碼去處理
posted @
2008-01-13 14:49 華夢行 閱讀(357) |
評論 (0) |
編輯 收藏
SELECT TOP 5 * FROM im_dh WHERE NOT EXISTS(SELECT * FROM (SELECT TOP 10 PID FROM? im_dh order by dhdt desc ) T? WHERE T.PID=im_dh.PID) order by dhdt desc
ibatis 中用$來設置動態參數
top? $start$?
posted @
2008-01-08 18:47 華夢行 閱讀(922) |
評論 (0) |
編輯 收藏
?
添加如下代碼:
out.clear();
out = pageContext.pushBody();
posted @
2007-11-05 14:43 華夢行 閱讀(415) |
評論 (0) |
編輯 收藏
???? 從網站上看到了有人提起這個框架——Guice,google名下的產物——一個彼Spring快的DI容器,興趣使然,馬上到http://code.google.com/p/google-guice/上去看了看,發現居然是Bob Lee這位大仙的杰作,還猶豫什么,download下來試試!
???? 恩,從哪里試起呢?還是老規矩,碰到新的東西就來驗證我們經典的例子——Hello World!
???? 這個東西說是DI,居然沒有.xml或者.properties文件,老天它用的是該死的Annotation,很好,要是大家也想嘗試的話統統5.0或者以上的干活。安裝好環境,開始動手!可是從哪里開始呢?既然說是DI容器,那好,我們先把我們的程序準備好,然后再看它把各個需要的東西怎么Inject。
???? 借鑒一下Spring開發手冊里的例子吧,稍微改改(無聊的人不要罵這個程序,因為它太簡單,我都想罵!)。既然是要打印,我們先來一個打印的服務接口:
?
public
?
interface
?PrintService
{
????
public
?
void
?print(String?str);
}
?
很好,再來一個它的實現:
?
public
?
class
?PrintServiceImpl?
implements
?PrintService
{
????
public
?
void
?print(String?str)
????{
????????System.out.print(str);
????}
}
?
然后呢?一個打印客戶Client:
?
public
?
class
?Client
{
????
private
?String?str
=
"
Hello?world
"
;
????
private
?PrintService?service;
????
void
?printString()
????{
????????service.print(str);
????}
}
?
看到了么?這次Inject的不是那個該死的字符串“Hello World”,而是該死的打印服務!好了,Client和我們的打印服務是分開的,我不知道Guice會怎么把打印服務在Client需要的時候Inject進來。不管怎么做,一個test是應該有的:
?
import
?junit.framework.TestCase;
public
?
class
?testClient?
extends
?TestCase
{
????
public
?
void
?testPrintString()
????{
????????Client?client
=
new
?Client();
????????client.printString();
????}
}
?
好了,試試看,應該是紅色的條子。廢話,Client在這里根本不知道該死的打印服務在哪里。那么尋找打印服務就是Guice的事情了。
???? 讓我們看看Guice是怎么進行Inject的。我們想要Client在使用的時候找到打印服務,那么我們應該在Client需要的時候將其Inject進去,這樣的話我們需要寫一個類似于setter的東西來建造一個Inject點,那么我們在Client里添加些東西:
?
import com.google.inject.Inject;
public
?
class
?Client
{
????
private
?String?str
=
"
Hello?world
"
;
????
private
?PrintService?service;
??? @Inject
????
void
?injectPrintService(PrintService?service)
????{
????????
this
.service
=
service;
????}
????
void
?printString()
????{
????????service.print(str);
????}
}
?
我們寫入了一個injectPrintService方法,這個方法可以充當Inject點,然后我們在這個方法上面來一個Annotation——“@Inject”,這就是告訴Guice應該在哪里Inject我們需要的打印服務。
???? 好了,我們下面要做的就是把PrintService和我們的實現動態的綁定起來(接口編程,好主意)。在Guice里,我們需要實現一個叫做Module的接口,Guice將一個binder傳遞給你的Module,然后你的Module將接口和它的實現綁定起來。讓我們來試一下:
?
import
?com.google.inject.Binder;
import
?com.google.inject.Module;
public
?
class
?MyModule?
implements
?Module
{
????
public
?
void
?configure(Binder?binder)
????{
????????binder.bind(PrintService.
class
).to(PrintServiceImpl.
class
);
????}
}
?
在我們需要打印服務的時候,Guice會自動創建一個PrintServiceImpl的實例給我們。OK,接下來就是如何注入的問題了,我們需要在test中實現:
?
import
?junit.framework.TestCase;
import
?com.google.inject.
*
;
public
?
class
?testClient?
extends
?TestCase
{
????
public
?
void
?testPrintString()
????{
????????MyModule?mo
=
new
?MyModule();
????????Injector?in
=
Guice.createInjector(mo);
????????Client?client
=
new
?Client();
????????in.injectMembers(client);
????????client.printString();
????}
}
?
完了!一個全新的Hello world將要被打印出來了。
???? Guice的工作流程是這樣的:
首先將自己創建的Module傳給Guice.createInjector(),Guice會為你的Module創建一個binder,你的Module利用這個binder來實現各種綁定,然后在Guice會創建一個Injector出來,我們就可以利用這個Injector來Inject我們的服務了。
???Guice將DI這個概念完完全全的詮釋了出來,使我們在編寫的應用的時候不必去考慮具體的實現在哪里,Guice會為你動態的綁定并且Inject的。很好使的框架,很有意思,以后繼續關注!!
posted @
2007-11-03 16:59 華夢行 閱讀(111) |
評論 (0) |
編輯 收藏
?FileOutputStream fos = new FileOutputStream(logfile.toString(), false);
??????????? logger = new PrintStream(fos, true);
??????????? logger.println("Arale started at " + new java.util.Date());
posted @
2007-10-31 16:53 華夢行 閱讀(159) |
評論 (0) |
編輯 收藏