<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
    亚洲男人的天堂在线va拉文| 亚洲AV色无码乱码在线观看| 亚洲精品高清在线| 亚洲精品无码少妇30P| 亚洲中文字幕精品久久| 亚洲伊人久久大香线蕉在观| 亚洲精品**中文毛片| 亚洲欧洲日韩国产| 亚洲卡一卡2卡三卡4麻豆| 亚洲成无码人在线观看| 亚洲国产人成在线观看| 亚洲免费在线视频播放| 亚洲娇小性色xxxx| 一本天堂ⅴ无码亚洲道久久| 亚洲精品无码mⅴ在线观看| 亚洲AV无码国产一区二区三区| 亚洲AV无码专区亚洲AV桃| 精品亚洲成a人在线观看| 亚洲高清无码专区视频| 亚洲午夜精品久久久久久浪潮| 国产精品亚洲精品日韩已方| 亚洲中文字幕无码爆乳AV | 国产亚洲综合成人91精品| 亚洲第一极品精品无码久久| 亚洲国产精品久久久久婷婷老年| 91亚洲导航深夜福利| 亚洲乱码一区av春药高潮| 亚洲熟妇无码AV| 色综合久久精品亚洲国产| 亚洲国产精品专区在线观看| 亚洲自偷自偷图片| 亚洲欧洲第一a在线观看| 亚洲大香伊人蕉在人依线| 成人区精品一区二区不卡亚洲| 亚洲欧美日韩中文高清www777| 在线观看亚洲电影| 久久精品国产精品亚洲人人| 亚洲成Av人片乱码色午夜| 亚洲综合综合在线| 亚洲熟女乱色一区二区三区| 男人的天堂亚洲一区二区三区 |