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

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

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

    guanxf

    我的博客:http://blog.sina.com.cn/17learning

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      71 隨筆 :: 1 文章 :: 41 評論 :: 0 Trackbacks

    #

    1、首先安裝wampserver。
    2、鼠標右鍵wampserver托盤圖標--->language---->chinese.
    3、配置PHP: 鼠標左鍵wampserver托盤圖標-->PHP--->php設置--->short Opn tag(設置PHP標簽類似方法,重啟服務器)。
    4、配置apache的虛擬目錄:
         鼠標左鍵wampserver托盤圖標--->apache-->Alies目錄---->添加一個alies目錄。彈出一個控制臺輸入:Test----> 回車--->T:\WorkSpace\workespacePhp.必須在計算機上存在目錄(T:\WorkSpace\workspacePhp\Test).
         如果想用http://127.0.0.1/直接訪問test下的index.php.操作步驟如下:
           鼠標左鍵wampserver托盤圖標--->apache-->Alies目錄-->http://127.0.0.1/test/edit alies:刪掉紅色字體
            Alias /Test/ "T:/workSpace/workespacePhp/" 
      <Directory "T:/workSpace/workespacePhp/">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride all
            Order allow,deny
        Allow from all
    </Directory>
    5、配置Mysql:mysql  root默認密碼為空,修改mysql的密碼:
    (1)、運行CMD:
    (2)、cd到mysql的安裝目錄:(D:\DesigerFiles\wamp\bin\mysql\mysql5.5.8\bin)
    (3)、mysqladmin -u root -p  password admin
      如果(3)不支持,則進入(4)。
     (4)、將D:\DesigerFiles\wamp\bin\mysql\mysql5.5.8\bin加入到環境遍歷中。
      (5)、mysqladmin -u root password admin
     
    6、如果不使用wampserver,配置方法如下:
      http://www.jb51.net/article/24691.htm
      http://wenku.baidu.com/view/c794f80102020740be1e9bb2.html

        
          
    posted @ 2013-03-18 09:48 管先飛 閱讀(489) | 評論 (0)編輯 收藏

    Object data=getObject();
    if(data instanceof String) {
      this.renderJson((String)data);
      }else {
      this.renderJson(data);
    }
    posted @ 2013-03-15 09:05 管先飛 閱讀(6376) | 評論 (2)編輯 收藏

    文章開頭就列舉了那么多聯系方式,難免會讓大家感覺有點AD的意味,但是不容質疑的是,默默的確有那么丁點的表現欲^_^,雖然有時候過于細致會被人說婆媽,但是幸好這種細致對于編程來說,還是蠻有益的
        從默默自己向別人問怎么學PHP開始,到后來不少人又來問默默怎么學PHP,不管默默是新手,還是老鳥,似乎總是感覺摸不出一條清晰的脈絡來,不過,默默既然學會了PHP,那么我走的這條路或多或少的有一定借鑒性。
        PHP的背景恐怕就不用默默贅言了,我相信大家選擇一種語言,并不是看它的背景和悠久歷史,更重要的是看它的實用性,華而不實的語言哪怕是再輝煌的歷史,也畢將步向沒落,可喜的是PHP經受住了考驗,也因此,它確實是一種值得學習的語言。
        默默一直是聽從別人的經驗長大的,也因此在前輩們的經驗里讓默默少走了許多的彎路,更快的步入了正規,在此向那些我至盡不知道其名字的前輩們道聲謝謝,在默默的眼里,幫助不分大小,只要是幫助,總會讓默默的心里暖融融的,我想,前輩們幫助我,并不是為了得到我的一句謝謝,更多的是出于一種責任感和對默默的期望,所以我想,只有學好PHP,才能對得起前輩們的汗水。
        正如我所說的,默默也終于感覺到了一種責任感,默默不知道自己的經驗到底能幫助新手多少,但是默默明白,現在到了履行責任的時候了,我有必要把自己的經驗告訴給所有希望學好PHP的人,只有這樣才能讓中國的PHP不斷的進步,不斷的發展,在世界上占據一席之地。
        默默學習PHP的這段期間,感覺國內的PHP環境越來越成熟,規范也在逐漸的健全,PHPCHINA的成立,標志著與官方直接掛鉤的PHP機構在中國正式落戶了,在此獻上遲到的掌聲!
        好的,切入正題:
        我想在講述自己的學習方式前,對那些期望能從我的文章中獲得有用信息的人說一句心里話:
        默默的文章不會對您的學習起到實質性的作用,您能否成功,還得靠自己的,堅持,堅持,再堅持,就是步入成功的不二法門。
        我先把我自己學習PHP的過程做一下概括(老鳥學PHP路線:php基礎--》OOP--》smarty---》thinkPhp):
          (1)熟悉HTML/CSS/JS等網頁基本元素,完成階段可自行制作完整的網頁,對元素屬性達到熟悉程度
            (2)理解動態語言的概念,運做機制,熟悉PHP語法
            (3)學習如何將PHP與HTML結合起來完成簡單動態頁面
            (4)接觸MYSQL,開始設計數據庫程序
            (5)不斷鞏固,摸透大部分PHP常用函數,并可理解OOP,MYSQL優化,以及模板
            (6)完成一個功能齊全的動態站點
            (7)學習smarty模版技術。
           (8)學習使用ThinkPHp的框架思想。

        我的這套線路可能跟許多學習PHP的愛好者不謀而合,這也算是一個循序漸進的學習過程,不過新手不要看到上面的概括就以為學習蠻簡單的,默默在此不得不對您稍微潑一下冷水,任何東西其實都不簡單,即使是小吃部的燒餅也不是一下子就會做成的。
        我先解釋一下我的學習思路。
        首先,理解網站這一概念之后不難看出,任何網站都是由網頁組成的,也就是說想完成網站,必須先學會做網頁,因此必須要掌握了HTML,才能為今后制作網站打下基礎。
        在學習HTML中我想邊學邊做是最有效的方式,當然這一方式對于學習PHP同樣是最有效的。
        HTML中的任何元素都要親自實踐,只有明白了什么元素會起到什么效果之后,你才會記憶深刻,而一味的啃書,絕對是不行的,我想大部分新手之所以覺得概念難學,大部分是一個字“懶”,懶是阻止進步的最大敵人,所以克服掉懶的習慣,才能更快的學好一樣東西
        也許您在學習PHP的時候只想盡快的開發一個網站,也就會想我做網站,干嘛要學什么網頁這些小兒科?不難看出,眼高手低的新手不在少數,這種思想無疑于建造空中樓閣,你不建地基,何來的房頂呢?
        OK,掌握靜態網頁的制作技術是學習開發網站的先決條件,這一點就講到這里,因為這篇文章不是教程文章,也就不對技術進行深入的刨析了。
        我假設你目前已經可以完成一個靜態頁面了,當然,做的好看難看是另外一說,默默的第一個網頁也沒好看到哪去,但是“孩子”再丑,咱們做“爹媽”的也不能嫌棄不是?這畢竟是咱的成果。
        那么咱們就開始學習動態語言的概念吧,剛一接觸動態語言,可能很多人都會蒙了,怎么這亂七八糟的東西,在網頁里顯示的時候卻是另外一碼事?其實這并不算亂七八糟,你寫的HTML代碼不也一樣是一堆堆的字符嗎?畢竟,代碼并不是作為直接輸出的,而是經過處理的,說白了,HTML是經過HTML解析器,而PHP當然也就通過PHP解析器了,跟學習HTML一樣的道理,想讓任何的解析器完成操作,就必須使用它們專用的語法結構,所以PHP長相奇怪也就不足為奇了。
        對于PHP的理解是新手最難邁過的一道門檻,不過你應該感到幸運的是PHP已經最大極限的為了新手而努力了,如果你學過其他的語言,也許會覺得PHP的確相當的簡單,但是如果你之前什么都沒學過,那么阿彌陀佛,硬著頭皮琢磨吧。
        書過三遍自然熟,這個簡單的道理告訴我們,即使你理解不了PHP,但是也必須先跟它混個臉熟,看,一遍遍的看,看的同時一邊琢磨,一邊按照它所教的打代碼,即使你搞不清楚那些代碼到底是干嘛的,但是起碼你應該找找感覺。
        在一段掙扎之后,聰明的你,顯然已經逐漸的開悟了,慢慢的理解了編程的概念,那么祝賀你,你已經邁出了成功的第一步。
        搞清楚HTML和PHP的概念,那么PHP和HTML混合編程應該不成問題,在這期間,你完全可以讓PHP給你算算 一加一等于幾,然后在瀏覽器輸出,不要覺得幼稚,這的確是跟阿波羅登月一樣,你打的是一小段代碼,但是對于你的編程之路,可是邁出了一大步啊!興奮吧?但是不得不再給你潑點冷水,您還是菜鳥一個。
        高興一段時間就必須繼續努力了,接下來就是學習數據庫了,MYSQL可算是PHP的黃金搭檔了,不過,雖然話是這么說,你也可能恨不得把MYSQL給生吞活剝了,因為這一行一列的東東簡直讓自己頭暈目眩。
        頭暈歸頭暈,目眩歸目眩,你不可能吃飯的時候咬了自己一下舌頭就從此不吃飯了不是?放下畏懼,繼續努力,咱們是來征服它的,而不是被它征服的,振奮起來吧同志。
        在一番搏斗之后,你終于理解了數據庫的概念,而且讓你興奮不已的是你終于可以通過PHP來連接數據庫了,這期間你是怎么學會的,我們不去考證了,但是事實證明,你已經可以了。
        學會了PHP和數據庫的你,無疑是左手拿著MOTOLOLA右手拿著NOKIA,要多瀟灑,有多瀟灑,哈哈,終于學會了,但是可能這個時候,又會有人不經意的拍拍肩膀對你說:哥們,別高興的太早,你還是菜鳥,離學會還差著一大截呢!
        等到你發奮努力的學會了用PHP成功的插入,刪除,更新數據的時候,顯然,你已經距離成功指日可待了。
        這個時候的你也許是這種狀態:
            你會HTML嗎?會,我能編好幾個大表格排板的網頁啦!
            你會PHP嗎?會,我會把一加一的運算寫在函數里,然后調用啦!
            你會MYSQL嗎?會,我會把我的信息在數據庫里插入刪除啦
        那,接下來你該怎么做呢?我覺得,小試一下身手,大概是沒問題了,那么交給你個任務,做個留言本吧,這和HELLO WORLD有一比啊!^_^,同是新手面臨的第一道關。
        花了一段時間,你終于學會表單的數據插入數據庫,然后顯示出來了,應該說一個程序的雛形已經誕生了。
        但是,你可能瞅瞅東,看看西,人家這個編論壇,那個CMS,還有那啥CRM,我啥時候寫一個呢?
        不要急,可以說你的馬步已經扎的差不多了,接下來就要開始練把勢的時候了,如果有條件的話,用筆或者打印一個簡易的PHP手冊在身上,時不時的摸出來看看,記得,去WC也不能放過(^2^)。
        再有條件的話,買本書看看吧,《PHP+MYSQL WEB開發(第三版)》號稱圣經級,(也許是個不錯的選擇(聲明:作者沒給我啥好處費,我也不是書托,隔著大老遠,我連他老兄的面都沒見過的說-_-)
        鞏固了自己的知識,熟悉了PHP和MYSQL開發的要領之后,再回頭看你寫的那個留言本,你也許會懷疑那真的是你寫的嗎?當然,如果屋里還有鬼的話,也許是它寫的-_-
        這個時候,你的留言本應該加入注冊以及分頁功能了,而如果你更強的話,UI(用戶界面)也可以加強,完成之后,感覺是不是特有成就感?不管怎么樣,咱好歹是寫了一個動態網站程序了,放在自己的網站上耍耍吧,讓好朋友來看看,嘿,看咱寫的多棒,然后再在網上宣傳一下。
        幾天之后你再打開留言本,哎?哇,一下彈出N多頁面!很明顯,你的留言本并沒有做好安全防范,被人用JS代碼小小的耍了一下,我很同情你這個時候的感受,但是沒有別的辦法了,繼續努力吧!
        你發奮努力,熟悉了安全方面的問題,然后又設計了一些程序,感覺還不錯。
        那么接下來,這就算學會啦?NO,NO,NO,還早呢,你至盡還沒碰過OOP之類的吧?模板呢?
        恩,學!加緊學呀學,學會了這些之后,你又學會了生成靜態網頁,現在你應該接觸一下XML了,恩,XML也了解了,那么AJAX你也得接觸接觸吧?AJAX完了....然后...
        總而言之,你絕對不會發現你全部都學會了,一些真正的強人總會搞出新玩意來丟給你,你不學就落后了,也印證了前人的經驗,果然是學無止境啊!
        我想通過我的一番YY,你也應該大致熟悉了一些學習過程,也許我的過程和你的有些出路,但是不管怎么樣是殊途同歸,我寫這么多,也只是給大家一個借鑒的機會,至于好與不好,默默不敢打包票^0^
        看完之后你發現,羅嗦這么多,對我一點用處沒有啊,我知道該怎么學,但是我想如何才能更快的學,一周速成,啊不,24小時速成那種,默默你有沒?
        我.......我沒有,但是2分鐘之內把你扁進醫院里,我倒是有把握-_-
        學東西,永遠不要妄想有速成這一說,告訴你了一個方式,但是缺少努力這一環節,那也是白搭。
    但是有一點我可以給你保證的就是,你學會了PHP,那么學其他的語言,肯定速成,反過來也一樣,如果你之前學過其他的語言,那么學PHP肯定快。
        不過語法好學,但是怎么用語法來實現每個人都有每個人的方式,幾乎是各有千秋。然而借鑒別人成功的代碼,絕對是有益無害,因此,多看那些經過千錘百煉凝出來的經典代碼,是進階的最好方法。
        講了這么多,無非是想說:學習PHP不僅要掌握方法,更多的是付出汗水,我不希望看到中途放棄的人,相信自己,相信自己的選擇,更要相信自己的能力,如果自己想放棄,暴力一點的話,就自己抽自己一個嘴巴,然后大吼:別人可以,我為什么就不可以?(是不是有點閻羅教練的味道,默默的確是電影看多了,抽嘴巴是會痛的,各位其實明白這個道理了就行了)
        另外要叮囑各位的是,抵御誘惑,ASP/PHP/JSP/.NET的對比也許會讓你無所適從,你也許學了一半PHP,又開始打C#的主意,或者有人說JAVA很強,這個時候的你絕對不能動搖,哪怕你真想學,也得學會了PHP。然后再學,見異思遷是最不可取的,狗熊掰玉米就是這個道理,如果經常中途放棄,只能是一無所獲,還浪費了N多的時間和經歷,得不償失,最重要的是,你會被別人瞧不起,沒有人會喜歡和見異思遷的人交朋友,因為這種人太不安分,太不可靠,因此,你必須要強迫自己完成自己的目標,哪怕可能會很難受,也得堅持,毅力就是這么鍛煉出來的。
    (字數打多了,超過發帖限制,請在下面接著看^_^)

    原文:http://www.xici.net/d96104995.htm有刪改


    posted @ 2013-03-14 14:06 管先飛 閱讀(388) | 評論 (0)編輯 收藏

    <script language="javascript">
       alert("歡迎相互加連接,請聯系qq:54314720");
    </script>
    posted @ 2013-03-01 09:47 管先飛 閱讀(197) | 評論 (0)編輯 收藏

       創建可執行的 JAR 文件包,制作一個可執行的 JAR 文件包來發布你的程序是 JAR 文件包最典型的用法。
        Java 程序是由若干個 .class 文件組成的。這些 .class 文件必須根據它們所屬的包不同而分級分目錄存放;運行前需要把所有用到的包的根目錄指定給 CLASSPATH 環境變量或者 java 命令的 -cp 參數;運行時還要到控制臺下去使用 java 命令來運行,如果需要直接雙擊運行必須寫 Windows 的批處理文件 (.bat) 或者 Linux 的 Shell 程序。因此,許多人說,Java 是一種方便開發者苦了用戶的程序設計語言。其實不然,如果開發者能夠制作一個可執行的 JAR 文件包交給用戶,那么用戶使用起來就方便了。在 Windows 下
    安裝 JRE (Java Runtime Environment) 的時候,安裝文件會將 .jar 文件映射給 javaw.exe 打開。那么,對于一個可執行的 JAR 文件包,用戶只需要雙擊它就可以運行程序了,和閱讀 .chm 文檔一樣方便 (.chm 文檔默認是由hh.exe 打開的)。那么,現在的關鍵,就是如何來創建這個可執行的 JAR 文件包。

    創建可執行的 JAR 文件包,需要使用帶 cvfm 參數的 jar 命令,同樣以上述 test 目錄為例,命令如下:

    jar cvfm test.jar manifest.mf test

    這里 test.jar 和 manifest.mf 兩個文件,分別是對應的參數 f 和 m,其重頭戲在 manifest.mf。因為要創建可
    執行的 JAR 文件包,光靠指定一個 manifest.mf 文件是不夠的,因為 MANIFEST 是 JAR 文件包的特征,可執行的
    JAR 文件包和不可執行的 JAR 文件包都包含 MANIFEST。關鍵在于可執行 JAR 文件包的 MANIFEST,其內容包含了
    Main-Class 一項。這在 MANIFEST 中書寫格式如下:

    Main-Class: 可執行主類全名(包含包名)

    例如,假設上例中的 Test.class 是屬于 test 包的,而且是可執行的類
    (定義了 public static void main(String[]) 方法),那么這個 manifest.mf 可以編輯如下:

    Main-Class: test.Test <回車>

    這個 manifest.mf 可以放在任何位置,也可以是其它的文件名,只需要有 Main-Class: test.Test 一行,且該
    行以一個回車符結束即可。創建了 manifest.mf 文件之后,我們的目錄結構變為:

    ==

    |-- test

    | `-- Test.class

    `-- manifest.mf

    這時候,需要到 test 目錄的上級目錄中去使用 jar 命令來創建 JAR 文件包。也就是在目錄樹中使用“==”表
    示的那個目錄中,使用如下命令:

    jar cvfm test.jar manifest.mf test

    之后在“==”目錄中創建了 test.jar,這個 test.jar 就是執行的 JAR 文件包。運行時只需要使用
    java -jar test.jar 命令即可。

    需要注意的是,創建的 JAR 文件包中需要包含完整的、與 Java 程序的包結構對應的目錄結構,就像上例一樣。
    而 Main-Class 指定的類,也必須是完整的、包含包路徑的類名,如上例的 test.Test;而且在沒有打成 JAR 文件包
    之前可以使用 java <類名> 來運行這個類,即在上例中 java test.Test 是可以正確運行的 (當然要在 CLASSPATH
    正確的情況下)。

    posted @ 2013-03-01 09:26 管先飛 閱讀(393) | 評論 (0)編輯 收藏

    配置環境變量: 

    添加三個系統變量: 

    1、JAVA_HOME: C:\JDK  實際JDK的位置

    2、TOMCAT_HOME(或CATALINA_HOME): C:\Tomcat

    3、CLASSPATH: %JAVA_HOME%\lib;%TOMCAT_HOME%\lib

    4、path(編輯path時多個用";"隔開):C:\Program Files\Java\jdk1.6.0_16\bin(JDK的bin中)

                  

    機器上有CLASSPATH用分號隔開,然后加在后面。

     

    Tomcat的環境變量就配置完畢了,下面檢驗Tomcat是否能夠運行:

     

    在控制臺中轉到C:\Tomcat\bin這個目錄,運行startup,然后回出現一個窗口,連跳一大串東西,最后表示Server已經運行

     

    在瀏覽器中輸入http://localhost:8080,出現歡迎界面,則表示Tomcat沒問題了

     

    然后和上面一樣,寫入你的第一個Servlet

     

    import java.io.*;

    import javax.servlet.*;

    import javax.servlet.http.*;

    public class HelloWorld extends HttpServlet

    {

    public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException

    {

    response.setContentType("text/html");

    PrintWriter out = response.getWriter();

    out.println("<html><head><title>");

    out.println("This is my first Servlet");

    out.println("</title></head><body>");

    out.println("<h1>Hello,World!</h1>");

    out.println("</body></html>");

     

    }

    }

     

    然后照樣用javac HelloWorld.java來編譯這個文件,如果出現無法import javax.servlet.*

     

    那么就是應該把C:\Tomcat\common\lib里面的servlet-api.jar(根據實際來看)文件拷貝到C:\JDK\jre\lib\ext中,再次編譯

     

    然后在Tomcat目錄里面的C:\Tomcat\webapps\myweb(目錄名可任意)里面按如下的文件結構:

     

     

    myweb\WEB-INF\web.xml

    myweb\WEB-INF\classes\HelloWorld.class(把上面生成的HelloWorld.class文件放在這個里面)

     

    Servlet必須使用C:\Tomcat\webapps\myweb\WEB-INF這個目錄下面的web.xml文件進行注冊,用記事本打開這個web.xml文件,在里面加入

     

    <servlet>

    <servlet-name>HelloWorld</servlet-name>

    <servlet-class>HelloWorld</servlet-class>

    </servlet>

    <servlet-mapping>

    <servlet-name>HelloWorld</servlet-name>

    <url-pattern>/HelloWorld</url-pattern>

    </servlet-mapping>

     

    這樣的結構

     

    <servlet>

    <servlet-name>HelloWorld</servlet-name>

    <servlet-class>HelloWorld</servlet-class>

    </servlet>

    表示指定包含的servlet類.

     

     

    而以下的結構

    <servlet-mapping>

    <servlet-name>HelloWorld</servlet-name>

    <url-pattern>/HelloWorld</url-pattern>

    </servlet-mapping>

    表示指定HelloServlet應當映射到哪一種URL模式。

     

     

    在修改web.xml完畢過后,重新啟動Server,然后再輸入http://localhost:8080/myweb/HelloWorld

    posted @ 2013-03-01 09:15 管先飛 閱讀(1958) | 評論 (0)編輯 收藏

    我使用的是proxool連接池連接sql server2005數據庫,控制臺報:簽名信息和同一包里面的另外一個類得簽名信息不匹配
    Caused by: java.lang.SecurityException: class "com.microsoft.sqlserver.jdbc.ISQLServerStatement$$FastClassByProxool$$3407f37e"'s signer information does not match signer information of other classes in the same package
    at java.lang.ClassLoader.checkCerts(ClassLoader.java:775)
    at java.lang.ClassLoader.preDefineClass(ClassLoader.java:487)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:614)
    ... 54 more

    解決方法:
        用的JDBC包版本為:sqljdbc_3.0.1301.101_chs中的,下載連接:http://www.microsoft.com/zh-cn/download/details.aspx?id=21599
        拷貝老項目中的一個sqljdbc.jar問題解決,求高手解答下原因。sqljdbc.jar下載連接》可用的包
    posted @ 2013-01-30 01:35 管先飛 閱讀(2002) | 評論 (1)編輯 收藏

         摘要: 在xp操作系統中將下面代碼保存為:*.regWindows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones]"IndexMapping"=hex(7):34,00,30,00,39,00,00,00,34,00,00,00,31,00,30...  閱讀全文
    posted @ 2013-01-04 18:32 管先飛 閱讀(747) | 評論 (0)編輯 收藏

    set Axis_Lib=F:\webservice\axis1.4
    set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib% 
    set Axis_Servlet=http://xx.xx.xx.xx/services/ctcc_ema_wbs?wsdl
    %Java_Cmd%  org.apache.axis.wsdl.WSDL2Java --server-side --skeletonDeploy true %Axis_Servlet% 
    posted @ 2012-12-09 22:11 管先飛 閱讀(309) | 評論 (0)編輯 收藏

    1、客服登錄:客服有客服ID,單位ID:
       WorkerVO workerVO = (WorkerVO) req.getSession().getAttribute("workerVO");
    if(workerVO==null){
    workerVO = new WorkerVO();
    String workerid = req.getParameter("workerid"); //單位ID
    String userid = req.getParameter("userid"); //用戶ID
    if(!StringUtil.isBlank(workerid)){
    boolean b = WorkerLogService.getWorker(workerid, workerVO); //獲取單位信息
    if(b){ //登陸成功
    workerVO.setStartDate((new Date()).getTime());
    if(!StringUtil.isBlank(userid)){
    DeptService deptService = new DeptService();
    OrgUserVO userVO = deptService.getOrgUser(userid); //獲取用戶信息
    workerVO.setUserId(userid);
    if(userVO!=null){
    workerVO.setUserName(userVO.getUserName());
    }
    }
    //1. get map
    // key-userkey  value-workersMap   workersMap<String,Map> ------String 為單位id,
    //--- Map為客服人員集合,Map<String,Object> ,key為客服Id, value為客服人員對象
    //(客服人員ID,客服人員姓名,單位id ,單位名稱 ,狀態(1在線、2忙碌、3離線),在線——1在咨詢中,2空閑,如果狀態是不在線:值為0)。
    super.init(config);  
    ServletContext application=this.getServletContext();  //得到Application對象
    Map<String,Map> workersMap = (Map)application.getAttribute("workersKey");
    if(workersMap == null){ //判斷Map是否為空
    //初始化
    Map<String,Map> workerMap = new Hashtable<String,Map>();
    Map<String,Object> childWorkerMap = new Hashtable<String, Object>();
    WorkerOnlineVO onlineWorker=new WorkerOnlineVO();
    onlineWorker.setDeptId(workerVO.getDeptNo().toString());//單位Id
    onlineWorker.setDeptName(workerVO.getDeptName());
    onlineWorker.setWorkerUserId(workerVO.getUserId());
    onlineWorker.setWorkerUserName(workerVO.getUserName());
    onlineWorker.setState("1");
    onlineWorker.setConsultate("2");
    childWorkerMap.put(workerVO.getUserId(), onlineWorker);
    workerMap.put(workerVO.getDeptNo().toString(), childWorkerMap);
    application.setAttribute("workersKey", workerMap);
    }else{
    Map<String,Object> childWorkerMap=workersMap.get(workerVO.getDeptNo());
    WorkerOnlineVO workerOnline=(WorkerOnlineVO) childWorkerMap.get(workerVO.getUserId());
    if(workerOnline==null){
    WorkerOnlineVO onlineWorker=new WorkerOnlineVO();
    onlineWorker.setDeptId(workerVO.getDeptNo().toString());
    onlineWorker.setDeptName(workerVO.getDeptName());
    onlineWorker.setWorkerUserId(workerVO.getUserId());
    onlineWorker.setWorkerUserName(workerVO.getUserName());
    onlineWorker.setState("1");
    onlineWorker.setConsultate("2");
    childWorkerMap.put(workerVO.getUserId(), onlineWorker);
    workersMap.put(workerVO.getDeptNo().toString(), childWorkerMap);
    //application.setAttribute("workersKey", workersMap);
    }else{
    workerOnline.setState("1");
    workerOnline.setConsultate("2");
    childWorkerMap.put(workerVO.getUserId(), workerOnline);
    workersMap.put(workerVO.getDeptNo().toString(), childWorkerMap);
    // application.setAttribute("workersKey", workersMap);
    }
    }
    req.getSession().setAttribute("workerVO", workerVO);
    OnlineStatusVO.WORKER_QUESTER_MAP.put(workerid, new ArrayList<QuesterVO>());
    OnlineStatusVO.WORKER_VO_MAP.put(workerid, workerVO);
    req.getRequestDispatcher("../worker.jsp").forward(req, res);
    }else{
    res.sendRedirect("../worker_index.jsp?flag=1");
    }
    }else if(!StringUtil.isBlank(userid)){
    if("1".equals(userid)){
    workerVO.setId("0");
    workerVO.setDeptName("技術支持");
    workerVO.setDeptNo("0");
    workerVO.setState("1");
    workerVO.setUserId(userid);
    req.getSession().setAttribute("workerVO", workerVO);
    OnlineStatusVO.WORKER_QUESTER_MAP.put("0", new ArrayList<QuesterVO>());
    OnlineStatusVO.WORKER_VO_MAP.put("0", workerVO);
    req.getRequestDispatcher("../worker.jsp").forward(req, res);
    }
    }else{
    res.sendRedirect("../worker_index.jsp?flag=1");
    }
    }else{ //workerVO != null
    if(StringUtil.isBlank(OnlineStatusVO.WORKER_QUESTER_MAP.get(workerVO.getId()))){
    OnlineStatusVO.WORKER_QUESTER_MAP.put(workerVO.getId(), new ArrayList<QuesterVO>());
    }
    if(StringUtil.isBlank(OnlineStatusVO.WORKER_VO_MAP.get(workerVO.getId()))){
    System.out.println("===OnlineStatusVO.WORKER_VO_MAP.get======");
    OnlineStatusVO.WORKER_VO_MAP.put(workerVO.getId(), workerVO);
    }
    req.getRequestDispatcher("../worker.jsp").forward(req, res);
    }

    1、咨詢者咨詢:單位ID:
    String workerId = req.getParameter("workerId"); //單位ID
    String outmsg = "";
    if(StringUtil.isBlank(workerId)){
    Log.error("---單位Id為空------");
    }else{
    super.init(config);  
    ServletContext application=this.getServletContext();  
    Map<String,Map> workersMap = (Map)application.getAttribute("workersKey");
    if(workersMap==null){ //如果workersMap為空
    outmsg="請電話咨詢,電話號碼為:XXXXX";
    }else{
    Map<String,WorkerOnlineVO> childWorkerMap =workersMap.get(workerId);
    if(childWorkerMap==null){
    outmsg="請電話咨詢,電話號碼為:XXXXX";
    }else{
    //boolean flagTel=false; //無客服人員在線
     String  workerUserIdTemp="";
      Set<String> key = childWorkerMap.keySet();
      for (Iterator it = key.iterator(); it.hasNext();) {
    WorkerOnlineVO workerOnlineVo =childWorkerMap.get((String)it.next()); 
    //狀態(1在線、2忙碌、3離線),在線——1在咨詢中,2空閑,如果狀態是不在線:值為0
    //安排人員的優先級:在線 --空閑  》在線--咨詢中 ,其他條件不符合。
    if(workerOnlineVo.getState().equals("1")&& workerOnlineVo.getConsultate().equals("2")){
    //在線 --空閑  ------------優先級最高
    workerUserIdTemp=workerOnlineVo.getWorkerUserId();
    break;
    else if(workerOnlineVo.getState().equals("1")&& workerOnlineVo.getConsultate().equals("1")){
    //在線--咨詢中
    if(workerUserIdTemp.equals("")){
    workerUserIdTemp=workerOnlineVo.getWorkerUserId();
    }
    }
           }
    if(workerUserIdTemp.equals("")){
    outmsg="請電話咨詢,電話號碼為:XXXXX";
    }else{
    WorkerOnlineVO workerOnlineVo = childWorkerMap.get(workerUserIdTemp);
    workerOnlineVo.setState("1");
    workerOnlineVo.setConsultate("1");
    childWorkerMap.put(workerOnlineVo.getWorkerUserId(), workerOnlineVo);
    workersMap.put(workerId, childWorkerMap); //和原來的Map一樣
    //application.setAttribute("workersKey", workersMap);
    outmsg = "您好,請問有什么可以幫助您的嗎?";
    QuesterVO questerVO = (QuesterVO) req.getSession().getAttribute("questerVO");
    if(questerVO==null || !workerId.equals(questerVO.getWorkerId())){
    OnlineStatusVO.WORKER_USER.put("workerUser", workerOnlineVo);
    questerVO = QuesterLogService.getQuester(workerId); //必須使用人id
    questerVO.setWorkerUserId(workerOnlineVo.getWorkerUserId());
    req.getSession().setAttribute("questerVO", questerVO);
    OnlineStatusVO.WORKER_QUESTER_MAP.get(workerId).add(questerVO);
    OnlineStatusVO.QUESTER_VO_MAP.put(questerVO.getId(), questerVO);
    req.setAttribute("workerOnlineVo", workerOnlineVo);
    }
    }
    req.setAttribute("outmsg", outmsg);
    req.getRequestDispatcher("/quester.jsp").forward(req, res);
    }
    }
    }

    3、中間類:
    public class OnlineStatusVO {
    public static Map<String,WorkerVO> WORKER_VO_MAP = new HashMap<String,WorkerVO>();
    public static Map<String,QuesterVO> QUESTER_VO_MAP = new HashMap<String,QuesterVO>();
    public static Map<String, List<QuesterVO>> WORKER_QUESTER_MAP = new HashMap<String, List<QuesterVO>>();
    public static Map<String, WorkerOnlineVO> WORKER_USER = new HashMap<String, WorkerOnlineVO>();
    }
    posted @ 2012-11-25 16:00 管先飛 閱讀(2364) | 評論 (11)編輯 收藏

    僅列出標題
    共7頁: 上一頁 1 2 3 4 5 6 7 下一頁 
    主站蜘蛛池模板: 亚洲毛片αv无线播放一区| 伊人久久精品亚洲午夜| 男男AV纯肉无码免费播放无码| 国产成人精品日本亚洲直接| 午夜精品免费在线观看| 国产免费久久精品99re丫y| 亚洲色偷偷偷网站色偷一区| 青青操在线免费观看| 成年人免费观看视频网站| 亚洲精品在线视频| 免费人成大片在线观看播放| 国产在线ts人妖免费视频| 中文亚洲成a人片在线观看| 免费精品视频在线| 亚洲国产另类久久久精品黑人| 国产午夜成人免费看片无遮挡| 最近免费中文字幕视频高清在线看| 亚洲天堂2016| 暖暖在线日本免费中文| 激情婷婷成人亚洲综合| 91嫩草免费国产永久入口| 精品亚洲AV无码一区二区三区| eeuss草民免费| 精品熟女少妇AV免费观看| 亚洲AV无码乱码麻豆精品国产| 午夜一区二区免费视频| 亚洲精品国产成人99久久| 91免费国产在线观看| 亚洲欧美熟妇综合久久久久| 亚洲av麻豆aⅴ无码电影| 四虎必出精品亚洲高清| 国产三级免费电影| 99久久国产精品免费一区二区| 久久狠狠高潮亚洲精品| 午夜老司机永久免费看片| 亚洲娇小性色xxxx| 亚洲成人国产精品| 1000部啪啪毛片免费看| 久久久久亚洲Av无码专| 国产极品美女高潮抽搐免费网站| 亚欧国产一级在线免费|