<strike id="6q0um"></strike>
  • <strike id="6q0um"><s id="6q0um"></s></strike>
  • <ul id="6q0um"></ul><strike id="6q0um"></strike>

    當前位置:高考升學網 > 招聘筆試題 > 正文

    大唐電信java筆試題和面試題答案目(二)

    更新:2023-09-17 03:22:28 高考升學網

      9. Struts和struts2.0有什么區別,使用時需要注意什么?

      /Action類

      Struts1要求Action類繼承一個抽象類,Struts1使用抽象類編程而不是接口

      Struts2可以實現Action接口也可以不實現,Struts2提供一個ActionSuport基類去實現常用接口。Action接口不是必須的,任何有execute的標識的POJO都有可能成為struts2的Action的對象

      /線程模式

      Struts1的Action是單例模式并且是線程安全的,僅有Action一個實例來處理所有請求。單策略模式限制了Struts1 Action能做的事。比且在開發時要注意Action資源必須是線程

      安全比且是同步的。

      Struts2的Action對象為每個請求產生一個實例,因此沒有線程安全問題。

      /Servlet依賴

      Struts1 Action依賴與Servlet API,因為當一個Action被調用時HttpServletRequest和HttpServletResponse被傳遞給execute方法。

      Struts2 Action不依賴與容器,允許Action脫離容器被單獨測試。如果需要,struts2依然可以訪問初始的request和response。但是,其他的元素減少或者消除了直接訪問HttpServletRequest和HttpServletResponse的必要性。

      /可測性:

      測試Struts1 Action的一個主要問題是execute方法暴漏了Servlet API(這使得測試要依賴于容器)。一個第三方擴展--Struts TestCase--提供了一套Struts1的模擬對象(來進行測試)

      struts2 Action可以通過初始化、設置屬性、調用方法來測試,“依賴注入”支持也使測試更容易。

      /捕獲輸入:

      struts1使用ActionForm對象捕獲輸入。所有ActionForm必須繼承一個基類。因為其他JavaBean不能用作ActionForm,開發者經常創建多余的基類不或輸入。動態Bean(DynaBeans)可以作為創建傳統ActionForm的選擇,但是,開發者可能是在重新描述(創建)已經存在的JavaBean(仍然會導致有沉余的JavaBean)。

      Struts2直接使用Acrtion屬性作為輸入屬性,消除了對第二個輸入對象的請求。輸入屬性可能是有自己(子)屬性的Rich對象類型。Action屬性能過通過web頁面上的Taglibs訪問。struts2也支持ActionForm模式。Richard對象類型,包括業務對象,能夠用作輸入/輸出對象。這種ModelDriven特性簡化了Taglib對POJO輸入對象的引用。

      /表達式語言

      Struts1整合了JSTL,因此使用JSTL EL。這種EL有基本對象圖遍歷,但是對集合和索引屬性的支持很脆弱。

      Struts2可以使用JSTL,但是也支持一個更強大和靈活的表達式語言--“object graph Notation Language”(OGNL)

      /綁定值到頁面(view)

      Struts1使用標準JSP機制吧對象綁定到頁面中來訪問。

      struts2使用ValueStack技術,使taglib能夠訪問值而不需要把你的頁面(view)和對象綁定起來。ValueStack策略允許通過一系列名稱相同但類型不同的屬性重同頁面(view)

      /類型轉換

      Struts1 ActionForm屬性通常都是String類型。struts1使用Commons-Beanutils進行類型轉換。每個類一個轉換器,對每一個實例來說是不可配置的

      struts2 使用OGNL進行類型轉換,提供基本和常用對象的轉換器。

      /效驗

      Struts1支持在ActionForm的validate方法中手動效驗,或者通過Commons Validator的擴展來效驗。同一個類可以有不同的效驗內容,但不能效驗子對象。

      Struts2支持通過validate方法和XWork效驗框架進行效驗。XWork效驗框架使用為屬性類類型定義的效驗和內容效驗,來支持Chain效驗子屬性。

      /Action執行的控制

      Struts1支持每一個模塊有單獨的Request Processors(生命周期),但是模塊中的所有Action必須共享相同的生命周期。

      struts2支持通過攔截器堆棧(Interceptor Stacks)為每一個Action創建不能的生命周期。堆棧能夠根據需要和不同的Action一起使用。

      10. 使用Java定義一個單鏈表結構,編程實現對定義的單鏈表結構的反轉。

      /

       @author luochengcheng

       定義一個單鏈表

      /

      class Node {

      //變量

      privatEint record;

      //指向下一個對象

      private Node nextNode;

      public Node(int record) {

      super();

      this.record = record;

      }

      publicintgetRecord() {

      return record;

      }

      public void setRecord(int record) {

      this.record = record;

      }

      public Node getNextNode() {

      returnnextNode;

      }

      public void setNextNode(Node nextNode) {

      this.nextNode = nextNode;

      }

      }

      /

       @author luochengcheng

       兩種方式實現單鏈表的反轉(遞歸、普通)

       新手強烈建議旁邊拿著紙和筆跟著代碼畫圖(便于理解)

      /

      public class ReverseSingleList {

      /

       遞歸,在反轉當前節點之前先反轉后續節點

      /

      public static Node reverse(Node head) {

      if (null == head || null == head.getNextNode()) {

      return head;

      }

      Node reversedHead = reverse(head.getNextNode());

      head.getNextNode().setNextNode(head);

      head.setNextNode(null);

      returnreversedHead;

      }

      /

       遍歷,將當前節點的下一個節點緩存后更改當前節點指針

      

      /

      public static Node reverse2(Node head) {

      if (null == head) {

      return head;

      }

      Node pre = head;

      Node cur = head.getNextNode();

      Node next;

      while (null != cur) {

      next = cur.getNextNode();

      cur.setNextNode(pre);

      pre = cur;

      cur = next;

      }

      //將原鏈表的頭節點的下一個節點置為null,再將反轉后的頭節點賦給head

      head.setNextNode(null);

      head = pre;

      return head;

      }

      public static void main(String[] args) {

      Node head = new Node(0);

      Node tmp = null;

      Node cur = null;

      // 構造一個長度為10的鏈表,保存頭節點對象head

      for (int i = 1; i < 10; i++) {

      tmp = new Node(i);

      if (1 == i) {

      head.setNextNode(tmp);

      } else {

      cur.setNextNode(tmp);

      }

      cur = tmp;

      }

      //打印反轉前的鏈表

      Node h = head;

      while (null != h) {

      System.out.print(h.getRecord() + " ");

      h = h.getNextNode();

      }

      //調用反轉方法

      head = reverse2(head);

      System.out.println("\n");

      //打印反轉后的結果

      while (null != head) {

      System.out.print(head.getRecord() + " ");

      head = head.getNextNode();

      }

      }

      }

      運行:

      C:\ex>java ReverseSingleList

      0 1 2 3 4 5 6 7 8 9

      

      9 8 7 6 5 4 3 2 1 0

      11. 如何比較2個超大數組是否相等,要求時間復雜度O(n)(寫出思路)

      12. 現有8個硬幣和一個天,其中有一個硬幣比其他的輕,最少需要幾次能找到該硬幣,如何實現,寫出思路。

    最新圖文

    2020年河北新聞網兩學一做

    時間:2023-09-18 07:0:24

    2020年河北新聞網兩學一做

    時間:2023-09-15 11:0:59

    兩學一做學習教育知

    時間:2023-09-21 06:0:30

    2020年開展兩學一做學習教

    時間:2023-09-19 21:0:30
    亚洲麻豆精品国偷自产在线91| 色欲色欲天天天www亚洲伊| 日本系列1页亚洲系列| 亚洲熟妇少妇任你躁在线观看| 亚洲毛片无码专区亚洲乱| 日木av无码专区亚洲av毛片| 亚洲αv久久久噜噜噜噜噜| 国产AV无码专区亚洲Av| 亚洲AV无码乱码国产麻豆穿越| 亚洲午夜无码久久久久| 国产亚洲美女精品久久久| 久久影视国产亚洲| 亚洲无线码在线一区观看| 亚洲精品无码mv在线观看网站 | 国产精品亚洲综合五月天| 亚洲精品伊人久久久久| 亚洲AV日韩综合一区尤物| 中文日韩亚洲欧美制服| 亚洲av无码成人精品国产| 妇女自拍偷自拍亚洲精品| 精品国产亚洲一区二区三区在线观看 | 亚洲综合男人的天堂色婷婷| 亚洲精品影院久久久久久| 亚洲精品中文字幕乱码| 亚洲图片激情小说| 亚洲综合精品成人| 理论亚洲区美一区二区三区| 亚洲第一福利网站在线观看| 国产av无码专区亚洲国产精品| 亚洲中文字幕无码中文字在线| 亚洲精品V欧洲精品V日韩精品 | 亚洲AV无码成人网站在线观看| 在线观看亚洲专区| 中文字幕亚洲一区二区va在线| 亚洲色WWW成人永久网址| 久久久久亚洲av无码专区蜜芽 | 亚洲午夜精品国产电影在线观看| xxx毛茸茸的亚洲| 蜜桃传媒一区二区亚洲AV| 亚洲国产一区视频| 久久精品国产99精品国产亚洲性色|