亚洲啪啪免费视频,久久亚洲AV无码精品色午夜,亚洲欧洲中文日韩久久AV乱码http://www.tkk7.com/d66380022/傳智生涯zh-cnThu, 03 Jul 2025 12:46:31 GMTThu, 03 Jul 2025 12:46:31 GMT60傳智播客 2010-03-31 巴巴運動網(wǎng)的權限模塊總結http://www.tkk7.com/d66380022/archive/2010/04/01/317110.htmld66380022d66380022Wed, 31 Mar 2010 23:10:00 GMThttp://www.tkk7.com/d66380022/archive/2010/04/01/317110.html   因為巴巴運動網(wǎng)的權限設計模塊對我來說,可以實現(xiàn),打算好好整理一下思路,面試時說不定還能起點作用,看了兩遍,自己總結下:
權限定義/權限組(角色)模塊
1.對系統(tǒng)的所有功能定義相應的權限
2.由網(wǎng)管針對不同部門不同員工分配權限組(角色),在分配角色時,
  可以選擇該角色具有的權限
3.權限攔截模塊
 
具體步驟:
 1.設計權限實體
    聯(lián)合主鍵(SystemPrivilegePK),該類有module和privilage兩個屬性
 2.初始化權限
 3.設計權限組(角色)PrivilegeGroup實體,如果我們希望通過修改權限組添加或刪除權限,那么權限和角色之間的多對多關系的維護端由角色來維護
    private String groupid;
    private String name;
    private Set<SystemPrivilege> privileges = new HashSet<SystemPrivilege>();
同時加上到數(shù)據(jù)庫表的映射
當然由于權限和角色之間的多對多關系是雙向關聯(lián),所以要在SystemPrivilege實體bean中加上和PrivilegeGroup實體Bean之間的映射

4.實現(xiàn)權限組的添刪改
路徑:/control/
 新建接口PrivilegeGroupService,繼承Dao<PrivilegeGroupService>,
 新建PrivilegeGroupService,繼承DaoSupport
當然這些Bean都需要交給Spring管理,加上相應的注解即可
5.實現(xiàn)權限組的分頁,這個簡單
6.實現(xiàn)添加權限,分頁列表上的Action,新建Action,名稱為PrivilegeGroupManageAction,
  ①.第一個方法是AddUI,主要是顯示頁面
  接下來就是增刪該操作了(...)

7.權限做完后要新建一個Action用于完成SystemPrivilege,權限組,超級管理員的初始化,初始化完成后點擊“確定”,進入登陸頁面


 權限模塊的核心:                        權限攔截模塊

1.員工要訪問control開頭的路徑,必須登陸,即粗粒度的權限攔截,這是通過Fileter實現(xiàn)的,這里我們定義為PrivilegeFilter,先從session范圍中得到employee對象,如果對象為空,就瀏覽器重定向到登陸界面,,如果登陸了,就chain.doFilter(request,response);之后在web.xml配置,這樣就實現(xiàn)粗粒度的權限控制了3
2.對于界面上的某些功能,不是每一個登陸到系統(tǒng)的員工對頁面的功能都有操作權限,這就是細粒度的權限攔截
關鍵是怎樣細粒度的權限控制
怎樣實現(xiàn)細粒度的權限控制?
每點擊頁面上的按鈕,都會提交給相應的Action處理,細粒度的權限攔截就是對Action攔截,在不修改原代碼情況下,增加攔截代碼,使用的是AOP技術
 每一個功能Action都有相應的方法處理,我們用JDK5中的注解為Action中的方法注解相應的權限,因為我們有時會修改方法名稱,用注解維護起來比較方便比如:
@Permission(module="order",privilege="modify")
public ActionForward OrderModify(){}
 
實現(xiàn)過程:
①.新建注解Permission,
           @Retention(PetentionPolicy.RUNTIME)
           @Target(ElementType.METHOD)
             public @interface Permission{
                 String module();
                  String privilege();
             }
      為Action中的方法,加上注解
    只有攔截到Action中的這個方法,才能實現(xiàn)權限攔截,現(xiàn)在我們的Action已經交給Spring管理,所以我們可以使用Spring的AOP技術進行權限攔截,有必要復習一下AOP的知識:
 在Action類上加一個注解如下:@Aspect,當然要使這個注解起作用,我們必須在Spring的配置文件里配置:
  <aop:aspectj-autoproxy> <!--注解解析器-->
要實現(xiàn)切面編程,抽象過程體現(xiàn)在代碼上, 就是一個采用類來描述,要是這個類起作用,我們必須要把它交給Spring管理,很郁悶
@Aspect@Component
public class Interceptor{
 @Pointcut("exception(org.apache.struts.action.ActionForward  cn.itcast.web.action.. * *(org.apache.struts.actionMapping,...))")
 private void actionMethod(){}
@Around("actionMethod")
public Object interceptor(ProceedingJoinPoint pjp) throw Throwable{
  System.out.println("攔截到了"+pjp.getSignature().getName()+"方法");
  return pjp.proceed();
 }

注意:
通知:
前置通知,在攔截的方法前加通知,這個通知執(zhí)行后,被攔截的方法仍然會執(zhí)行。
所以使用環(huán)繞通知,但是這樣的攔截只能是攔截Action實現(xiàn)的,他不能攔截繼承自DispatchAction
原因:Spring的動態(tài)代理技術的問題
Spring不能對通過反射調用的方法應用上通知(Advice)
當Spring發(fā)現(xiàn)我們的繼承的DispatchAction的那個類符合他攔截的要求,就會生成一個代理對象,因為無接口,默認使用cglib為這個Action生成代理對象,根據(jù)cglib生成代理對象的特點,繼承目標類,并且重寫所有非final的方法來實現(xiàn)
 
注:spring只會為本類定義的方法應用通知





d66380022 2010-04-01 07:10 發(fā)表評論
]]>
2010-03-24 Struts2基礎http://www.tkk7.com/d66380022/archive/2010/03/25/316546.htmld66380022d66380022Thu, 25 Mar 2010 08:39:00 GMThttp://www.tkk7.com/d66380022/archive/2010/03/25/316546.html 今天初步學習了一下Struts2,對于Struts2,企業(yè)中已應用十分廣泛,由于他是在Struts基礎上發(fā)展而來,技術上比struts高,比如struts2對同一個路徑的每個請求分別使用一個獨立Action實例對象,所有使用struts2不用考慮線程安全問題,還有就是修改下配置文件,不用重啟服務器
1.struts2的建立過程:
配置過程:
1.新建web項目
2.導入struts2類庫. [blank項目中含有最少的jar文件]
3.配置web.xml
<filter>[...SrutsPrepareAndExecuteFilter]
4.寫Action類
public class HelloWorldAction {
public String execute(){
System.out.println("hello world!");
try {
ServletActionContext.getResponse().getWriter().printf("hello!");
} catch (Exception e) {
e.printStackTrace();
}
return null ;
}
}
5.創(chuàng)建struts.xml
①.struts2默認在類路徑下查找struts.xml文件
關于struts.xml配置,可以參看struts2-blank-2.1.8.1.war解壓后的配置
設置環(huán)境為開發(fā)模式.設置為開發(fā)模式,有利于編程和調試,
<constant name="struts.devMode" value="true" />
3.讓struts.xml中的Package繼承struts-default.xml中的默認包.
所有的默認包中的元素配置就引入進來.
4.配置默認值.
<action name="HelloWorldAction" class="cn.itcast.struts2.helloworld.HelloWorldAction">
<result name="success">
<param name="location">/index.jsp</param>
</result>
</action>

