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

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

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

    dom4J 遞歸解析

    book.xml:
    <?xml version="1.0" encoding="UTF-8"?>
    <INVENTORY name="INAtrabute">
        
    <BOOK name="textBook">
            
    <TITLE>
                The Adventures of Huckleberry Finn
                
    <FEN>mast
                    
    <MIAO>
                    miao
                    
    </MIAO>
                
    </FEN>
            
    </TITLE>
            
    <AUTHOR>Mark Twain
                
    <FEN>mast1
                    
    <MIAO>
                    miao1
                    
    </MIAO>
                
    </FEN>
            
    </AUTHOR>
            
    <BINDING>mass market paperback</BINDING>
            
    <PAGES>298</PAGES>
        
    <price>209yuan</price>
        
    </BOOK>
        
    <BOOK>
            
    <TITLE name="testName">Leaves of Grass</TITLE>
            
    <AUTHOR>Walt Whitman</AUTHOR>
            
    <BINDING>hardcover</BINDING>
            
    <PAGES>462</PAGES>
        
    </BOOK>
    </INVENTORY>

    解析代碼:
    @Test
        
    public void treeWalk() throws DocumentException{
            SAXReader reader 
    = new SAXReader(); 
            Document document 
    = reader.read(new File("src/book.xml"));
            Element element
    = document.getRootElement();
            treeWalk(element);
            
        }

        
    public void treeWalk(Element element){
            
    for(int i = 0 , size = element.nodeCount();i<size;i++){
                Node node 
    = element.node(i);
                
                
    if(node instanceof Element){
                    treeWalk((Element)node);
                    String value 
    = node.getName();
                    System.out.println(value);
                }
    else{
                    
                }

            }

        }

    posted @ 2012-06-13 14:07 youngturk 閱讀(325) | 評(píng)論 (0)編輯 收藏

    exel拷貝分割符號(hào)

    行分割:
    String[] lines =line.split("\r\n");
    列分割:
    String[] columns= lines[i].split("\t");

    posted @ 2012-06-12 14:45 youngturk 閱讀(169) | 評(píng)論 (0)編輯 收藏

    PowerDesigner 生成數(shù)據(jù)字典

    打開 PowerDesigner 打開一個(gè)數(shù)據(jù)模型 CDM 或 PDM
    選擇 Report → Reports
    點(diǎn)擊 New Report 新建一個(gè)報(bào)告
    輸入報(bào)告名,選擇中文,標(biāo)準(zhǔn)報(bào)告
    這時(shí)顯示出來(lái)的左邊是可使用的項(xiàng)目,右邊是報(bào)告中已經(jīng)包含的項(xiàng)目,若是只要數(shù)據(jù)字典,可以只保留 Title-Tables
    在網(wǎng)上搜到了一個(gè)簡(jiǎn)單的數(shù)據(jù)字典模板項(xiàng)目如下:
    + Title-Tables
    +--+ Table-表格%ITEM%
    +--+--- Table Card-表格%ITEM%的卡片
    +--+--- Table Description-表格%ITEM%的說(shuō)明
    +--+--- Table Check Constraint Name-表格%ITEM%的約束名稱
    +--+--- List of all Dependencies-表格%PARENT%的依賴清單
    +--+--- List of Table Columns-表格%PARENT%的列清單
    +--+--+ Table Column-表格%PARENT%的列%ITEM%
    +--+--+--- Table Columns Card-表格%PARENT%的列%ITEM%的卡片
    +--+--+--- Table Columns Description-表格%PARENT%的列%ITEM%的說(shuō)明
    +--+--+--- Table Columns Check Constraint Name-表格%PARENT%的列%ITEM%的約束名稱
    +--+--+--- List of all Dependencies-列%PARENT%的依賴清單
    +--+--- List of Table Keys-表格%PARENT%的鍵清單
    +--+--+ Table Key-表格%PARENT%的鍵的%ITEM%
    +--+--+--- Table Key Card-表格%PARENT%的鍵%ITEM%的卡片
    +--+--+--- Table Key Description-表格%PARENT%的鍵%ITEM%的說(shuō)明
    +--+--+--- List of Columns of Table Key-鍵%PARENT%的列清單
    +--+--+--- List of all Dependen
    在這里編輯好報(bào)告的格式后,選擇 Report → Generate HTML 或 Generate RTF 生成報(bào)告即可

    posted @ 2012-06-11 15:07 youngturk 閱讀(1882) | 評(píng)論 (0)編輯 收藏

    Struts2+Freemarker+Ognl中解析request請(qǐng)求的方法

    1.首先struts2為我們定義了幾個(gè)可以在ftl中使用的變量,都放在了org.apache.struts2.views.util.ContextUtil里面,具體怎么做的,還沒(méi)有看。
    1. public static final String REQUEST = "request";

    2. public static final String REQUEST2 = "request";

    3. public static final String RESPONSE = "response";

    4. public static final String RESPONSE2 = "response";

    5. public static final String SESSION = "session";

    6. public static final String BASE = "base";

    7. public static final String STACK = "stack";

    8. public static final String OGNL = "ognl";

    9. public static final String STRUTS = "struts";

    10. public static final String ACTION = "action";
    復(fù)制代碼
    這里定義了我們常用的${base}、${stack}等。
    注意:這里面定義都是對(duì)應(yīng)的類。例如stack對(duì)應(yīng)的就是ValueStack,所以我們?cè)陧?yè)面可以使用
    ${stack.findValue('@com.Blog@PERMIT_COMMENT_BY_NONE')}.這就是方法問(wèn)ValueStack的findValue方法。我們還可以使用
    ${request}來(lái)使用HttpServletRequest類,(只能)然后調(diào)用里面的方法。例如${request.getAttribute("aaa")}等。

    2.通過(guò)使用struts2我們知道,頁(yè)面?zhèn)鬟f過(guò)來(lái)的值都是保存在ActionContext中的值棧里面的,其中這個(gè)值棧是ActionContext 的根,因此可以不用加“#”訪問(wèn)。而在ActionContext中還封存了其他的東西,比如request,session、parameters 等。。但是一定要注意。這里的request、session、parameters等不是HttpServletRequest那些類,而是一個(gè) map。而且進(jìn)行了重新組裝,例如request封裝了 ServletActionContext.getRequest().setAttribute("aaa", "bbb");信息
    我們通過(guò)Ognl.getValue("#request.aaa", map, context.getValueStack().getRoot())就可以取到值。當(dāng)然request這個(gè)map中還有一些其他的東西,例如我的打印結(jié)果是;
    System.out.println(Ognl.getValue("#request", context.getContextMap(),new Object()));通過(guò)打印可以看出來(lái)
    這些可以參考
    http://hi.baidu.com/maml897/blog/item/e6d962c3d55e6338e5dd3bb0.html。

    3.我們知道 ftl頁(yè)面 ${}寫的都是 ognl表達(dá)式,而且都是 根里面的 ,所以不用加上“#”,但是 要訪問(wèn)ActionContext里面,不是根的request怎么辦呢?
    我是這樣用的 ${#request}發(fā)現(xiàn)時(shí)錯(cuò)誤的,后來(lái)查找資料發(fā)現(xiàn)
    使用
    ${Request["a"]}
    ${RequestParameters["a"]}
    ${Session ["a"]}
    ${Application  ["a"]}
    或者${Application.myApplicationAttribute}
    ${Session.mySessionAttribute}
    ${Request.myRequestAttribute}
    ${Parameters.myParameter}
    千萬(wàn)要注意的是
    Application、Session、Request、Parameters都是map。都是大寫的,沒(méi)有寫成${#request}這個(gè)我也不知道為什么,
    在頁(yè)面 用了大寫。
    可以參考freemarker.ext.servlet.FreemarkerServlet
    在action里使用
    System.out.println(Ognl.getValue("#request.aaa", map, context.getValueStack().getRoot()));

    剛才發(fā)現(xiàn) 在jsp頁(yè)面里訪問(wèn) actionContext的內(nèi)容
    ${request}
    這樣寫 是訪問(wèn)actionContext的request,而不是 struts2內(nèi)定的
    用struts2標(biāo)簽
    <x:property value="#request.toString()"/>
    就要加"#"

    posted @ 2012-06-08 18:58 youngturk 閱讀(1545) | 評(píng)論 (0)編輯 收藏

    直接訪問(wèn)國(guó)際化資源文件內(nèi)容:

    直接訪問(wèn)資源文件內(nèi)容:
    <s:i18n name="cn/itcast/action/PersonManageAction"><!-----紅色為報(bào)名直接訪問(wèn)-------->
           <s:text name="welcome">
               <s:param>liming</s:param>
               <s:param>study</s:param>
           </s:text>
    </s:i18n>

    posted @ 2012-06-08 15:21 youngturk 閱讀(211) | 評(píng)論 (0)編輯 收藏

    輸出帶有占位符的國(guó)際化信息getText("welcome",new String[]{"liming","study"})

    資源文件中的內(nèi)容如下:
    Welcome
    ={0},歡迎來(lái)到中國(guó){1
    1在JSP頁(yè)面中輸出帶有占位符的國(guó)際化信息
    <s:text name=”welcome”>
        
    <s:param><s:property  value=”realname”/></s:param>
        
    <s:param>學(xué)習(xí)</s:param>
    </s:text>
    example:
    <s:text name="welcome">
           
    <s:param>liming</s:param>
           
    <s:param>study</s:param>
       
    </s:text> <br>
    2
    在Action類中獲取帶占位符的國(guó)際化信息,可以使用getText(String key  , String[]args )
    或getText(String  aTextName,List args)
    example:
    ActionContext.getContext().put(
    "message"this.getText("welcome",new String[]{"liming","study"}));

    posted @ 2012-06-07 23:00 youngturk 閱讀(593) | 評(píng)論 (0)編輯 收藏

    對(duì)action指定方法進(jìn)行校驗(yàn)validateXxx

    通過(guò)validateXxx方法實(shí)現(xiàn),validateXxx只會(huì)校驗(yàn)action方法名為Xxx的方法。其中Xxx的第一個(gè)字母要大寫,當(dāng)某個(gè)數(shù)據(jù)校驗(yàn)失敗時(shí),我們應(yīng)該調(diào)用addFieldError方法往系統(tǒng)的fieldError添加校驗(yàn)失敗信息(為了使用addFieldError方法,繼承ActionSupport)如果系統(tǒng)的fieldErrors包含失敗信息,struts2將請(qǐng)求自動(dòng)轉(zhuǎn)發(fā)到名為inputresult,在input視圖中可以通過(guò)<s:fielderror/>顯示失敗信息。
    1,input視圖是struts2特定的視圖,必須這么寫

    @Override  需要對(duì)這行去掉,@Override表示重載會(huì)繼承父類的方法
        public void validateUpdate() {
    }

    posted @ 2012-06-07 15:38 youngturk 閱讀(346) | 評(píng)論 (0)編輯 收藏

    對(duì)action所有方法進(jìn)行輸入校驗(yàn)validate()方法

    1.需要使用validate方法
    validate 方法繼承 actionsupport類

    2 驗(yàn)證錯(cuò)誤結(jié)果需要在本類的this.addFieldError(驗(yàn)證參數(shù),傳遞數(shù)據(jù));
    this.addFieldError("username""user can not be null");

    3.struts.xml中 需要由input是struts2專門驗(yàn)證的參數(shù)必須這么寫,是內(nèi)部繼承的與
    this.addFieldError關(guān)聯(lián)<result name="input">/index.jsp</result>跳轉(zhuǎn)到結(jié)果錯(cuò)誤提示視圖
    <action name="manage_*" class="cn.itcast.action.PersonAction" method="{1}">
                
    <!-- 錯(cuò)誤輸出時(shí)候會(huì)調(diào)用系統(tǒng)自帶的input視圖 -->
                
    <result name="input">/index.jsp</result>
                
    <result name="message">/WEB-INF/page/message.jsp</result>
                
            
    </action>
    4驗(yàn)證結(jié)果輸出jsp頁(yè)面需要導(dǎo)入
    <%@taglib uri="/struts-tags" prefix="s"%>
    sturts2標(biāo)簽,
    <s:fielderror/>
    為輸出結(jié)果
    “user can not be 
    null

    posted @ 2012-06-07 15:19 youngturk 閱讀(291) | 評(píng)論 (0)編輯 收藏

    攔截器再應(yīng)用學(xué)習(xí)

    攔截器
    如果用戶登錄后可以訪問(wèn)action中的所有方法
    user.jsp{
    request.getSession().setAttribute(
    "user""itcast");
    //專門設(shè)置用戶是否登錄狀態(tài),session來(lái)專門標(biāo)注用戶是否登錄
    }
    退出登錄
    quit.jsp{
    request.getSession().removeAttribute(
    "user");
    //將session去掉就行了..
    }
    如果用戶沒(méi)有登錄不允許訪問(wèn)action中的方法,并且提示

    1.定義攔截器
    1.1實(shí)現(xiàn)com.opensymphony.xwork2.ActionInvocation.Interceptor接口
        @Override
        
    public void destroy() {//當(dāng)此類被摧毀的時(shí)候執(zhí)行
            
        }

        @Override
        
    public void init() {//實(shí)例化自動(dòng)執(zhí)行
            
        }
    public String intercept(ActionInvocation invocation) throws Exception {
            
    // TODO Auto-generated method stub
            Object user = ActionContext.getContext().getSession().get("user");
            
    if(user!=null)//判斷用戶是否登錄
                invocation.invoke();//執(zhí)行被攔截到的方法,不掉用,被攔截的action方法

    不會(huì)被執(zhí)行
            ActionContext.getContext().put(
    "message""you have not right");
            
    return "success";//定義全局
        }//當(dāng)攔擊到action就會(huì)執(zhí)行此方法
    1.2注冊(cè)攔截器 在struts的package中注冊(cè)攔截器
    <package name="employee" namespace="/control/employee" extends="struts-default">
            
    <interceptors> <!-- 注冊(cè)攔截器 -->
                
    <interceptor name="permission" 

    class="cn.itcast.interceptor.PermissionInterceptor"></interceptor>
                
    <!-- 使用攔截器棧可以使用自定義攔截器,且 不失去系統(tǒng)自定義攔截器功能 

    -->
                
    <interceptor-stack name="permissionStack">
                    
    <!-- 系統(tǒng)默認(rèn)攔截器 -->
                    
    <interceptor-ref name="defaultStack"></interceptor-ref>
                    
    <!-- 自定義攔截器的引入 -->
                    
    <interceptor-ref name="permission"></interceptor-ref>
                
    </interceptor-stack>
            
    </interceptors>
            
    <!--默認(rèn)包里面全用此攔截器  1 與 @@對(duì)應(yīng)-->
            
    <default-interceptor-ref name="permissionStack"></default-interceptor-ref>
            
    <global-results>
                
    <result name="success">/WEB-INF/page/message.jsp</result>
            
    </global-results>
            
            
            
    <action name="list_*" class="cn.itcast.action.HelloWorldAction" 

    method
    ="{1}">
                
    <!-- 使用攔截器 @@ -->
                
    <!-- <interceptor-ref name="permissionStack"></interceptor-ref>
                
    <interceptor-ref name="增加自定義新攔截器"></interceptor-ref> -->
            
    </action>
        
    </package>

    1.3 需要定義攔截器棧,否則自定義攔截器會(huì)覆蓋struts自帶的攔截器,使struts失去自身的攔截器功能
    /control/employee

    posted @ 2012-06-07 11:55 youngturk 閱讀(174) | 評(píng)論 (0)編輯 收藏

    1動(dòng)態(tài)方式調(diào)用;使用通配符定義action;通過(guò)繼承DefaultTypeConverter類型;注冊(cè)為局部類型轉(zhuǎn)換器:

    兩種方式:
    1動(dòng)態(tài)方式調(diào)用:在默認(rèn)值情況excute執(zhí)行情況下(不建議使用這種方法)
    struts中當(dāng)action為:
            
    <action name="helloWord" class="cn.itcast.action.HelloWorldAction" method="execute" 

    >
                
    <param name="savepath">/department</param>
                
    <result name="success">/WEB-INF/page/message.jsp</result>
            
    </action>
    時(shí)候cn.itcast.action.HelloWorldAction中的方法addUI可以這樣執(zhí)行helloWord
    !addUI.action這樣執(zhí)行
    2.<constant name="struts.enable.DynamicMethodInvocation" value="false" />這個(gè)可以禁止使用動(dòng)態(tài)方法
    3.使用通配符定義action
    <action name="helloWord_*" class="cn.itcast.action.HelloWorldAction" method="{1}" >
                
    <param name="savepath">/department</param>
                
    <result name="success">/WEB-INF/page/{1}.jsp</result>
            
    </action>
    1}代表索取到的通配符*
    4.以get方法得到參數(shù)形式如下:
    http:
    //localhost:7002/struts2/control/department/helloWordexecute.action?id=123&name=aaa
    直接在地址后面付值.
    get
    *()不管是post還是get方法提交,都能得到值
    5,通過(guò)過(guò)濾器解決中文亂碼問(wèn)題..
    6,自定義類型轉(zhuǎn)換
    struts 兩種轉(zhuǎn)換器:
    1)    局部類型轉(zhuǎn)換器:對(duì)某個(gè)action起作用
    2)    全局類型轉(zhuǎn)換器:對(duì)所有action中此類型作用
    通過(guò)繼承DefaultTypeConverter類型
    代碼實(shí)現(xiàn):
    public Object convertValue(Map<String, Object> context, Object value,
                Class toType) 
    {
    //        return super.convertValue(context, value, toType);
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyymmdd");
            
    try{
                
    if(toType == Date.class){//選擇所用類 字符串向date轉(zhuǎn)換
                    String[] params = (String[])value;//request.getParameterValues()只能取這個(gè)方法取出所有值
                    return dateFormat.parse(params[0]);
                }
    else if(toType == String.class){
                    java.util.Date date 
    = (java.util.Date)value;
                    
    return dateFormat.format(date);
                }

            }
    catch(ParseException e){}
            
    return null;
        }


    }

    注冊(cè)為局部類型轉(zhuǎn)換器:
        在action類所在包下建立ActionClassName
    -Conversion.properties文件Conversion固定寫法不可改變birthday cn.itcast.type.DateTypeConverter

    *************************
    request
    /session/application的屬性添加.
    通過(guò)acctionContext添加上面三個(gè)屬性

    posted @ 2012-06-05 17:31 youngturk 閱讀(298) | 評(píng)論 (0)編輯 收藏

    僅列出標(biāo)題
    共33頁(yè): First 上一頁(yè) 11 12 13 14 15 16 17 18 19 下一頁(yè) Last 
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導(dǎo)航

    統(tǒng)計(jì)

    公告

    this year :
    1 jQuery
    2 freemarker
    3 框架結(jié)構(gòu)
    4 口語(yǔ)英語(yǔ)

    常用鏈接

    留言簿(6)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊(cè)

    EJB學(xué)習(xí)

    Flex學(xué)習(xí)

    learn English

    oracle

    spring MVC web service

    SQL

    Struts

    生活保健

    解析文件

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 久久精品国产亚洲av水果派| 亚洲福利视频网址| 亚洲毛片无码专区亚洲乱| 亚洲乱亚洲乱妇无码| 中文在线观看免费网站| 国产情侣激情在线视频免费看| 又粗又硬免费毛片| 亚洲黄色免费网站| 日本免费精品一区二区三区| 97在线视频免费播放| 亚洲国产成人精品久久久国产成人一区二区三区综 | 亚洲国产精品自在线一区二区 | 亚洲av永久无码嘿嘿嘿| 国产精品免费αv视频| 中国在线观看免费国语版| 亚洲熟妇无码乱子AV电影| 亚洲性无码AV中文字幕| 中文字幕久精品免费视频| 日韩a级毛片免费观看| 亚洲国产天堂在线观看| 日韩久久无码免费毛片软件| 成人黄色免费网址| 日本亚洲欧洲免费天堂午夜看片女人员| 国内精品久久久久影院亚洲| 男女午夜24式免费视频| 亚洲第一黄片大全| 亚洲日本久久久午夜精品| 国产成人一区二区三区视频免费| 伊在人亚洲香蕉精品区麻豆| 亚洲伊人久久大香线蕉影院| 在线人成免费视频69国产| 亚洲va中文字幕无码| 亚洲最大中文字幕无码网站| 日韩免费高清大片在线| 国产精品xxxx国产喷水亚洲国产精品无码久久一区| 亚洲天堂中文字幕在线观看| 3344在线看片免费| 4338×亚洲全国最大色成网站| 亚洲精品美女久久久久久久| 精品免费久久久久久久| 亚洲AV无码AV男人的天堂|