<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開發技術網
    主站蜘蛛池模板: 亚洲精品国产精品乱码不卡| 国产亚洲精品bv在线观看| 久久国产精品成人片免费| 亚洲va成无码人在线观看| 免费一级毛片不卡在线播放| 99久久婷婷免费国产综合精品| 亚洲视频一区网站| 成人亚洲综合天堂| 1000部啪啪毛片免费看| 色一情一乱一伦一视频免费看| 中文字幕亚洲色图| 免费在线不卡视频| 99视频全部免费精品全部四虎| 免费一级毛suv好看的国产网站| 亚洲精品美女久久久久9999| 免费大黄网站在线观| 国产精品成人观看视频免费 | 337p欧洲亚洲大胆艺术| 国产成人精品免费视频大全五级| 久久精品成人免费观看| 国产亚洲精品2021自在线| 亚洲美女视频一区| 亚洲中文久久精品无码ww16| 青草草在线视频永久免费| 99久久免费中文字幕精品| 一边摸一边桶一边脱免费视频 | 中文在线日本免费永久18近| 亚洲日韩乱码中文字幕| 亚洲短视频男人的影院| 亚洲国产成人久久综合一区77| 成人毛片18女人毛片免费96 | 免费无码又爽又刺激高潮视频| 理论秋霞在线看免费| 中日韩亚洲人成无码网站| 久久久无码精品亚洲日韩蜜臀浪潮 | 亚洲嫩模在线观看| 精品亚洲综合在线第一区| 亚洲人妻av伦理| 四虎免费永久在线播放| 免费看www视频| 免费无码AV片在线观看软件|