5.strtus2中的action不是單例的,它會為每個請求單獨分配一個action實例,所以可以在action類中聲明實體屬性.
Struts2的Action是模型層,不是控制層,原因它是需要攜帶業(yè)務數(shù)據(jù)的.
6.struts2中的攔截器是負責每個獨立的一項任務.例如,參數(shù)傳遞,國際化,異常處理,StrutsPrepareAndExecuteFilter是Struts 2框架的核心控制器,它負責攔截由<url-pattern>/*</url-pattern>指定的所有用戶請求,當用戶請求到達時,該Filter會過濾用戶的請求。
7.在struts2的jsp中輸出數(shù)據(jù),借助于struts-tag.tld標簽庫.該庫在[struts-core.jar/META-INF/struts-tag.tld,但是其重要作用還是用于回顯數(shù)據(jù)

8.Struts2可以數(shù)據(jù)的范圍:ActionContext request session application
ActionContext是數(shù)據(jù)中心,ValueStack不過是該數(shù)據(jù)中心中的一個特殊對象.
在jsp中訪問ActionContext中的數(shù)據(jù)的話,可以使用OGNL語言.
9.struts2中包的名字空間搜索原則:

1.<package name="xxPkg">
2.<package name="xxPkg" namespace="">
3.<package name="xxPkg" namespace="/">
4.<package name="xxPkg" namespace="/HelloWorld">

1.和2.效果一樣,都是默認的包.
2.都會自后向前搜索,直到找到為止,"/" 和 "/HelloWorld"唯一不同就是也可以作為搜索目錄.
3.空包是默認包,如果每個包都沒有找到相應的action的話,就去默認包下去找.
10.struts2中進行動態(tài)方法調用.
http://localhost:8085/struts2/Hell/HelloWorldAction!toRewView.do
11.struts2中使用標簽庫
<s:form action="HelloWorldAction_doReg" [namespace=""]>
<s:textfield name="name" label="UserName" />
<s:submit />
</s:form>
namespace:如果不寫,會使用當期的名字空間.
struts給的所有控件標簽,主要目的用于回顯數(shù)據(jù).
12.struts2中進行基本的校驗,需要Validateable和ValidationAware兩個接口的支持,同時還需要
workflow攔截器的支持.
13.在struts2中,默認的表達式語言是OGNL,Object Graphic Navigation Language(對象圖導航語言)的縮寫,它是一個開源項目。 Struts 2框架使用OGNL作為默認的表達式語言。相對EL表達式,它提供了平時我們需要的一些功能,如:支持對象方法調用,支持類靜態(tài)方法調用和值訪問,操作集合對象。例如():

訪問值棧中的action的普通屬性: username = <s:property value="username"/>

由于下午有公司來面試,耽誤了一些時間,老徐說明天再多補一個小時,太敬業(yè)了啊,佩服!



d66380022 2010-03-25 16:39 發(fā)表評論
]]>
傳智播客 2010-03-23 易寶支付流程及面試技巧http://www.tkk7.com/d66380022/archive/2010/03/24/316385.htmld66380022d66380022Tue, 23 Mar 2010 16:49:00 GMThttp://www.tkk7.com/d66380022/archive/2010/03/24/316385.html  在線支付時針對易寶支付的網(wǎng)關而開設的,眾所周知,易寶已是三大網(wǎng)上支付平臺之一,正好明天易寶來招聘,正好練練,呵呵,下午是面試技巧

  好好學習,畢業(yè)倒計時:15

1.支付寶是不能立即拿到現(xiàn)錢的,這也是商家喜歡在線支付的一個原因吧,在線支付是直接和銀行對接的,這樣商家可以立即拿到現(xiàn)錢,避免了和買家產生矛盾后,錢被封的風險。

下面就來實現(xiàn)在線支付吧,首先提出請求,如果通過,會得到賬號和密鑰

 我們要做的事有兩項                                              

  1.向支付網(wǎng)關發(fā)起請求,就是向http發(fā)起請求,所謂請求就是我們平常使用Http請求(http://www.xxx.cn/xxx.do),請求方式:Get/Post

  <form method=”” action=”https://www.yeepay.com/app-method”>

     <input name=”?”,value=””/>

     <input name=”url” value=”http://www.itcast.cn/re.do”/>

     <input name=”hmac” value=””>

     …..

    Hmac = MD5(pd_FrpId + p0_Cmd + p8_Url,key);32位,不可逆

    支付網(wǎng)關:其實就是一個http路徑

  2.接收支付網(wǎng)關返回的支付結果信息

   第一次使用瀏覽器重定向技術,

 把支付信息發(fā)送給:http://www.itcast.cn/re.do?id=21432&result=1

  

2.相關知識點:

.接入方式:兩種接入方案

.直接與銀行對接

優(yōu)點因為直接與銀行進行財務結算,交易資金結算比較安全

缺點:開發(fā)工作量比較大,而且銀行會不定期升級交易系統(tǒng),隨著銀行系統(tǒng)的升級,企業(yè)也需要作相應改動,所以維護工作量也是比較大的,而且企業(yè)每年還需要向銀行交納一定數(shù)量的接口使用費。

 

.通過中間公司間接與銀行對接

優(yōu)點:開發(fā)工作量較少,因為使用的是中間企業(yè)提供的接入規(guī)范,所以銀行升級系統(tǒng),不需要企業(yè)作相應修改,除非中間企業(yè)的接入規(guī)范發(fā)生了改變,企業(yè)才作相應修改。

缺點:因為是與中間企業(yè)進行資金結算,目前所有中間企業(yè)都是私企,資金安全是個大問題。

 3. 對支付數(shù)據(jù)進行Md5加密

4. 支付流程:

通過http請求方式向易寶支付網(wǎng)關發(fā)起一個支付請求,請求可以是getpost方式提交。

易寶支付網(wǎng)關對企業(yè)發(fā)來的數(shù)據(jù)使用用戶的密鑰生成MD5-hmac碼,然后跟企業(yè)發(fā)來的MD5-hmac(即上面表單由hmac字段提供的值)比較是否相同,如果相同即把請求轉發(fā)到銀行網(wǎng)關,當用戶支付完成后,銀行網(wǎng)關會引導用戶的瀏覽器重定向到易寶支付網(wǎng)關,然后易寶支付網(wǎng)關再引導用戶的瀏覽器重定向到企業(yè)提供的url(即上面表單由p8_Url提供的地址)

 

接下來我們只需處理結果了

 

下午是面試技巧:

薪水:一定要寫 ,不要寫區(qū)間 4000  

心得體會:具體點

責任描述:多寫,詳細,寫開發(fā)難點,描述清楚,介紹清楚

  對某一模塊詳細描述,對難點的解決過程

描述自己負責的模塊,抓住一點,詳細說,千千不要泛泛而談

不能寫培訓經驗

 

三好學生,寫一等獎學金是應屆的

愛好還是要寫的

身份證不能造假,教育經歷,通常企業(yè)篩選簡歷過程:

 1-2千封中選,讓前臺做/人力去篩選簡歷,要求:

   A.只提取兩年工作年限以上(一般企業(yè)都是這樣干的)

   B.連人力都能判斷出造假的簡歷,排除

   C.經過人力,剩下100

   D.面試官

 

88年可以寫兩年,教育經歷:把畢業(yè)信息提前,證書造假

簡歷上可適當造假

薪水:

2年,月薪(北京,上海,廣州):

初級:3000 – 4000 4500  -- 8-12

中級:4500 – 6000 7K 其中5K-6K比較多 --

高級:7000 – 1.2W  3-5

 

從事Android,薪水如下:

Android 2 最長就2

原來做過j2se開發(fā)3-4 8K-1.2W

android 3個月(j2ee 1-26K

Android 干半年 4.5K

如果我們老老實實干半年,編碼能力就會沒問題

 

工作經驗:

1.為什么離職?

我在深圳那邊4K,也不知道北京這邊的行情。

2.當公司準備要你的時候,會讓你填以前公司的地址信息,聯(lián)系人信息

 造假唄,找個外地的同學

3.入職后,離職證明,隨便蓋個章,離職證明模版網(wǎng)上有一大堆

 新公司不想惹麻煩,已經和原來公司解除了勞動合同

 

4.關于android面試

 基礎:

多線程(并發(fā)控制),Socket通信,http通信

 android

android的什么項目

項目針對那些手機型號的手機HTC

如何適應各個分辨率的問題,大分辨率靠前

ContentProvider(難度),共享數(shù)據(jù)

聯(lián)系人(如何獲取聯(lián)系人)

Activity的生命周期:運行 暫停 停止

前臺生命周期

完整生命周期

   

意圖:隱,顯式

組件:廣播,內容提供者,Service 四大組件

MMI:多媒體接口

SQLite:數(shù)據(jù)庫訪問

項目開發(fā)

  3   2-3

公司部門           人員

研發(fā)部/技術部     50-60

測試部            8-10

客服部/售后服務

市場部           

行政部



d66380022 2010-03-24 00:49 發(fā)表評論
]]>
傳智播客 3.19 3G獲得網(wǎng)上數(shù)據(jù)顯示http://www.tkk7.com/d66380022/archive/2010/03/20/316041.htmld66380022d66380022Sat, 20 Mar 2010 15:30:00 GMThttp://www.tkk7.com/d66380022/archive/2010/03/20/316041.html

今天學習從網(wǎng)上獲得數(shù)據(jù),以xml文件輸出。流程:android客戶端 -----已經開發(fā)好的CRM(220.113.15.23) -----[客戶資料]--à屏幕

用的是struts1.3的環(huán)境

1.搭建環(huán)境

1.web.xml配置struts servlet

2.添加jar

3.復制struts-config.xml

環(huán)境搞定后,新建jsp文件,寫好文件頭:<?xml version="1.0" encoding="UTF-8"?> 注意

接著新建一個ContactAction

最后配置struts-config.xml文件

新建contact.jsp文件,得到數(shù)據(jù)

訪問路徑,測試得到的數(shù)據(jù),以驗證是否正確,若正確的話,第一步完成

下面是Android應用

2 ..設計要顯示的界面

  .新建service,可以調用

關鍵代碼:

String path = “http://192.168.1.100:8080/crm/contacts.do”;

URL url = new URL(path);

HttpURLConnection conn = (HttpURLConnection)url.openConnection();

conn.setConnectionTimeout(5*1000);

conn.setRequestMethod(“POST”);

return conn.getInputStream();

在該類中還應該新建sax解析方法,解析文檔,保存數(shù)據(jù)

.新建android測試類,以日志形式打印出xml文件中的數(shù)據(jù)

3.應用HttpURLConnection對象,我們可以向網(wǎng)絡發(fā)送請求參數(shù).下面以POST發(fā)送為例,寫一些關鍵代碼點

Map<String, String> params = new HashMap<String, String>();

params.put("age", "22");

params.put("name", "浪淘沙");

 StringBuilder params = new StringBuilder();

for(Map.Entry<String, String> entry : params.entrySet()){

     params.append(entry.getKey());

     params.append("=").append(URLEncoder.encode(entry.getValue(), "UTF-8"));

     params.append("&");

}

if (params.length() > 0) params.deleteCharAt(params.length() - 1);

byte[] data = params.toString().getBytes();

 

4. 為應用添加新的Activity

①:新建一個繼承Activity的類

②:需要在功能清單AndroidManifest.xml文件中添加進上面Activity配置代碼

 

打開新的Activity,不傳遞參數(shù)

通過意圖打開ActivityIntent,用于激活Activity的,在組件之間傳遞數(shù)據(jù)

在新的Activity中接收前面Activity傳遞過來的參數(shù):

添加參數(shù)的另一種方法:Bundle

Bundle類用作攜帶數(shù)據(jù),它類似于Map,用于存放key-value名值對形式的值。相對于Map,它提供了各種常用類型的putXxx()/getXxx()方法, putXxx()用于往Bundle對象放入數(shù)據(jù),getXxx()方法用于從Bundle對象里獲取數(shù)據(jù)。Bundle的內部實際上是使用了HashMap<String, Object>類型的變量來存放putXxx()方法放入的值:

 

5. Intent過濾器

Android鼓勵減少組件間的耦合,因此Android提供了Intent (意圖) Intent提供了一種通用的消息系統(tǒng),它允許在你的應用程序與其它的應用程序間傳遞Intent來執(zhí)行動作和產生事件。使用Intent可以激活Android應用的三個核心組件:活動、 服務和廣播接收器。

Intent可以劃分成顯式意圖和隱式意圖。

 

 



d66380022 2010-03-20 23:30 發(fā)表評論
]]>
傳智播客 2010-3-17 3g數(shù)據(jù)存儲與數(shù)據(jù)顯示http://www.tkk7.com/d66380022/archive/2010/03/17/315729.htmld66380022d66380022Wed, 17 Mar 2010 15:53:00 GMThttp://www.tkk7.com/d66380022/archive/2010/03/17/315729.html

使用SharedPreferences進行數(shù)據(jù)存儲,是專門用來向用戶提供軟件參數(shù)設置功能,

1.       SharedPreferences類,它是適合用于保存軟件配置參數(shù)。使用SharedPreferences保存數(shù)據(jù),其背后是用xml文件存放數(shù)據(jù)。

2. SharedPreferences使 用xml文件保存 數(shù)據(jù),getSharedPreferences(name,mode)方法的第一個參數(shù)用于指定該文件的名稱,不用帶后綴,后綴由Android自動加上,方法的第二個參數(shù)指 定文件的操作模式,共有四種操作模式。

3.設置軟件參數(shù)過程:

 ①.當用戶點擊保存按鈕時,就激發(fā)保存事件

     Activity中的匿名內部類中,得到用戶輸入值

     需要注意的是:android.content.SharedPreferences.Editor用于保存參數(shù),該editor最后要commit一下。

     最后要Toast.makeText(PreferencesActivity.this, "保存參數(shù)成功", 1).show();用于提示保存參數(shù)成功

.如果訪問其他應用中的Preference,前提條件是:該preference創(chuàng)建時指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE權限。如:有個<package name>cn.itcast的應用使用下面語句創(chuàng)建了preference

getSharedPreferences("itcast", Context.MODE_WORLD_READABLE);

其他應用要訪問上面應用的preference,首先需要創(chuàng)建上面應用的Context,然后通過Context 訪問preference ,訪問preference時會在應用所在包下的shared_prefs目錄找到preference

Context otherAppsContext = createPackageContext("cn.itcast",

Context.CONTEXT_IGNORE_SECURITY);

4. 使 用SQLite數(shù) 據(jù)庫存儲數(shù)據(jù)

Android平臺上,集成了一個嵌入式關系型數(shù)據(jù)庫—SQLiteSQLite3支持 NULLINTEGERREAL(浮點數(shù)字)、TEXT(字符串文本)BLOB(二進制對象)數(shù)據(jù)類型,雖然它支持的類型只有五種, SQLite最大的特點是你可以保存任何類型的數(shù)據(jù)到任何字段中,無論這 列聲明的數(shù)據(jù)類型是什么。SQLite可以解析大部分標準SQL語句。

5.開發(fā)3g數(shù)據(jù)庫 軟件需求:

 ①.用戶初次使用軟件,初始化數(shù)據(jù)庫

 ②.用戶升級軟件,自動更新數(shù)據(jù)庫

 為此,類對應提供了兩個重要的方 法,分別是onCreate(SQLiteDatabase db)onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)

6.利用繼承自SQLiteOpenHelperDatabaseHelper類實現(xiàn)增刪改查,和我們以前的用JDBC實現(xiàn)的增刪改查語法基本一樣,舉例:

 SQLiteDatabase db = ....;

db.execSQL("insert into person(name, age) values(?,?)", new Object[]{"傳智播客", 4});

db.close();

 需要注意的是SQLiteDatabaserawQuery() 用于 執(zhí)行select語句

7.將數(shù)據(jù)動態(tài)顯示在手機屏幕上,用SimpleAparter實現(xiàn)


今天到此結束!

   

      



d66380022 2010-03-17 23:53 發(fā)表評論
]]>
傳智播客 2010-3-15 3G單元測試和文檔解析http://www.tkk7.com/d66380022/archive/2010/03/16/315536.htmld66380022d66380022Mon, 15 Mar 2010 16:29:00 GMThttp://www.tkk7.com/d66380022/archive/2010/03/16/315536.html

3G的第二天,單元測試,老黎講的東西當天基本可以掌握,很喜歡

1.單元測試步驟:

第一步:首先在AndroidManifest.xml中加入下面紅色代碼:

①.<application>中加入:

<uses-library android:name="android.test.runner" />

②.在最后的標簽前加上:

<instrumentation android:name="android.test.InstrumentationTestRunner"

     android:targetPackage="cn.itcast.action" android:label="Tests for My App" />

注意:上面targetPackage指定的包要和應用的package相同。

第二步:編寫單元測試代碼(選擇要測試的方法,右鍵點擊“Run As”--“Android Junit Test” ):

2.數(shù)據(jù)存儲和訪問

 軟件需要對處理后的數(shù)據(jù)存儲,Android為數(shù)據(jù)存儲提供了5種方式:

     文件,SharedPreferencesSQLite數(shù)據(jù)庫,內容提供者(Content provider),網(wǎng)絡

使用文件對數(shù)據(jù)進行存儲,Activity提供了openFileOutput()方法可以用于把數(shù)據(jù)輸出到文件中。openFileOutput()方法的第二參數(shù)用于指定操作模式,有四種模式,分別為:

Context.MODE_PRIVATE

Context.MODE_APPEND 

Context.MODE_WORLD_READABLE

Context.MODE_WORLD_WRITEABLE

3.SAX解析XML

SAX是一個解析速度快并且占用內存少的xml解析器,解析采用的是事件驅動,這些方法定義在ContentHandler接口中,下面是一些ContentHandler接口常用的方法:

startDocument()

當遇到文檔的開頭的時候,調用這個方法,可以在其中做一些預處理的工作。

endDocument()

和上面的方法相對應,當文檔結束的時候,調用這個方法,可以在其中做一些善后的工作。

startElement(String namespaceURI, String localName, String qName, Attributes atts)

當讀到一個開始標簽的時候,會觸發(fā)這個方法。

endElement(String uri, String localName, String name)

這個方法和上面的方法相對應,在遇到結束標簽的時候,調用這個方法。

characters(char[] ch, int start, int length)

這個方法用來處理在XML文件中讀到的內容,第一個參數(shù)為文件的字符串內容,后面兩個參數(shù)是讀到的字符串在這個數(shù)組中的起始位置和長度,使用new String(ch,start,length)就可以獲取內容。

4.使用Pull解析器讀取XML文件

如果需要生成一個XML文件,生成XML文件的方法有很多,如:可以只使用一個StringBuilder組拼XML內容,然后把內容寫入到文件中;

或者使用DOM API生成XML文件,或者也可以使用pull解析器生成XML文件,推薦使用Pull解析器。

 

最后,

巴巴運動網(wǎng),好好學習權限和優(yōu)化等技術,面試特別有幫助

                                                                                                                                                                                                          



d66380022 2010-03-16 00:29 發(fā)表評論
]]>
傳智播客 2010-3-14 3G開發(fā)環(huán)境的搭建和入門案例http://www.tkk7.com/d66380022/archive/2010/03/16/315534.htmld66380022d66380022Mon, 15 Mar 2010 16:20:00 GMThttp://www.tkk7.com/d66380022/archive/2010/03/16/315534.html    今天是黎老師的3G應用開發(fā)Android項目的第一天,Android相當火,從事Android開發(fā)的人員不太多,接下來開始Android之旅。

1.3G簡介:

 3G,即3rd Generation,目前中國聯(lián)通使用的是WCDMA,中國電信使用的是CDMA2000 中國,移動使用的是具有自主知識產權的TD-SCDMA3G的最大優(yōu)點:速度上的提升

2.wml標簽,比Html標簽簡單,1-2天就可以搞定,工作中用到再學,因為他是2.5G中用到的技術,如果3G普及的話,這門技術就Over了。

3.智能手機操作平臺

 我們學Android操作系統(tǒng),RIM BlackBerry,黑莓我比較喜歡,但在國內還不怎么流行, Symbian手機硬件比較好,所以占用很大市場,在3G時代,手機基本上可以當做電腦,用戶更看重手機是否能滿足日常生活和工作的需要。這就好像大多電腦 用戶都安裝了Windows操作系統(tǒng),很少安裝Linux系統(tǒng)。開發(fā)Android的人員的增多,必然會帶來手機軟件的增多,軟件的多少會決定以后操作系統(tǒng)的市場份額,windows mobileAndroidiPhone的界面差遠了。我們關注:AndroidiPhoneSymbian智能手機平臺,因為我們搞Java開發(fā),只能學Android

4.Android資料

 Android手機就買多普達和Moto的,質量好。Android最好的資料是android.pdfGoogle Android SDK開發(fā)范例大全提供了Android的全部功能,在學完課程之后可以看

5. 開發(fā)環(huán)境的搭建: 

 JDK 5 JDK 6 (僅有JRE不夠)

Eclipse 3.5 (galileo)

①.下載ADT Eclipse 插件

http://dl.google.com/android/ADT-0.9.5.zip

②.安裝 Eclipse 插件 (ADT)

啟動 Eclipse,選擇 Help > Install New Software,在出現(xiàn)的對話框里,點擊Add按鈕,在對話框的name一欄輸入“ADT” 然后點擊Archive...,瀏覽和選擇已經下載的ADT插件壓縮文件。

點擊 OK.。返回可用軟件的視圖,你會看到這個插件,然后選擇Developer Tools (會選中下 面的“Android Developer Tools” “Android Editors“),點擊 Next,最后重啟 Eclipse

③.下載Android SDK

http://dl.google.com/android/android-sdk_r04-windows.zip

下載完SDK后,把.zip文件解壓到你電腦上合適位置。啟動 Eclipse,選擇window->preferences, 在打開的視圖左邊點擊android,在右邊的SDK Location中選擇Android SDK所在位置。

6.開發(fā)Android的第一個應用:

1.點擊工具欄上手機形狀的虛擬設備管理器(簡稱“AVD“)

2.在打開的虛擬設備管理器中創(chuàng)建一個虛擬手機

3.在項目上右鍵點擊run as ?Android application

OK,第一個應用就OK

7.端口號:127.0.0.1:5554

8.Activity

 就像struts中的Action,處理用戶請求,除此之外,Activity還代表一個用戶界面

9. Android應用程序架構

       src/ java原代碼存放目錄

       gen/ 自動生成目錄

       gen 目錄中存放所有由Android開發(fā)工具自動生成的文件。目錄中最重要的就是R.java文件。 這個文件 由Android開 發(fā)工具自動產生的。Android開發(fā)工具會自動根據(jù)你放入res目錄的xml界面文件、圖標與常量,同步更新修改R.java文件。

       res/ 資源(Resource)目錄

       在這個目錄中我們可以存放應用使用到的各種資源,如xml界面文件,圖片或數(shù)據(jù)。具體請看ppt下方備注欄。

       AndroidManifest.xml 功能清單文件

        這個文件列出了應用程序所提供的功 能,相當于strutsconfig文件,只有配置好后,才能調用此Activity

       default.properties 項目環(huán)境信息,一般是不需要修改此文件中

10.短信發(fā)送器

 注意:因為應用要使用手機的短信服務,所以要在清單文件AndroidManifest.xml中添 加短信服務權限:

11.通知

 關于這些東西,還是看看文檔,拷過來運行一下,測試測試看看效果就差不多了。




d66380022 2010-03-16 00:20 發(fā)表評論
]]>
傳智播客 2010-3-12 報表生成和面試技巧http://www.tkk7.com/d66380022/archive/2010/03/13/315349.htmld66380022d66380022Sat, 13 Mar 2010 15:40:00 GMThttp://www.tkk7.com/d66380022/archive/2010/03/13/315349.html

.使用poi

  1.參見poi的文檔,添加jar

  2.workbook表示一個Excel文檔

  3.下載Excel模版,必須按格式

     1.創(chuàng)建workbook對象

       2.創(chuàng)建下載Excel文件的第一行

        3.從數(shù)據(jù)庫中讀取到需要的Employee列表

     5.利用Servlet Api 對準備好的Excel下載

  4.上傳excel        

      .配置Action

      .導入兩個jarcommons-iocommons-fileupload.jar

      .上傳

         1.根據(jù)ActionFormFormFile屬性讀取上傳數(shù)據(jù),獲得Workbook對象

               2.讀取Workbook對象中的內容:遍歷Workbook對象除標題行以外的行

         3.把每一行都轉換為一個Employee對象

         4.調用方法,把Employee對象的集合保存到數(shù)據(jù)庫中,注意:有可能不能保存,其原因可能違反格式或者違反數(shù)據(jù)庫的唯一性約束

            

.PDF文檔輸出

  1.iText介紹:iText是著名的開放源碼的站點sourceforge一個項目, 是用于生成 PDF 文檔的一個java類庫. 

2.Pdf 文件輸出的 5 個步驟

1. 創(chuàng)建一個 Document 對象.

public Document()

public Document(Rectangle pageSize): 定義頁面的大小

public Document(Rectangle pageSize, int marginLeft, int marginRight, int marginTop, int marginBottom): 定義頁面的大小, 后邊的四個參數(shù)分別指定左, , , 下頁邊距

2.建立一個書寫器 (Writer) document對象關聯(lián), 通過書寫器(Writer)可以將文檔寫入到磁盤中

3. 打開文檔

4. 在文檔中添加文字

5. 關閉文檔 

其中:

 

①。設定文檔屬性

當新的頁面產生之前, 可以設定頁面的大小、書簽、腳注(HeaderFooter)等信息,調用的方法是:

 

②。添加文檔內容

所有向文檔添加的內容都是以對象為單位的, PhraseParagraphTable. 比較常用的是段落(Paragraph)對象, 用于向文檔中添加一段文字

③。文本處理

iText中用文本塊(Chunk)、短語(Phrase)和段落(paragraph)處理文本。

文本塊(Chunk)是處理文本的最小單位, 由一串帶格式(包括字體、顏色、大小)的字符串組成:

 

 

注意: iText 中沒有行的概念, 一個表格里直接放單元格, 如果一個 3 列的表格中放進 6 個單元格, 那就是兩行的表格. 如果放入 5 個基本的沒有任何跨列設置的單元格, 表格就會出錯. 此時表格不會添加到文檔中, 并且沒有任何提示

 

.面試

   老佟給我們找了一個簡歷,介紹了一些面試的注意點,要點:

     1.符合自身條件,各種技術。

     2.最好寫點權限設計,Compass+Lucene實現(xiàn)全文搜索,流程采用JBPM管理。

     3.項目三個:小湯的OA和老佟的權限整合為一個項目,網(wǎng)上商城(巴巴運功網(wǎng)),3g,數(shù)據(jù)采集

OA用到的技術:SSH

jQuery + Ajax

jbpm 完成審批流程

spring-security

lucence :全文檢索

 



d66380022 2010-03-13 23:40 發(fā)表評論
]]>
傳智播客 2010-03-10 權限管理的實現(xiàn)http://www.tkk7.com/d66380022/archive/2010/03/13/315346.htmld66380022d66380022Sat, 13 Mar 2010 15:21:00 GMThttp://www.tkk7.com/d66380022/archive/2010/03/13/315346.html
1. 實現(xiàn)資源信息存放到數(shù)據(jù)庫中:

訪問資源時, spring-security 能區(qū)分出訪問該資源需要哪些權限
  1. 自定義ObjectDefinitionSource 接口的實現(xiàn)類, 將該類的實例裝配給 FilterSecurityInterceptor 的 objectDefinitionSource 的屬性. 即可實現(xiàn)自定義的資源獲取.

  2. 通過繼承 DefaultFilterInvocationDefinitionSource 類的方法定義ObjectDefinitionSource 接口的實現(xiàn)類有困難, 因為 DefaultFilterInvocationDefinitionSource中沒有無參的構造器

   3.通過查看 spring-security 核心 jar 包的 META-IN 下 的 spring.handlers 找到 SecurityNamespaceHandler, 在該類中查看 registerBeanDefinitionParser(Elements.HTTP, new HttpSecurityBeanDefinitionParser()); 方法在 HttpSecurityBeanDefinitionParser 類中可以看到如何創(chuàng)建 DefaultFilterInvocationDefinitionSource 實例.

   4. 通過 FactoryBean 在 IOC 容器中注冊  DefaultFilterInvocationDefinitionSource 實例   

   5. 實現(xiàn)ResourceDetailsService 接口    

2.關于MD5加密:

1.網(wǎng)上的關于MD5已經很多了,MD5算法對密碼進行摘要加密,這是一種單項加密手段,無法通過加密后的結果反推回原來的密碼明文。

為了使用MD5對密碼加密,我們需要修改一下配置文件
<authentication-provider>
    <password-encoder hash="md5" >
    <jdbc-user-service data-source-ref="dataSource" >
< authentication-provider>  
上述代碼中新增的黃色部分,將啟用md5算法。

3.管理會話(HttpSession)
    多個用戶不能使用同一個賬號同時登陸系統(tǒng)。
添加監(jiān)聽器
在web.xml中添加一個監(jiān)聽器,這個監(jiān)聽器會在session創(chuàng)建和銷毀的時候通知Spring Security。
這種監(jiān)聽session生命周期的監(jiān)聽器主要用來收集在線用戶的信息,比如統(tǒng)計在線用戶數(shù)之類的事。后登陸的將先登錄的踢出系統(tǒng)默認情況下,后登陸的用戶 會把先登錄的用戶踢出系統(tǒng)。

============================================================================================
                              集成spring-security框架

1. 集成 spring-security 框架

    1. 加入 spring-security 的兩個 jar 包
    2. 在 web.xml 文件中加入加入 spring-security 框架的過濾器
    3. 新建 applicationContext-security.xml 配置文件,并且把 security 作為默認的命名空間, 并將其導入到 applicationContext.xml 中
    4. 設計領域模型:
       Authority -- 權限
       Resource -- 資源
       Role -- 角色
       Employee -- 添加 Set<Role> roleSet 屬性

       Resource 和 Authority 為多對多的對應關系
       Authority 和 Role 為多對多的對應關系
       Role 和 Employee 為多對多的對應關系
需要 3 個關聯(lián)表
    5.
       1. 修改當前系統(tǒng)的 login.jsp 頁面, 改為 spring-security 的登錄頁面, 并且在 <http> 節(jié)點中進行配置.
注意: spring-security 在登錄成功后, 利用 "重定向" 轉到 form-login 節(jié)點對應的 default-target-url 屬性對應的頁面. 所以不能直接將其配置為 WEB-INF 目錄下的任何頁面
      2. 新建 UserDetailsService 接口的實現(xiàn)類, 以實現(xiàn)從數(shù)據(jù)庫中獲取用戶信息(需要查詢 Employee, Role, Authority, 參見 spring-security-2 的UserDetailsServiceImpl, 基于 Hibernate 實現(xiàn)),并把該類的 Bean 引用裝配給 <authentication-provider> 節(jié)點的 user-service-ref 屬性 
    6. 向 ems_resource_table, ems_authority_table, ems_resource_authority_table 數(shù)據(jù)表中添加數(shù)據(jù)
    7. 新建 ResourceDetailsService 接口的實現(xiàn)類, 實現(xiàn)從數(shù)據(jù)庫中讀取需要被保護的資源信息及其可以訪問這些資源的權限信息
    8. 利用 FactoryBean 新建 DefaultFilterInvocationDefinitionSource 接口的 Bean, 并把  ResourceDetailsService 的 Bean 注入進來, 再把該 Bean 配置為 filterSecurityInterceptor 過濾器的 objectDefinitionSource 屬性

2. 實現(xiàn)權限模塊:
 1. 實現(xiàn) Role 的增, 刪, 改, 查

        角色的添加:

      頁面 UI:
              a. 對字段的 jQuery validation 驗證
              b. struts validator 驗證 **
              c. Action的復雜驗證: 角色名不能重復 **.
              d. 角色名的 ajax 驗證, 角色名不能重復 **.
              e. 勾選權限時的級聯(lián)選擇. 例如: 勾選 "員工刪除" 的同時必須勾選 "員工查詢", 即不能讓用戶只有 "員工刪除" 權限, 而沒有 "員工查詢" 權限.
              f. 使用到 Authority 的如下兩個字段: relatedAuthorites(與當前權限關聯(lián)的權限信息, 多個權限使用 "," 分隔), parentAuthority(當前權限的父權限)
subAuthorities(當前權限的子權限)            
       若驗證都通過, 在 Action 中受理請求, 錄入角色
   
注意:

       不能通過以下代碼獲取 parentAuthority 為 null 的 Authority 集合
       List list = authorityDao.findBy("parentAuthority", null);
       System.out.println(list.size());
而應該使用:

       List list = authorityDao.find("FROM Authority auth WHERE auth.parentAuthority IS null");
    為 #select 添加 change 相應事件, 當選取某個父權限時, 子權限顯示


今天就此為止,明天繼續(xù)!

d66380022 2010-03-13 23:21 發(fā)表評論
]]>
傳智播客 2010-03-08 員工信息的修改和權限管理基礎http://www.tkk7.com/d66380022/archive/2010/03/10/315010.htmld66380022d66380022Tue, 09 Mar 2010 17:00:00 GMThttp://www.tkk7.com/d66380022/archive/2010/03/10/315010.html  

今天主要實現(xiàn)的是員工信息的修改和權限管理基礎,修改用AJAX實現(xiàn)的,權限看了不少的源代碼,感覺蠻難的,不過今天只是初步介紹,還有時間再學習一下!

 

1.員工信息的修改

 1.struts對表單信息的回顯

 2.對可以進行修改的字段

1.當該字段值發(fā)生改變時,confirm”確定修改該信息嗎?

   點擊取消:使該字段恢復為以前的默認值,不做改變,需要使用隱藏域

        

 點擊“確定”:用AJAX改變字段,在配置文件中不需返回任何信息                              

   <script type=”text/javascript”>

    $(function(){

     $(“:text,select”).change(function(){

       var flag = confirm(“確定要修改” + $(this).prev(“label”).text()+”信息嗎?”);

        ...

});

}):

</script>

信息

2.集成spring-security 框架

 1. Spring Security 能用 于保護各種 Java 應 用程序(權限管理框架).

 2.spring-security入門

   需 求:1. Spring-security 應用的根目錄下有兩個 Jsp 頁面: index.jsp admin.jsp. admin 用戶有權限訪問這兩個頁面, user 用戶只能訪問 index.jsp

2.提供”登出”功能

   搭建環(huán)境:

      首先添加spring環(huán)境

1.加入spring-security jar 包:

spring-security-2.0.5"dist"spring-security-core-2.0.5.RELEASE.jar

2.web.xml 文件中加入加入spring-security 框架的過濾器

3.新建applicationContext-security.xml 配置文件,并且把security 作為默認的命名

空間, 并將其導入到applicationContext.xml

applicationContext-security.xml,有幾種重要配置:

1. 配置 spring-security http 安全屬性   

       <http auto-config="true">

       2. 配置需要保護那些 資源, 以及訪問這些資源 所需要的權限, 若有多個 權限使用 ',' 分隔   

              <intercept-url pattern="/admin.jsp" access="ROLE_ADMIN"/>

              <intercept-url pattern="/index-1.jsp" access="ROLE_USER"/>

       3.配置登出服務   

              <logout logout-url="/logout"

                     logout-success-url="/loguot-success.jsp"

                     invalidate-session="false" />

       4.配置登錄頁面,

                     default-target-url: 若直接請求登錄頁面, 那么該屬性配置登錄成功之后的相應頁面  

                     always-use-default-target: 若請求的目標頁面受保護, spring-security 會相應 login-page 屬性對應的頁面, 默認情況下, 若登錄成功將相應剛才請求的目標頁面,

但這相當麻煩,每次都要配置不少信息。下面 有更好的實現(xiàn),即

把需要攔截的url,權限,用戶信息放到放數(shù)據(jù)庫中,實現(xiàn)如下:

1.實體類:

Authority -- 權限

Resource -- 資源

Role -- 角色

Employee -- 添加Set<Role> roleSet 屬性

2.關系

Resource Authority 為多對多的對應關系

Authority Role 為多對多的對應關系

Role Employee 為多對多的對應關系

所以還需要3 個額外的關聯(lián)表


3.實現(xiàn)把用戶信息,權限信息存放到數(shù)據(jù)庫中

  1. 實現(xiàn)把用戶信息, 權限信息存放到數(shù)據(jù)庫中

       1). 自定義 UserDetailsService 接口的實現(xiàn)類, 將該類配置到 Spring IOC 容器中, 并在

           <authentication-provider user-service-ref=""> 節(jié)點的 user-service-ref 屬性中引用該 Bean.

       2). 通過 debug 查看 UserDetailsService 接口的實現(xiàn)類返回的 UserDetails 對象     

4. 實現(xiàn)資源信息存放到數(shù)據(jù)庫中: 訪問資源時, spring-security 能區(qū)分出訪問該資源需要哪些權限

       1). 自定義 ObjectDefinitionSource 接口的實現(xiàn)類, 將該類的實例裝配給 FilterSecurityInterceptor objectDefinitionSource 的 屬性.即可實現(xiàn)自定義的資 源獲取.

       2). 通過繼承 DefaultFilterInvocationDefinitionSource 類的方法定義    ObjectDefinitionSource 接口的實現(xiàn)類有困難, 因為 DefaultFilterInvocationDefinitionSource

                  中沒有無參的構 造器, 該構造器有兩個參 數(shù): UrlMatcher urlMatcher, LinkedHashMap requestMap.

           urlMatcher 參數(shù)可 以通過 bean 的形式 事先配置, requestMap 參數(shù)類似于: {[/admin.jsp]=[ROLE_ADMIN], [/index.jsp]=[ROLE_USER]}, 需要訪問數(shù)據(jù)庫才能對其初始化, 但這不可能.

       3). 通過查看 spring-security 核心 jar 包的 META-IN spring.handlers 找到 SecurityNamespaceHandler, 在該類中查看 registerBeanDefinitionParser(Elements.HTTP, new HttpSecurityBeanDefinitionParser()); 方法

                 HttpSecurityBeanDefinitionParser 類 中可以看到如何創(chuàng)建 DefaultFilterInvocationDefinitionSource 實例.

       4). 通過 FactoryBean IOC 容器中注冊 DefaultFilterInvocationDefinitionSource 實例        

 




d66380022 2010-03-10 01:00 發(fā)表評論
]]>
主站蜘蛛池模板: 久久久久亚洲AV成人无码| 久久久青草青青国产亚洲免观| 午夜爱爱免费视频| 免费a级毛片无码av| 国产亚洲大尺度无码无码专线| 亚洲第一AV网站| 亚洲无人区视频大全| 亚洲aⅴ无码专区在线观看| 永久免费无码网站在线观看个| 伊人免费在线观看高清版| 3344免费播放观看视频| 狼友av永久网站免费观看| 国产av无码专区亚洲国产精品| 亚洲国产一区二区三区青草影视| 亚洲免费闲人蜜桃| 羞羞漫画页面免费入口欢迎你| 三级黄色免费观看| 在线看片无码永久免费视频| heyzo亚洲精品日韩| 久久亚洲精品无码| 亚洲中文字幕无码mv| 国产精品无码永久免费888 | 亚洲成在人线电影天堂色| 久久亚洲精品11p| 国产免费一区二区视频| 欧美在线看片A免费观看| 亚洲美女在线国产| 亚洲精品在线网站| 日产久久强奸免费的看| 在线人成精品免费视频| 四虎影视在线永久免费看黄| 亚洲成人在线电影| 狠狠热精品免费观看| 亚洲国产精品免费在线观看| 国产精品另类激情久久久免费| 久久久久亚洲AV成人无码| 免费在线观看亚洲| 18国产精品白浆在线观看免费| 久久久精品国产亚洲成人满18免费网站 | 亚洲天然素人无码专区| 国产成年无码久久久免费|