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

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

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

    朱杰兵blog

    jonhney'blog
    posts - 140, comments - 1, trackbacks - 0, articles - 0

    Spring Web MVC 處理Http請(qǐng)求的大致過程: 一旦Http請(qǐng)求到來,DispatcherSevlet將負(fù)責(zé)將請(qǐng)求分發(fā)。DispatcherServlet可以認(rèn)為是Spring提供的前端控制器,所有的請(qǐng)求都有經(jīng)過它來統(tǒng)一分發(fā)。 在DispatcherServlet將請(qǐng)求分發(fā)給Spring Controller之前,需要借助于Spring提供的HandlerMapping定位到具體的Controller。HandlerMapping是這樣一種對(duì)象,它能夠完成客戶請(qǐng)求到Controller之間的映射。在Struts中,這種映射是通過struts-config.xml文件完成的。其中,Spring為Controller接口提供了若干實(shí)現(xiàn),例如Spring默認(rèn)使用的BeanNameUrlHandlerMapping。還有,SimpleUrlHandlerMapping,CommonsPathMapHandlerMapping。 Spring Controller將處理來自DispatcherServlet的請(qǐng)求。Spring的Controller類似于struts的Action,能夠接受HttpServletRequest和HttpServletResponse。Spring為Controller接口提供了若干實(shí)現(xiàn)類,位于org.springframework.web.servlet.mvc包中。由于Controller需要為并發(fā)用戶處理上述請(qǐng)求,因此實(shí)現(xiàn)Controller接口時(shí),必須保證線程安全并且可重用。Controller將處理客戶請(qǐng)求,這和Struts Action 扮演的角色是一致的。 一旦Controller處理完客戶請(qǐng)求,則返回ModelAndView對(duì)象給DispatcherServlet前端控制器。ModelAndView中包含了模型(Model)和視圖(View)。從宏觀角度考慮,DispatcherServlet是整個(gè)Web應(yīng)用的控制器;從微觀角度考慮,Controller是單個(gè)Http請(qǐng)求處理過程中的控制器,而ModelAndView是Http請(qǐng)求過程中返回的模型和視圖。前端控制器返回的視圖可以是視圖的邏輯名,或者實(shí)現(xiàn)了View接口的對(duì)象。View對(duì)象能夠渲染客戶響應(yīng)結(jié)果。其中,ModelAndView中的模型能夠供渲染View時(shí)使用。借助于Map對(duì)象能夠存儲(chǔ)模型。 如果ModelAndView返回的視圖只是邏輯名,則需要借助Spring提供的視圖解析器(ViewResoler)在Web應(yīng)用中查找View對(duì)象,從而將響應(yīng)結(jié)果渲染給客戶。 DispatcherServlet將View對(duì)象渲染出的結(jié)果返回個(gè)客戶。

    posted @ 2015-05-19 15:23 朱杰兵 閱讀(318) | 評(píng)論 (0)編輯 收藏

    方法/步驟

    1. 在系統(tǒng)變量里點(diǎn)擊新建,變量名填寫JAVA_HOME,變量值填寫JDK的安裝路徑,在這里就填寫“C:\Program Files\Java\jdk1.6.0_26”了。


    2. 在系統(tǒng)變量里點(diǎn)擊新建變量名填寫CLASSPATH,變量值填寫“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar”。注意不要忘記前面的點(diǎn)和中間的分號(hào)。


    3. 在系統(tǒng)變量里找到Path變量,這是系統(tǒng)自帶的,不用新建。雙擊Path,由于原來的變量值已經(jīng)存在,故應(yīng)在已有的變量后加上“;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin”。注意前面的分號(hào)。


    4. 至此,應(yīng)有的環(huán)境變量已經(jīng)配置完畢。驗(yàn)證的方法:在運(yùn)行框中輸入cmd命令,回車后輸入java,按回車出現(xiàn)以下畫面


    5. 5

      輸入javac,按回車出現(xiàn)以下畫面,則表示設(shè)置成功。



    posted @ 2015-05-12 10:52 朱杰兵 閱讀(112) | 評(píng)論 (0)編輯 收藏

    左外連接包含left join左表所有行,如果左表中某行在右表沒有匹配,則結(jié)果中對(duì)應(yīng)行右表的部分全部為空(NULL).

    注:此時(shí)我們不能說結(jié)果的行數(shù)等于左表數(shù)據(jù)的行數(shù)。當(dāng)然此處查詢結(jié)果的行數(shù)等于左表數(shù)據(jù)的行數(shù),因?yàn)樽笥覂杀泶藭r(shí)為一對(duì)一關(guān)系。

    **********************************************************************************
    下面介紹一下當(dāng)兩表為多對(duì)多的時(shí)候我們?cè)撊绾谓ū硪约靶㏒QL語句。

    新建三表:

    表A:  student 截圖如下:

    SQL多表連接查詢

    表B:  course 截圖如下:

    SQL多表連接查詢

    表C:  student_course 截圖如下:

    SQL多表連接查詢

    一個(gè)學(xué)生可以選擇多門課程,一門課程可以被多個(gè)學(xué)生選擇,因此學(xué)生表student和課程表course之間是多對(duì)多的關(guān)系。

    當(dāng)兩表為多對(duì)多關(guān)系的時(shí)候,我們需要建立一個(gè)中間表student_course,中間表至少要有兩表的主鍵,當(dāng)然還可以有別的內(nèi)容。

    SQL 語句:select s.Name,C.Cname from student_course as sc left join student as s on s.Sno=sc.Sno left join course as c on c.Cno=sc.Cno

    執(zhí)行結(jié)果:

    SQL多表連接查詢

    此條SQL執(zhí)行的結(jié)果是學(xué)生選課的情況。

    posted @ 2015-05-08 15:27 朱杰兵 閱讀(113) | 評(píng)論 (0)編輯 收藏

    boolean  1 字節(jié)
    char 2 字節(jié)

    整數(shù)類型 byte 1 字節(jié)
    short 2 字節(jié)
    int 4 字節(jié)
    long 8 字節(jié)
    浮點(diǎn)類型
    float 4 字節(jié)
    double 8 字節(jié)


    java中,只要是字符,不管是數(shù)字還是英文還是漢字,都占兩個(gè)字節(jié),都是一個(gè)char。

    java一個(gè)漢字占幾個(gè)字節(jié)


    在java中占兩個(gè)字節(jié),用char類型表示,因?yàn)槭荱nicode編碼,
    ps utf-8 的漢字占3個(gè)字節(jié) gbk 是兩個(gè)
    看編碼方式:utf-8碼的中文都是3字節(jié)的,而 gbk/gbk18030 是2字節(jié)的。



    posted @ 2015-05-05 16:35 朱杰兵 閱讀(99) | 評(píng)論 (0)編輯 收藏

    1.使用(String)轉(zhuǎn)換,要注意類型不一致時(shí)會(huì)報(bào)類型轉(zhuǎn)換異常CalssCastException,                  如果object是null的話,返回的也是null .    ((String)object == null)   ----->true
    2.使用.toString(),要注意object為null的時(shí)候,會(huì)報(bào)空指針異常
    3.String.valueOf(),源碼是
    public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); }
    如果object為null的時(shí)候,返回"null"字符串,卻避免了拋出空指針異常

    posted @ 2015-04-28 16:19 朱杰兵 閱讀(141) | 評(píng)論 (0)編輯 收藏

    package cn.mysteel.wms.user.web;

    import java.util.ArrayList;
    import java.util.HashSet;
    import java.util.LinkedHashSet;
    import java.util.List;
    import java.util.Set;

    public class Test
    {

        public static void main(String[] args)
        {
            List<String> list = new ArrayList<String>();
            list.add("朱杰兵");
            list.add("zhujiebing");
            list.add("zhujiebing");
            list.add("22222");
            list.add("22222");
            
            List<String> newList = new ArrayList<String>();
            
            //第一種方式用set去重
            /*Set<String> set = new HashSet<String>();
            
            for(String str : list)
            {
                if(set.add(str))
                {
                    newList.add(str);
                }
            }
            
            */
            
            
            //第二種方式用linkedhashset去重
            newList = new ArrayList<String>(new LinkedHashSet<String>(list));
            
            for(String str2 : newList)
            {
                System.out.println(str2);
            }
        }
    }

    posted @ 2015-04-16 15:49 朱杰兵 閱讀(135) | 評(píng)論 (0)編輯 收藏

    List<UserOutPlanItem> itemList = info.getItemList();//需要去重匯總的list
            
            List<UserOutAuditDTO> summary = new ArrayList<UserOutAuditDTO>();;
           
             //匯總到的map value為總數(shù)量和總重量
            Map<String, String> map = new HashMap<String, String>();

            if (ObjectUtils.notEmpty(itemList))
            {
                for (UserOutPlanItem item : itemList)
                {
                    //這六個(gè)字段相同則匯成一條,并且把重量和數(shù)量累加
                    String key = item.getBreedName()+"_"+item.getSpecName()+"_"+
                            item.getMaterialName()+"_"+item.getFactoryName()+"_"+
                            item.getNumUtil()+"_"+item.getWeightUtil();

                    String num_weight = map.get(key);
                    //當(dāng)鍵不存在的時(shí)候匯一條
                    if (StringUtils.isNull(num_weight))
                    {
                        map.put(key, item.getNum()+"_"+item.getWeight());
                    }
                    //當(dāng)key已經(jīng)存在了,則累加
                    else
                    {
                        String[] arr = num_weight.split("_");
                        String thisNum = MoneyCalculateUtils.add(arr[0], item.getNum(), 0);
                        String thisWeight = MoneyCalculateUtils.add(arr[1], item.getWeight(), 4);
                        map.put(key, thisNum + "_" + thisWeight);
                    }
                }
            }

            //重新解析map,把數(shù)據(jù)封裝到summary
            if (ObjectUtils.notEmpty(map))
            {
                Set<String> ketSet = map.keySet();
                for (String str : ketSet)
                {
                    String arr[] = str.split("_");
                    UserOutAuditDTO dto = new UserOutAuditDTO();
                    dto.setBreedName(arr[0]);
                    dto.setSpec(arr[1]);
                    dto.setMaterial(arr[2]);
                    dto.setFactory(arr[3]);
                    dto.setNumUtil(arr[4]);
                    dto.setWeightUtil(arr[5]);
                    
                    String num_weight = map.get(str);
                    String arr2[] = num_weight.split("_");
                    dto.setSumNum(arr2[0]);
                    dto.setSumWeight(arr2[1]);
                    summary.add(dto);
                }
            }

    posted @ 2015-04-16 15:22 朱杰兵 閱讀(3078) | 評(píng)論 (0)編輯 收藏

    Servlet用來控制流程跳轉(zhuǎn)

    posted @ 2015-04-16 10:09 朱杰兵 閱讀(132) | 評(píng)論 (0)編輯 收藏

    1.匹配一位小數(shù) <input type="text" onkeyup="value=value.replace(/[^\d\.]/g, '').replace(/(\.\d).*/g, '$1')" value=""/>
    在第二個(gè)replace 用 \d{2}  小數(shù)點(diǎn)后兩位

    2.匹配整數(shù)
    .replace(/[^\d\\]/g,'');


    posted @ 2015-04-13 21:22 朱杰兵 閱讀(708) | 評(píng)論 (0)編輯 收藏

    1.SSL依靠證書來驗(yàn)證服務(wù)器的身份,并為瀏覽器和服務(wù)器之間的通信加密。
    2.
    采用https的服務(wù)器必 須從CA (Certificate Authority)申請(qǐng)一個(gè)用于證明服務(wù)器用途類型的證書。該證書只有用于對(duì)應(yīng)的服務(wù)器的時(shí)候,客戶端才信任此主機(jī)。所以所有的銀行系統(tǒng)網(wǎng)站,關(guān)鍵部分 應(yīng)用都是https 的??蛻敉ㄟ^信任該證書,從而信任了該主機(jī)。其實(shí)這樣做效率很低,但是銀行更側(cè)重安全。



    1. 一般意義上的https,就是服務(wù)器有一個(gè)證書。
    a) 主要目的是保證服務(wù)器就是他聲稱的服務(wù)器,這個(gè)跟第一點(diǎn)一樣。
    b)服務(wù)端客戶端之間的所有通訊,都是加密的。
    i. 具體講,是客戶端產(chǎn)生一個(gè)對(duì)稱的密鑰,通過服務(wù)器的證書來交換密鑰,即一般意義上的握手過程。
    ii. 接下來所有的信息往來就都是加密的。第三方即使截獲,也沒有任何意義,因?yàn)樗麤]有密鑰,當(dāng)然篡改也就沒有什么意義了。
    2. 少許對(duì)客戶端有要求的情況下,會(huì)要求客戶端也必須有一個(gè)證書。
    a) 這里客戶端證書,其實(shí)就類似表示個(gè)人信息的時(shí)候,除了用戶名/密碼,還有一個(gè)CA 認(rèn)證過的身份。因?yàn)閭€(gè)人證書一般來說是別人無法模擬的,所有這樣能夠更深的確認(rèn)自己的身份。
    b) 目前大多數(shù)個(gè)人銀行的專業(yè)版是這種做法,具體證書可能是拿U盤(即U盾)作為一個(gè)備份的載體。

    應(yīng)用于安全敏感通訊  例如交易支付

    posted @ 2015-03-26 08:53 朱杰兵 閱讀(233) | 評(píng)論 (0)編輯 收藏

    僅列出標(biāo)題
    共14頁: First 上一頁 6 7 8 9 10 11 12 13 14 下一頁 
    主站蜘蛛池模板: 免费无码又爽又刺激毛片| 亚洲一区二区三区在线观看蜜桃| 噼里啪啦电影在线观看免费高清 | 污视频网站免费在线观看| 亚洲欧洲中文日产| 亚洲大尺度无码无码专区| 亚洲乱码国产一区网址| 日韩人妻无码免费视频一区二区三区 | 91精品免费高清在线| 水蜜桃视频在线观看免费播放高清| 性色av极品无码专区亚洲| 亚洲宅男天堂a在线| 亚洲人成电影福利在线播放| 久久久亚洲精品蜜桃臀| 免费乱码中文字幕网站| 青青草国产免费久久久下载| 国产福利在线免费| 日本最新免费网站| 最近免费视频中文字幕大全| 久久成人免费大片| 成人电影在线免费观看| 99久久免费国产精精品| 久久国产一片免费观看| free哆拍拍免费永久视频| 永久免费精品影视网站| 免费精品国产自产拍在线观看| 精品亚洲成A人在线观看青青| 亚洲精品无码少妇30P| 亚洲精品无码中文久久字幕| 亚洲av永久无码| 国产成人亚洲午夜电影| 处破女第一次亚洲18分钟| 国产在亚洲线视频观看| 国产精品亚洲а∨无码播放不卡| 美女免费精品高清毛片在线视| 国产精品观看在线亚洲人成网| 老司机午夜精品视频在线观看免费| 日本永久免费a∨在线视频| 一区二区三区精品高清视频免费在线播放 | 在线视频亚洲一区| 亚洲天堂免费在线视频|