1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務時間:8:30-17:00
      你可能遇到了下面的問題
      關閉右側工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      Struts2學習教程之Action類如何訪問WEB資源

      前言

      創(chuàng)新互聯(lián)建站"三網(wǎng)合一"的企業(yè)建站思路。企業(yè)可建設擁有電腦版、微信版、手機版的企業(yè)網(wǎng)站。實現(xiàn)跨屏營銷,產(chǎn)品發(fā)布一步更新,電腦網(wǎng)絡+移動網(wǎng)絡一網(wǎng)打盡,滿足企業(yè)的營銷需求!創(chuàng)新互聯(lián)建站具備承接各種類型的做網(wǎng)站、網(wǎng)站建設項目的能力。經(jīng)過10年的努力的開拓,為不同行業(yè)的企事業(yè)單位提供了優(yōu)質的服務,并獲得了客戶的一致好評。

      之前已經(jīng)給大家介紹了關于Struts2的入門教程,本文接著上次的內容我繼續(xù)分享我所學到的知識,和自己在學習過程中所遇到問題以及解決方案。當然,如果讀者發(fā)現(xiàn)任何問題均可以在下方評論告知我,先謝

      在 Action 中訪問 WEB 資源

      web 資源

      所謂的 WEB 資源是指 HttpServletRequest、HttpServletResponse、ServletContext 等原生的 API,作為 B/S 應用開發(fā)的 Controller 必須可以訪問 WEB 資源,比如向域對象中讀寫屬性等操作。

      如何訪問 WEB 資源

      和 ServletAPI 解耦的方式 : 為了避免與 ServletAPI 耦合在一起,方便 Action 做單元測試,Struts2 對 HttpServletRequest,HttpSession 和 ServletContext 進行了封裝,構造了 3 個 Map對象來替代這 3 個對象,在Action 中可以使用 HttpServletRequest,HttpServletSession,HttpServletContext 對應的 Map 對象來保存和讀取數(shù)據(jù)

      • 使用 ActionContext(方法 1): ActionContext 是 Action 執(zhí)行的上下文對象,在 ActionContext 中保存了 Action 執(zhí)行所需要的所有對象,Parameters,request,session 等。如獲取 HttpSession 對應的 Map 對象使用 public Map getSession() 方法,Context,Params 對應的方法也一樣,但對于 request 需要使用 public Object get(Object key) 方法傳遞 request 參數(shù)實現(xiàn)
      • 實現(xiàn) XxxAware 接口(方法 2):比如實現(xiàn) RequestAware 接口并實現(xiàn)其 setRequest() 方法,這樣就可以在所有的 action 方法中去調用該 requestMap。

      使用 ActionContext 獲取域對象的代碼演示

      從 index.jsp 頁面發(fā)送請求到 showPage.jsp,并將該請求交由 Struts 的 Action 類ObjectAction.java 處理請求

      在 ObjectAction.java 中由 ActionContext 獲取域對象并為其添加屬性值,將請求轉發(fā)到 showPage.jsp

      在 showPage.jsp 頁面我們可以獲取到各個域對象的值

      index.jsp

      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      
      
       Handle
      
      
      -- 傳遞 name 參數(shù),可以在 Action 類中由 Params 域對象獲得其值,以測試 Params 域對象
       Application
      
      

      ObjectAction.java

      package com.request.test;
      import com.opensymphony.xwork2.ActionContext;
      import java.util.Map;
      public class ObjectAction {
      
       public String print() {
      //  獲取 ActionContext
        ActionContext actionContext = ActionContext.getContext();
      //  獲取 action 域對象對應的 Map
        Map applicationMap = actionContext.getApplication();
      //  為 application 賦值
        applicationMap.put("applicationMap", "applicationMapValue");
      //  獲取 Session 對應的 Map
        Map sessionMap = actionContext.getSession();
      //  為 sessionMap 賦值
        sessionMap.put("sessionMap", "sessionMapValue");
      //  獲取 request 對應的 Map,沒有對應的 getRequest() 方法,所以使用 get("request") 方法
        Map requestMap = (Map) actionContext.get("request");
      //  為 requestMap 賦值
        requestMap.put("requestMap", "requestMapValue");
      //  獲取 params 對應的 Map
        Map paramsMap = actionContext.getParameters();
      //  獲取 params 的參數(shù)值
        String[] params = (String[]) paramsMap.get("name");
      //  將參數(shù)值打印到控制臺
        System.out.println(params[0]);
        return "success";
       }
      }

      struts.xml (只展示 package 節(jié)點即可)

      
       
        /showPage.jsp
       
      

      showPage.jsp(只展示 body 標簽內容)

      <%--獲取到 application 域對象的值--%>
      ${applicationScope.applicationMap}
      <%--獲取到 session 域對象的值--%> ${sessionScope.sessionMap}
      <%--獲取 request 域對象的值--%> ${requestScope.requestMap}

      細節(jié)以及需要注意(可將圖片拖至瀏覽器新的標簽頁查看大圖)

      Struts2學習教程之Action類如何訪問WEB資源 

      使用 XxxAware 接口訪問 WEB 資源

      和使用 ActionContext 一樣,在 index.jsp 頁面發(fā)送請求到 ObjectAction.java 由 print2() 方法處理

      在 ObjectAction.java 中的 print2() 方法中給域對象賦值,并獲取傳入的 parameter 的值

      最后在 showPage.jsp 中獲得域對象的值,為了和上一個區(qū)分我們給每個輸出的值加上符號以區(qū)分。

      index.jsp(展示 body 標簽部分)

      ObjectAction.java

      package com.request.test;
      
      import com.opensymphony.xwork2.ActionContext;
      import org.apache.struts2.interceptor.ApplicationAware;
      import org.apache.struts2.interceptor.ParameterAware;
      import org.apache.struts2.interceptor.RequestAware;
      import org.apache.struts2.interceptor.SessionAware;
      
      import java.util.Map;
      
      public class ObjectAction implements RequestAware, SessionAware, ApplicationAware, ParameterAware{
      
       private Map requestMap;
       private Map sessionMap;
       private Map applicationMap;
       private Map parameterMap;
      
      // showPage.action 執(zhí)行所需的方法
       public String print2() {
        applicationMap.put("applicationMap", "applicationMapVal===");
        requestMap.put("requestMap", "requestMapVal===");
        sessionMap.put("sessionMap", "sessionMapVal===");
        String[] name = parameterMap.get("name");
        System.out.println(name[0] + "====");
        return "success";
       }
      
       @Override
       public void setApplication(Map map) {
        this.applicationMap = map;
       }
      
       @Override
       public void setParameters(Map map) {
        this.parameterMap = map;
       }
      
       @Override
       public void setRequest(Map map) {
        this.requestMap = map;
       }
      
       @Override
       public void setSession(Map map) {
        this.sessionMap = map;
       }
      }

      struts.xml(展示 package 節(jié)點部分)

      
       
        /showPage.jsp
       
      

      showPage.jsp (同上,一點都沒變)

      選用建議

      通過對上述兩種獲取 WEB 資源的方法,我們可以知道第一種方法假若有好多的 action 方法需要調用域對象那么每個方法都必須實現(xiàn),而第二種方法只需實現(xiàn)一次,所以在實際開發(fā)中視情況而選擇對應的方法去實現(xiàn)。

      和 ServletAPI 耦合的方式 :可以訪問到更多的 ServletAPI ,且可以調用原生的方法

      • 使用 ServletActionContext
      • 實現(xiàn) ServletXxxAware 接口

      此中實現(xiàn)方式類似于上述實現(xiàn)方式,我就不在啰嗦。

      總結

      以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對創(chuàng)新互聯(lián)的支持。


      網(wǎng)站題目:Struts2學習教程之Action類如何訪問WEB資源
      鏈接URL:http://www.ef60e0e.cn/article/pohdpe.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        崇文区| 天峨县| 元江| 罗江县| 乌鲁木齐市| 商城县| 徐州市| 元阳县| 从化市| 巴林左旗| 南丹县| 贵阳市| 蒲江县| 军事| 台州市| 南木林县| 海丰县| 枞阳县| 读书| 益阳市| 长葛市| 武强县| 罗甸县| 绿春县| 长汀县| 崇州市| 府谷县| 云安县| 临沂市| 马鞍山市| 莱州市| 合江县| 正阳县| 镇康县| 新民市| 平陆县| 延安市| 饶平县| 大港区| 龙泉市| 钟山县|