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

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

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

    本站不再更新,歡迎光臨 java開發技術網
    隨筆-230  評論-230  文章-8  trackbacks-0
    Action中獲取HttpServletResponse ,HttpServletRequest,HttpSession等Servlet相關變量有兩種方式;
    1、非Ioc方式
           

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

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


    2、Ioc 方式
           只要Action類實現SessionAware, ServletRequestAware, ServletResponseAware這幾個接口,相應的變量會自動注入

    調用action的方法
    我們知道,當客戶端請求一個action時,會生成一個Action 對應的變量,并執行execute方法,但這是需要跟據配置來確定的
        < action name ="HelloWorld" class ="tutorial.HelloWorld" > 
            
    < result > /HelloWorld.jsp </ result > 
        
    </ action > 
    要想改變默認執行的方法,需要在action節點加上要調用的方法名,如:
    <action name="AliasHelloWorld" class="tutorial.HelloWorld" method="aliasAction">
       
    <result>/HelloWorld.jsp</result>
    </action>

    如果要實現類似于Structs1.x那樣的DispatchAction方式的調用,配置例子如下:
            <action name="login!*" method="{1}" class="one.LoginAction">
                
    <result name="success" type="dispatcher">
                    
    <param name="location">/main.jsp</param>
                
    </result>
                
    <result name="input">/login.jsp</result>
                
    <result name="loginfail" type="dispatcher">
                    
    <param name="location">/login.jsp</param>
                
    </result>
            
    </action>
    如上配置,如果只調用login.action,會執行默認方法execute()。

    Structs 2文件上傳例子
    package one;

    import java.io.File;
    import java.text.*;
    import java.util.*;

    import javax.servlet.ServletContext;

    import org.apache.commons.io.FileUtils;
    import org.apache.struts2.util.ServletContextAware;

    import com.opensymphony.xwork2.ActionSupport;

    public class FileUploadAction extends ActionSupport implements ServletContextAware{


        
    private File doc;    

        
    private String docContentType;
        
    private String docFileName;
        
        
    private ServletContext context;  
        
        
        
    public String execute()throws Exception{
            String target
    =context.getRealPath("/upload");
            String file
    =generateFileName(docFileName);
            File dfile
    =new File(target,file);
            FileUtils.copyFile(doc,dfile);
            
    return this.SUCCESS;
        }
        
        
    private String generateFileName(String fileName) {
            DateFormat format 
    = new SimpleDateFormat("yyMMddHHmmss");    
            String formatDate 
    = format.format(new Date());    
            
    int random = new Random().nextInt(10000);    
            
    int position = fileName.lastIndexOf(".");    
            String extension 
    = fileName.substring(position);    
            
    return formatDate + random + extension;    
        }
        
        
    public void setServletContext(ServletContext context) {
            
    // TODO Auto-generated method stub
            this.context=context;
        }


        
    public ServletContext getContext() {
            
    return context;
        }


        
    public void setContext(ServletContext context) {
            
    this.context = context;
        }


        
    public File getDoc() {
            
    return doc;
        }


        
    public void setDoc(File doc) {
            
    this.doc = doc;
        }




        
    public String getDocContentType() {
            
    return docContentType;
        }

        
    public void setDocContentType(String docContentType) {
            
    this.docContentType = docContentType;
        }

        
    public String getDocFileName() {
            
    return docFileName;
        }

        
    public void setDocFileName(String docFileName) {
            
    this.docFileName = docFileName;
        }
        
        
        
        
    }



    1:在action中定義的變量,在jsp頁面中顯示用:<s:property value="變量名" />

    2:在頁面中實現自動增加的序號用iterator的statuts的index屬性 eg:

    <s:iterator value="#request.inOutAccountList" id="data" status="listStat">

    <s:property value="#listStat.index+1"/>

    </s:iterator>

    3:在action類中取得request和session對象的方法

    Map session = ActionContext.getContext().getSession();
    HttpServletRequest request = ServletActionContext.getRequest ();

    設置它們的值的方法

    session.put("operation", "add");
    request.setAttribute("name", name);

    頁面中取得它們的值:

    <s:property value="#session.operation"/>
    <s:property value="#request.name"/>

    4:頁面中奇偶行樣式不一樣的控制方法:

    <tr class="<s:if test='#listStat.odd == true '>tableStyle-tr1</s:if><s:else>tableStyle-tr2</s:else>" >

    5:單選框和復選框的使用方法

    1):可以設置默認選中值,注意list的值的設置,通過這種方式使key和value不一樣,這種方法比較常用(checkboxlist or radio)

    <s:radio name="uncarInsPolicy.policyStateCode"
    list="#{'5':'通過' , '2':'不通過'}"
    listKey="key"
    listValue="value"
    value='5'
    />

    2):這里的key和value的值是一樣的(checkboxlist or radio)

    <s:checkboxlist
    list="{'Red', 'Blue', 'Green'}"
    name="favoriteColor"/>

    6:struts2 中的標簽會生成類似由<tr><td></td></tr>構成的字串(具體什么標簽生成什么,可以查看生成后的頁面的源代碼)如果不限制這些多余代碼的生成,頁面將變得無法控制,所以一般我們是不希望它生成多余的代碼的,具體的設置方法如果,在struts.xml中統一配置
    <constant name="struts.ui.theme" value="simple"/>加上該句即可
    也可以通過在頁面中將tag的theme屬性設為"simple"取消其默認的表格布局
    不過最好是:自定義一個theme,并將其設為默認應用到整個站點,如此一來就可以得到統一的站點風格

    7:jsp頁面中格式化日期的方法

    <s:date name="unCarInsModificationInfo.createTime" format="yyyy-MM-dd" nice="false"/>這樣就可以將日期格式化為yyyy-MM-dd的形式

    8:默認情況下,當請求action發生時,Struts運行時(Runtime)根據struts.xml里的Action映射集(Mapping),實例化action對應的類,并調用其execute方法。當然,我們可以通過以下兩種方法改變這種默認調用

    1)在classes/sturts.xml中新建Action,并指明其調用的方法
    比如想調用action類中的

    public String aliasAction() {
    message ="自定義Action調用方法";
    return SUCCESS;
    }
    則在classes/sturts.xml中加入下面代碼:
    <action name="AliasHelloWorld" class="tutorial.HelloWorld" method="aliasAction">
    <result>/HelloWorld.jsp</result>
    </action>
    既可用action名調用該方法了

    2)(比較常用)

    訪問Action時,在Action名后加上“!xxx”(xxx為方法名)。

    9:Struts 2.0有兩個配置文件,struts.xml和struts.properties都是放在WEB-INF/classes/下。
    struts.xml用于應用程序相關的配置
    struts.properties用于Struts 2.0的運行時(Runtime)的配置

    10:在action類中取得web下某一文件夾物理路徑(絕對路徑)的方法
    filePath = ServletActionContext.getServletContext().getRealPath("/upLoadFiles")

    11:要想返回的頁面不是一個直接JSP頁面而是要先通過返回action中的方法讀取相應的數據再返回到jsp頁面,有兩種方法

    1)在struts.xml中這么設置

    <result name="list" type="redirect-action">sysmanage/UserBaseInfoAction!findUserBaseInfo.action</result>

    2)在action中返回時直接調用這個方法即可

    return findList();

    12:設置checkboxlist中默認值的方法

    <s:checkboxlist name="skills1"
    ="Skills 1"
    list="{ 'Java', '.Net', 'RoR', 'PHP' }"
    value="{ 'Java', '.Net' }" />
    <s:checkboxlist name="skills2"
    label="Skills 2"
    list="#{ 1:'Java', 2: '.Net', 3: 'RoR', 4: 'PHP' }"
    listKey="key"
    listValue="value"
    value="{ 1, 2, 3 }"/>

    13:二級級連下拉框

    <s:set name="foobar"
    value="#{'Java': {'Spring', 'Hibernate', 'Struts 2'}, '.Net': {'Linq', ' ASP.NET 2.0'}, 'Database': {'Oracle', 'SQL Server', 'DB2', 'MySQL'}}" />
    <s:doubleselect list="#foobar.keySet()"
    doubleName="technology"
    doubleList="#foobar[top]"
    label="Technology" />
    posted on 2007-10-31 15:15 有貓相伴的日子 閱讀(8405) 評論(1)  編輯  收藏 所屬分類: j2ee

    評論:
    本站不再更新,歡迎光臨 java開發技術網
    主站蜘蛛池模板: 国产a不卡片精品免费观看| 久久久久亚洲av无码专区| 成人免费乱码大片A毛片| 亚洲视频免费一区| 韩国日本好看电影免费看| 99re6在线视频精品免费| 亚洲国产成人久久精品app| 免费在线看片网站| 30岁的女人韩剧免费观看| 精品女同一区二区三区免费播放| 亚洲AV日韩精品久久久久| 国产精品美女自在线观看免费 | 午夜精品免费在线观看 | 偷自拍亚洲视频在线观看| 久久久久亚洲av无码尤物| 国产成人免费ā片在线观看| 免费一级不卡毛片| 日韩精品亚洲专区在线影视| 久久精品国产精品亚洲蜜月| 国产成人免费手机在线观看视频 | 亚洲国产高清视频在线观看| 亚洲综合激情另类专区| 日本亚洲免费无线码| 国产在线精品观看免费观看| 亚洲精品蜜夜内射| 亚洲精品福利网泷泽萝拉| 亚洲综合激情另类专区| 日本无卡码免费一区二区三区| 99视频精品全部免费观看| 一级毛片免费在线| 亚洲国产成人精品无码区花野真一| 亚洲成人在线电影| 亚洲伊人久久精品影院| 免费大黄网站在线观看| 毛片免费视频观看| 最近中文字幕高清免费中文字幕mv| 一级毛片视频免费| 国产一区二区三区亚洲综合| 亚洲日韩国产精品乱-久| 亚洲美女视频一区| 久久亚洲中文字幕精品有坂深雪 |