下面的示例演示了這一操作:


































注:上面劃線的粗體字最好用Object methobj = cls.newInstance();來代替,原因很明顯如果這個類及方法事先都是清楚的也不需要用reflection了
假如一個程序在執(zhí)行的某處的時候才知道需要執(zhí)行某個方法,這個方法的名稱是在程序的運行過程中指定的 (例如,JavaBean 開發(fā)環(huán)境中就會做這樣的事),那么上面的程序演示了如何做到。上例中,getMethod 用于查找一個具有兩個整型參數(shù)且名為 add 的方法。找到該方法并創(chuàng)建了相應(yīng)的 Method 對象之后,在正確的對象實例中執(zhí)行它。執(zhí)行該方法的時候,需要提供一個參數(shù)列表,這在上例中是分別包裝了整數(shù) 37 和 47 的兩個 Integer 對象。執(zhí)行方法的返回的同樣是一個 Integer 對象,它封裝了返回值 84。
二、執(zhí)行期創(chuàng)建新的對象
對于構(gòu)造器,則不能像執(zhí)行方法那樣進行,因為執(zhí)行一個構(gòu)造器就意味著創(chuàng)建了一個新的對象 (準確的說,創(chuàng)建一個對象的過程包括分配內(nèi)存和構(gòu)造對象)。所以,與上例最相似的例子如下:



































三、改變字段(域)的值
reflection 的還有一個用處就是改變對象數(shù)據(jù)字段的值。reflection 可以從正在運行的程序中根據(jù)名稱找到對象的字段并改變它,下面的例子可以說明這一點:
























