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

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

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

    J2EE社區(qū)

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

    Struts2操作request、session和application對(duì)象

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

    Struts 2提供了多種方式來(lái)訪問(wèn)上述的三種對(duì)象,歸結(jié)起來(lái),可以劃分為兩大類:與Servlet API解耦的訪問(wèn)方式和與Servlet API耦合的訪問(wèn)方式。

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

    為了避免與Servlet API耦合在一起,方便Action類做單元測(cè)試,Struts 2對(duì)HttpServletRequest、HttpSession和ServletContext進(jìn)行了封裝,構(gòu)造了三個(gè)Map對(duì)象來(lái)替代這三種對(duì)象, 在Action中,直接使用HttpServletRequest、HttpSession和ServletContext對(duì)應(yīng)的Map對(duì)象來(lái)保存和讀取 數(shù)據(jù)。

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

    Ø public Object get(Object key)

    ActionContext類沒(méi)有提供類似getRequest()這樣的方法來(lái)獲取封裝了HttpServletRequest的Map對(duì)象。要得到請(qǐng)求Map對(duì)象,你需要為get()方法傳遞參數(shù)“request”。

    Ø public Map getSession()

    獲取封裝了HttpSession的Map對(duì)象。

    Ø public Map getApplication()

    獲取封裝了ServletContext的Map對(duì)象。

    我們看 通過(guò)ActionContext來(lái)獲取request、session和application對(duì)象的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();
                 
                //在請(qǐng)求中放置歡迎信息。
                 
                request.put("greeting", "歡迎您來(lái)到程序員之家");
                 
                //在session中保存user對(duì)象
                 
                session.put("user", user);
                 
                //統(tǒng)計(jì)用戶訪問(wèn)量,在application中保存用戶訪問(wèn)量數(shù)據(jù)
                 
                Integer count = (Integer)application.get("counter");
                 
                if(null == count) count=1;
                 
                else count++;
                 
                application.put("counter", count);
                 
                return SUCCESS;
                 
                }else {
                 
                return ERROR;
                 
                } }}

    在成功頁(yè)面中,可以使用JSP內(nèi)置的表達(dá)式語(yǔ)言來(lái)訪問(wèn)request、session和application范圍的數(shù)據(jù),代碼如例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>歡迎頁(yè)面</title></head>
                 
                <body>
                 
                <h3>${sessionScope.user.username},${requestScope.greeting}。<br>
                 
                本站的訪問(wèn)量是:${applicationScope.counter}</h3>
                 
                </body>
                 
                </html>

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

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

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

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



    本文轉(zhuǎn)載于:http://www.emool.cn/archives/y2009/318.html




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


    主站蜘蛛池模板: 亚洲小说图区综合在线| 手机永久免费的AV在线电影网| 18禁无遮挡无码网站免费| 国产亚洲人成在线影院| 国产∨亚洲V天堂无码久久久| 免费99精品国产自在现线| 无套内谢孕妇毛片免费看看| 亚洲爆乳无码专区| 成年性生交大片免费看| 国产性生大片免费观看性| 亚洲人成色777777精品| 亚洲gv猛男gv无码男同短文| 99re热免费精品视频观看| 一区二区三区免费电影| 亚洲午夜精品国产电影在线观看| 亚洲精品国产精品乱码不卡| 99re6在线精品视频免费播放| 男男gvh肉在线观看免费| 亚洲网红精品大秀在线观看| 免费国产成人午夜私人影视| 99久久精品免费精品国产| 色老头综合免费视频| 国产精品亚洲自在线播放页码| 亚洲小说区图片区另类春色| 黄色成人网站免费无码av| 精品视频在线免费观看| 国产亚洲精品美女久久久久久下载| 337p日本欧洲亚洲大胆艺术| 亚洲国产高清精品线久久| 青青久在线视频免费观看| 色www永久免费| 精品在线视频免费| 亚洲男人的天堂久久精品| 亚洲AV无码乱码国产麻豆| 亚洲а∨天堂久久精品| 午夜免费福利在线| 无码专区永久免费AV网站| 久别的草原电视剧免费观看| ww在线观视频免费观看w| 直接进入免费看黄的网站| 亚洲国产精品嫩草影院|