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 閱讀(328) | 評論 (0)編輯 收藏

          exel拷貝分割符號

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

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

          PowerDesigner 生成數據字典

          打開 PowerDesigner 打開一個數據模型 CDM 或 PDM
          選擇 Report → Reports
          點擊 New Report 新建一個報告
          輸入報告名,選擇中文,標準報告
          這時顯示出來的左邊是可使用的項目,右邊是報告中已經包含的項目,若是只要數據字典,可以只保留 Title-Tables
          在網上搜到了一個簡單的數據字典模板項目如下:
          + Title-Tables
          +--+ Table-表格%ITEM%
          +--+--- Table Card-表格%ITEM%的卡片
          +--+--- Table Description-表格%ITEM%的說明
          +--+--- 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%的說明
          +--+--+--- 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%的說明
          +--+--+--- List of Columns of Table Key-鍵%PARENT%的列清單
          +--+--+--- List of all Dependen
          在這里編輯好報告的格式后,選擇 Report → Generate HTML 或 Generate RTF 生成報告即可

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

          Struts2+Freemarker+Ognl中解析request請求的方法

          1.首先struts2為我們定義了幾個可以在ftl中使用的變量,都放在了org.apache.struts2.views.util.ContextUtil里面,具體怎么做的,還沒有看。
          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";
          復制代碼
          這里定義了我們常用的${base}、${stack}等。
          注意:這里面定義都是對應的類。例如stack對應的就是ValueStack,所以我們在頁面可以使用
          ${stack.findValue('@com.Blog@PERMIT_COMMENT_BY_NONE')}.這就是方法問ValueStack的findValue方法。我們還可以使用
          ${request}來使用HttpServletRequest類,(只能)然后調用里面的方法。例如${request.getAttribute("aaa")}等。

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

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

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

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

          直接訪問國際化資源文件內容:

          直接訪問資源文件內容:
          <s:i18n name="cn/itcast/action/PersonManageAction"><!-----紅色為報名直接訪問-------->
                 <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 閱讀(215) | 評論 (0)編輯 收藏

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

          資源文件中的內容如下:
          Welcome
          ={0},歡迎來到中國{1
          1在JSP頁面中輸出帶有占位符的國際化信息
          <s:text name=”welcome”>
              
          <s:param><s:property  value=”realname”/></s:param>
              
          <s:param>學習</s:param>
          </s:text>
          example:
          <s:text name="welcome">
                 
          <s:param>liming</s:param>
                 
          <s:param>study</s:param>
             
          </s:text> <br>
          2
          在Action類中獲取帶占位符的國際化信息,可以使用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 閱讀(599) | 評論 (0)編輯 收藏

          對action指定方法進行校驗validateXxx

          通過validateXxx方法實現,validateXxx只會校驗action方法名為Xxx的方法。其中Xxx的第一個字母要大寫,當某個數據校驗失敗時,我們應該調用addFieldError方法往系統的fieldError添加校驗失敗信息(為了使用addFieldError方法,繼承ActionSupport)如果系統的fieldErrors包含失敗信息,struts2將請求自動轉發到名為inputresult,在input視圖中可以通過<s:fielderror/>顯示失敗信息。
          1,input視圖是struts2特定的視圖,必須這么寫

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

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

          對action所有方法進行輸入校驗validate()方法

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

          2 驗證錯誤結果需要在本類的this.addFieldError(驗證參數,傳遞數據);
          this.addFieldError("username""user can not be null");

          3.struts.xml中 需要由input是struts2專門驗證的參數必須這么寫,是內部繼承的與
          this.addFieldError關聯<result name="input">/index.jsp</result>跳轉到結果錯誤提示視圖
          <action name="manage_*" class="cn.itcast.action.PersonAction" method="{1}">
                      
          <!-- 錯誤輸出時候會調用系統自帶的input視圖 -->
                      
          <result name="input">/index.jsp</result>
                      
          <result name="message">/WEB-INF/page/message.jsp</result>
                      
                  
          </action>
          4驗證結果輸出jsp頁面需要導入
          <%@taglib uri="/struts-tags" prefix="s"%>
          sturts2標簽,
          <s:fielderror/>
          為輸出結果
          “user can not be 
          null

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

          攔截器再應用學習

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

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

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

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

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

          -->
                      
          <interceptor-stack name="permissionStack">
                          
          <!-- 系統默認攔截器 -->
                          
          <interceptor-ref name="defaultStack"></interceptor-ref>
                          
          <!-- 自定義攔截器的引入 -->
                          
          <interceptor-ref name="permission"></interceptor-ref>
                      
          </interceptor-stack>
                  
          </interceptors>
                  
          <!--默認包里面全用此攔截器  1 與 @@對應-->
                  
          <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 需要定義攔截器棧,否則自定義攔截器會覆蓋struts自帶的攔截器,使struts失去自身的攔截器功能
          /control/employee

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

          1動態方式調用;使用通配符定義action;通過繼承DefaultTypeConverter類型;注冊為局部類型轉換器:

          兩種方式:
          1動態方式調用:在默認值情況excute執行情況下(不建議使用這種方法)
          struts中當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>
          時候cn.itcast.action.HelloWorldAction中的方法addUI可以這樣執行helloWord
          !addUI.action這樣執行
          2.<constant name="struts.enable.DynamicMethodInvocation" value="false" />這個可以禁止使用動態方法
          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方法得到參數形式如下:
          http:
          //localhost:7002/struts2/control/department/helloWordexecute.action?id=123&name=aaa
          直接在地址后面付值.
          get
          *()不管是post還是get方法提交,都能得到值
          5,通過過濾器解決中文亂碼問題..
          6,自定義類型轉換
          struts 兩種轉換器:
          1)    局部類型轉換器:對某個action起作用
          2)    全局類型轉換器:對所有action中此類型作用
          通過繼承DefaultTypeConverter類型
          代碼實現:
          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轉換
                          String[] params = (String[])value;//request.getParameterValues()只能取這個方法取出所有值
                          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;
              }


          }

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

          *************************
          request
          /session/application的屬性添加.
          通過acctionContext添加上面三個屬性

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

          僅列出標題
          共33頁: First 上一頁 11 12 13 14 15 16 17 18 19 下一頁 Last 
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          公告

          this year :
          1 jQuery
          2 freemarker
          3 框架結構
          4 口語英語

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          EJB學習

          Flex學習

          learn English

          oracle

          spring MVC web service

          SQL

          Struts

          生活保健

          解析文件

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 调兵山市| 怀安县| 四平市| 巴彦淖尔市| 彰武县| 盖州市| 山西省| 盘山县| 曲水县| 荆州市| 苗栗市| 西华县| 湛江市| 景德镇市| 随州市| 丰原市| 关岭| 大石桥市| 微山县| 青浦区| 吉水县| 许昌县| 六安市| 三明市| 怀来县| 出国| 定兴县| 九龙县| 临泉县| 永寿县| 米脂县| 抚远县| 隆安县| 湘西| 益阳市| 宜君县| 汽车| 南川市| 乐东| 阳城县| 宣城市|