實際開發(fā)時用Common BeanUtils 其實很早就有這個愿望了,只是一直沒有實施。在買筆記本還是自己配臺式機的問題上一直拿不定主意。去年十一的時候就打算買了,朋友說,你一天上班要接受電腦9、10個小時的輻射,下班回來還要接著輻射啊。去年一年的工作,給我印象最深的恐怕就是:學(xué)到很多東西,但大部分都未能實際實施。想一想,報表、搜索引擎、工作流、郵件、lunix、css、webservice自己都有做過。工作中交給你一個未實現(xiàn)過的功能實現(xiàn),google-->開源項目-->讀它的英文文檔-->跑出第一個demo-->應(yīng)用到自己的模塊中-->研究它的源碼,這個過程是一個很愜意的事情。但問題是不能深入。懂點皮毛根本沒什么用!呵呵,用公司的電腦學(xué)自己想學(xué)的東西根本就沒那個時間。
買臺電腦,多寫代碼,多鉆研點東西,這就是今年的愿望。
項目終于上線運行了,但是還是問題多多,但還好都不是涉及到邏輯的大問題。這兩天把數(shù)據(jù)備份這塊重做了一下,原先是自己寫的一個線程池,功能其實就是每天對mysql進行備份(當(dāng)初設(shè)計為什么會把這個功能放到程序里實現(xiàn)??)。這完全是重復(fù)的造輪子!開始是用Jrontab重構(gòu)了下,后來討論后決定在程序里把這項功能刪除,改在Linux里寫個備份腳本。每天的晚上12點進行備份,然后本機一份,ftp到另一臺服務(wù)器一份。有段時間沒操作Linux了,結(jié)果好多命令都忘了,寒!為什么會重復(fù)的造輪子??
在數(shù)據(jù)庫里新建兩個表
A、用戶表
create table users (user_name varchar(20) not null,
user_pass varchar(20) not null,
PRIMARY KEY (user_name)) ;
B、用戶與角色關(guān)聯(lián)表
create table user_roles (user_name varchar(20) not null,
role_name varchar(20) not null,
PRIMARY KEY (user_name)) ;
C、插入數(shù)據(jù)
insert into users values('user1', 'password');
insert into user_roles values('user1', 'manager');
在tomcat的server.xml里加入描述
<Realm className="org.apache.catalina.realm.JDBCRealm"
driverName="org.gjt.mm.mysql.Driver"
connectionURL="jdbc:mysql://localhost/databaseName"
connectionName=yourname connectionPassword=yourpassword
userTable="users" userNameCol="user_name" userCredCol="user_pass"
userRoleTable="user_roles" roleNameCol="role_name" />
在自己應(yīng)用程序的web.xml里加入描述(基于表單)
<security-constraint>
<web-resource-collection>
<web-resource-name>My Test</web-resource-name>
<url-pattern>/get.jsp</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>manager</role-name> //能夠訪問的角色,可以多個
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>My Test</realm-name>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/fail_login.html</form-error-page> //認證失敗后跳轉(zhuǎn)的頁面
</form-login-config>
</login-config>
登錄表單必須包含輸入用戶姓名和口令的字段,它們必須被分別命名為j_username和j_password,表單將這二個值發(fā)送給j_security_check邏輯名字。
下面是一個該表單如何在HTML網(wǎng)頁中實現(xiàn)的例子:
<form method="POST" action="j_security_check">
<input type="text" name="j_username">
<input type="password" name="j_password">
<input type="submit" value="確定"/>
</form>
這樣當(dāng)對get.jsp進行訪問時,tomcat就會自動轉(zhuǎn)到login.jsp頁面實現(xiàn)認證。對于簡單的認證,小型系統(tǒng),采用Tomcat實現(xiàn)容器內(nèi)認證是方便的。
| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
25 | 26 | 27 | 28 | 29 | 30 | 31 | |||
1 | 2 | 3 | 4 | 5 | 6 | 7 | |||
8 | 9 | 10 | 11 | 12 | 13 | 14 | |||
15 | 16 | 17 | 18 | 19 | 20 | 21 | |||
22 | 23 | 24 | 25 | 26 | 27 | 28 | |||
29 | 30 | 1 | 2 | 3 | 4 | 5 |
常用鏈接
留言簿(38)
隨筆分類
- ajax相關(guān)(9)
- cms(7)
- Head First Process-深入淺出流程(15)
- j2se基礎(chǔ)(6)
- JbpmSide(6)
- OOA/OOD(4)
- SOA、BPM(26)
- 工作日志(24)
- 工作流jbpm3(10)
- 張小慶,在路上(42)
- 心情小站(24)
- 權(quán)限相關(guān)(12)
- 表現(xiàn)層相關(guān)(4)
- 轉(zhuǎn)載(4)
隨筆檔案
- 2013年8月 (1)
- 2012年12月 (1)
- 2012年1月 (3)
- 2011年12月 (2)
- 2011年11月 (2)
- 2011年10月 (3)
- 2011年9月 (3)
- 2011年8月 (7)
- 2011年7月 (4)
- 2011年6月 (3)
- 2011年5月 (5)
- 2011年4月 (6)
- 2011年3月 (4)
- 2011年2月 (2)
- 2010年9月 (1)
- 2010年6月 (1)
- 2010年5月 (1)
- 2010年3月 (4)
- 2010年1月 (2)
- 2009年11月 (5)
- 2009年10月 (4)
- 2009年9月 (1)
- 2009年7月 (1)
- 2009年6月 (2)
- 2009年5月 (2)
- 2009年4月 (1)
- 2009年3月 (4)
- 2009年2月 (2)
- 2008年12月 (1)
- 2008年11月 (1)
- 2008年10月 (1)
- 2008年9月 (2)
- 2008年8月 (2)
- 2008年7月 (2)
- 2008年6月 (3)
- 2008年5月 (4)
- 2008年4月 (1)
- 2008年3月 (2)
- 2008年2月 (2)
- 2008年1月 (4)
- 2007年11月 (3)
- 2007年10月 (3)
- 2007年9月 (2)
- 2007年8月 (4)
- 2007年7月 (1)
- 2007年6月 (12)
- 2007年5月 (2)
- 2007年4月 (1)
- 2007年3月 (8)
- 2007年2月 (6)
- 2007年1月 (4)
- 2006年12月 (4)
- 2006年11月 (3)
- 2006年10月 (1)
- 2006年8月 (2)
- 2006年7月 (3)
- 2006年6月 (3)
- 2006年4月 (1)
- 2006年3月 (2)
- 2006年2月 (2)
- 2006年1月 (4)
- 2005年12月 (7)
- 2005年11月 (12)
文章分類
文章檔案
常去的網(wǎng)站
搜索
最新評論

- 1.?re: 使用Handler來增強Web服務(wù)的功能
- asdfasfd
- --ads
- 2.?re: 使用solr搭建你的全文檢索
-
@木哥哥
你的分詞器用的是什么啊?mmseg貌似可以的 - --陳冠馳
- 3.?re: 使用solr搭建你的全文檢索
-
@marten這是你的solr的schame.xml配置文件有問題。好好檢查下你的配置文件里面的字段什么的配置對著沒
- --陳冠馳
- 4.?re: 討論一下你覺得一個工作流產(chǎn)品好的標(biāo)準
- 評論內(nèi)容較長,點擊標(biāo)題查看
- --深圳非凡信息技術(shù)有限公司
- 5.?re: DisplayTag應(yīng)用
- name="test"從哪里來的,千篇一律的到處使用test卻沒有test的定義,sb
- --qige