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

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

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

    J2EE社區(qū)

    茍有恒,何必三更起五更眠;
    最無益,只怕一日曝十日寒.
    posts - 241, comments - 318, trackbacks - 0, articles - 16

    Struts2操作request、session和application對象

    Posted on 2009-10-23 01:46 xcp 閱讀(5054) 評論(0)  編輯  收藏 所屬分類: struts2

    Struts 2提供了多種方式來訪問上述的三種對象,歸結起來,可以劃分為兩大類:與Servlet API解耦的訪問方式和與Servlet API耦合的訪問方式。

    與Servlet API解耦的訪問方式(IoC方式)

    為了避免與Servlet API耦合在一起,方便Action類做單元測試,Struts 2對HttpServletRequest、HttpSession和ServletContext進行了封裝,構造了三個Map對象來替代這三種對象, 在Action中,直接使用HttpServletRequest、HttpSession和ServletContext對應的Map對象來保存和讀取 數據。

    要獲取這三個Map對象,可以使用com.opensymphony.xwork2.ActionContext類,ActionContext 是action執(zhí)行的上下文,在ActionContext中保存了action執(zhí)行所需的一組對象,包括parameters、request、 session、application和locale等。ActionContext類定義了如下方法,用于獲取 HttpServletRequest、HttpSession和ServletContext對應的Map對象。

    Ø public Object get(Object key)

    ActionContext類沒有提供類似getRequest()這樣的方法來獲取封裝了HttpServletRequest的Map對象。要得到請求Map對象,你需要為get()方法傳遞參數“request”。

    Ø public Map getSession()

    獲取封裝了HttpSession的Map對象。

    Ø public Map getApplication()

    獲取封裝了ServletContext的Map對象。

    我們看 通過ActionContext來獲取request、session和application對象的LoginAction1

    1
                2
                3
                4
                5
                6
                7
                8
                9
                10
                11
                12
                13
                14
                15
                16
                17
                18
                19
                20
                21
                22
                23
                24
                25
                26
                27
                28
                29
                30
                31
                32
                33
                34
                35
                36
                37
                38
                39
                40
                41
                42
                43
                44
                45
                46
                47
                48
                49
                50
                51
                52
                53
                54
                55
                56
                57
                58
                59
                60
                61
                62
                63
                64
                65
                66
                67
                68
                69
                
    package action;
                 
                import java.util.Map;
                 
                import dbPackage.User;
                 
                import com.opensymphony.xwork2.Action;
                 
                import com.opensymphony.xwork2.ActionContext;
                 
                public class LoginAction1 implements Action
                 
                {   private User user;
                 
                public User getUser()
                 
                { return user;
                 
                }
                 
                public void setUser(User user)
                 
                { this.user = user;
                 
                }
                 
                @SuppressWarnings("unchecked")
                 
                @Override
                 
                public String execute() throws Exception
                 
                {
                 
                if("zhangsan".equals(user.getUsername())&& "1234".equals(user.getPassword()))
                 
                { ActionContext context = ActionContext.getContext();
                 
                Map request = (Map)context.get("request");
                 
                Map session = context.getSession();
                 
                Map application = context.getApplication();
                 
                //在請求中放置歡迎信息。
                 
                request.put("greeting", "歡迎您來到程序員之家");
                 
                //在session中保存user對象
                 
                session.put("user", user);
                 
                //統計用戶訪問量,在application中保存用戶訪問量數據
                 
                Integer count = (Integer)application.get("counter");
                 
                if(null == count) count=1;
                 
                else count++;
                 
                application.put("counter", count);
                 
                return SUCCESS;
                 
                }else {
                 
                return ERROR;
                 
                } }}

    在成功頁面中,可以使用JSP內置的表達式語言來訪問request、session和application范圍的數據,代碼如例3-12所示。

    例3-12 success.jsp

    1
                2
                3
                4
                5
                6
                7
                8
                9
                10
                11
                12
                13
                14
                15
                
    <%@ page contentType="text/html;charset=GBK" %>
                 
                <html>
                 
                <head><title>歡迎頁面</title></head>
                 
                <body>
                 
                <h3>${sessionScope.user.username},${requestScope.greeting}<br>
                 
                本站的訪問量是:${applicationScope.counter}</h3>
                 
                </body>
                 
                </html>

    與Servlet API耦合的訪問方式(非IoC方式)

    要獲得上述對象,關鍵Struts 2.0中com.opensymphony.xwork2.ActionContext類。我們可以通過它的靜態(tài)方法getContext()獲取當前 Action的上下文對象。 另外,org.apache.struts2.ServletActionContext作為輔助類(Helper Class),可以幫助您快捷地獲得這幾個對象。

    HttpServletRequest request = ServletActionContext.getRequest();
    HttpServletResponse response = ServletActionContext.getResponse();
    HttpSession session = request.getSession();

    如果你只是想訪問session的屬性(Attribute),你也可以通過ActionContext.getContext().getSession()獲取或添加session范圍(Scoped)的對象。



    本文轉載于:http://www.emool.cn/archives/y2009/318.html




    名稱: ?4C.ESL | .↗Evon
    口號: 遇到新問題?先要尋找一個方案乄而不是創(chuàng)造一個方案こ
    mail: 聯系我


    主站蜘蛛池模板: 国产aⅴ无码专区亚洲av麻豆| 国产又黄又爽又猛的免费视频播放| 亚洲中文字幕无码中文字在线| 国产亚洲精品2021自在线| 天天摸夜夜摸成人免费视频| 亚洲制服丝袜中文字幕| 最近最新中文字幕完整版免费高清| 亚洲国产精品一区二区三区在线观看| 精品国产无限资源免费观看| 亚洲一级免费毛片| 性感美女视频在线观看免费精品| 亚洲欧美黑人猛交群| 国产精品国产自线拍免费软件| 亚洲成a人无码亚洲成www牛牛| 妞干网免费视频在线观看| 美女黄频a美女大全免费皮| 亚洲精品无码99在线观看| 中文字幕无线码免费人妻| 亚洲第一成年男人的天堂| 亚洲一区在线免费观看| 亚洲国产综合AV在线观看| 亚洲七七久久精品中文国产| 国内少妇偷人精品视频免费| 亚洲蜜芽在线精品一区| 韩国二级毛片免费播放| 深夜A级毛片视频免费| 亚洲第一极品精品无码久久| 青青青免费国产在线视频小草| 亚洲精品久久久久无码AV片软件| 国产日韩成人亚洲丁香婷婷| 99视频在线免费| 亚洲AV成人精品一区二区三区| 国产亚洲色婷婷久久99精品91| 精品无码无人网站免费视频| 亚洲中文字幕无码爆乳app| 国产乱子伦片免费观看中字| 免费看无码特级毛片| 亚洲人成网站色在线观看| av在线亚洲欧洲日产一区二区| 精品一区二区三区免费毛片爱 | 久久久久亚洲AV成人无码网站|