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

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

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

    隨筆-54  評論-0  文章-2  trackbacks-0
      2010年3月24日
    巴巴運動網的權限模塊總結
      因為巴巴運動網的權限設計模塊對我來說,可以實現,打算好好整理一下思路,面試時說不定還能起點作用,看了兩遍,自己總結下:
    權限定義/權限組(角色)模塊
    1.對系統的所有功能定義相應的權限
    2.由網管針對不同部門不同員工分配權限組(角色),在分配角色時,
      可以選擇該角色具有的權限
    3.權限攔截模塊
     
    具體步驟:
     1.設計權限實體
        聯合主鍵(SystemPrivilegePK),該類有module和privilage兩個屬性
     2.初始化權限
     3.設計權限組(角色)PrivilegeGroup實體,如果我們希望通過修改權限組添加或刪除權限,那么權限和角色之間的多對多關系的維護端由角色來維護
        private String groupid;
        private String name;
        private Set<SystemPrivilege> privileges = new HashSet<SystemPrivilege>();
    同時加上到數據庫表的映射
    當然由于權限和角色之間的多對多關系是雙向關聯,所以要在SystemPrivilege實體bean中加上和PrivilegeGroup實體Bean之間的映射

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

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


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

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

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



    posted @ 2010-04-01 07:10 d66380022| 編輯 收藏
     今天初步學習了一下Struts2,對于Struts2,企業中已應用十分廣泛,由于他是在Struts基礎上發展而來,技術上比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.創建struts.xml
    ①.struts2默認在類路徑下查找struts.xml文件
    關于struts.xml配置,可以參看struts2-blank-2.1.8.1.war解壓后的配置
    設置環境為開發模式.設置為開發模式,有利于編程和調試,
    <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是模型層,不是控制層,原因它是需要攜帶業務數據的.
    6.struts2中的攔截器是負責每個獨立的一項任務.例如,參數傳遞,國際化,異常處理,StrutsPrepareAndExecuteFilter是Struts 2框架的核心控制器,它負責攔截由<url-pattern>/*</url-pattern>指定的所有用戶請求,當用戶請求到達時,該Filter會過濾用戶的請求。
    7.在struts2的jsp中輸出數據,借助于struts-tag.tld標簽庫.該庫在[struts-core.jar/META-INF/struts-tag.tld,但是其重要作用還是用于回顯數據

    8.Struts2可以數據的范圍:ActionContext request session application
    ActionContext是數據中心,ValueStack不過是該數據中心中的一個特殊對象.
    在jsp中訪問ActionContext中的數據的話,可以使用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中進行動態方法調用.
    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給的所有控件標簽,主要目的用于回顯數據.
    12.struts2中進行基本的校驗,需要Validateable和ValidationAware兩個接口的支持,同時還需要
    workflow攔截器的支持.
    13.在struts2中,默認的表達式語言是OGNL,Object Graphic Navigation Language(對象圖導航語言)的縮寫,它是一個開源項目。 Struts 2框架使用OGNL作為默認的表達式語言。相對EL表達式,它提供了平時我們需要的一些功能,如:支持對象方法調用,支持類靜態方法調用和值訪問,操作集合對象。例如():

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

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

    posted @ 2010-03-25 16:39 d66380022| 編輯 收藏

      在線支付時針對易寶支付的網關而開設的,眾所周知,易寶已是三大網上支付平臺之一,正好明天易寶來招聘,正好練練,呵呵,下午是面試技巧

      好好學習,畢業倒計時:15

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

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

     我們要做的事有兩項                                              

      1.向支付網關發起請求,就是向http發起請求,所謂請求就是我們平常使用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位,不可逆

        支付網關:其實就是一個http路徑

      2.接收支付網關返回的支付結果信息

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

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

      

    2.相關知識點:

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

    .直接與銀行對接

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

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

     

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

    優點:開發工作量較少,因為使用的是中間企業提供的接入規范,所以銀行升級系統,不需要企業作相應修改,除非中間企業的接入規范發生了改變,企業才作相應修改。

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

     3. 對支付數據進行Md5加密

    4. 支付流程:

    通過http請求方式向易寶支付網關發起一個支付請求,請求可以是getpost方式提交。

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

     

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

     

    下午是面試技巧:

    薪水:一定要寫 ,不要寫區間 4000  

    心得體會:具體點

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

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

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

    不能寫培訓經驗

     

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

    愛好還是要寫的

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

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

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

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

       C.經過人力,剩下100

       D.面試官

     

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

    簡歷上可適當造假

    薪水:

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

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

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

    高級:7000 – 1.2W  3-5

     

    從事Android,薪水如下:

    Android 2 最長就2

    原來做過j2se開發3-4 8K-1.2W

    android 3個月(j2ee 1-26K

    Android 干半年 4.5K

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

     

    工作經驗:

    1.為什么離職?

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

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

     造假唄,找個外地的同學

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

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

     

    4.關于android面試

     基礎:

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

     android

    android的什么項目

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

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

    ContentProvider(難度),共享數據

    聯系人(如何獲取聯系人)

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

    前臺生命周期

    完整生命周期

       

    意圖:隱,顯式

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

    MMI:多媒體接口

    SQLite:數據庫訪問

    項目開發

      3   2-3

    公司部門           人員

    研發部/技術部     50-60

    測試部            8-10

    客服部/售后服務

    市場部           

    行政部

    posted @ 2010-03-24 00:49 d66380022| 編輯 收藏
    主站蜘蛛池模板: 亚洲国产综合久久天堂| 国产成人高清精品免费鸭子| 亚洲熟妇中文字幕五十中出| 美女免费视频一区二区| 国产高清免费的视频| 亚洲AV无码一区二区一二区| 免费看大美女大黄大色| 亚洲国产成人久久综合| 国产无遮挡吃胸膜奶免费看 | 阿v免费在线观看| 亚洲国产精品无码久久九九| 日韩亚洲AV无码一区二区不卡| 免费在线看黄的网站| 亚洲精品色午夜无码专区日韩| 成人无码区免费A∨直播| 在线a亚洲v天堂网2018| 久久久久久噜噜精品免费直播| 亚洲精品无码久久久影院相关影片| 无码人妻久久一区二区三区免费 | 一级做a毛片免费视频 | 亚洲人成高清在线播放| 最近中文字幕免费mv视频8| 久久久久亚洲精品无码网址色欲| 亚洲国产精品专区在线观看 | 激情亚洲一区国产精品| 国产精品视_精品国产免费| 日韩在线视频免费| 国产亚洲无线码一区二区| 中文字幕免费高清视频| 亚洲精品GV天堂无码男同| 国产亚洲欧洲Aⅴ综合一区| 国产白丝无码免费视频| 亚洲熟妇AV一区二区三区浪潮| 亚洲AV无码一区二三区| 啦啦啦完整版免费视频在线观看| 亚洲欧美自偷自拍另类视| 久久亚洲中文字幕精品一区四| 91在线老王精品免费播放| 亚洲av乱码一区二区三区按摩| 亚洲精品无码久久千人斩| 久久WWW色情成人免费观看|