<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開發技術網
    主站蜘蛛池模板: 两个人日本免费完整版在线观看1| 四虎影视久久久免费观看| 免费无码黄网站在线看| 亚洲国产专区一区| 一级特黄色毛片免费看| 国产乱弄免费视频| 精品特级一级毛片免费观看| 国产99视频精品免费视频7| 综合偷自拍亚洲乱中文字幕| 免费国产成人午夜私人影视| 美女扒开尿口给男人爽免费视频 | 久久精品国产亚洲精品2020| 久久精品免费视频观看| 亚洲男人的天堂在线播放| 永久黄色免费网站| 亚洲综合精品成人| 国产午夜免费福利红片| 九九99热免费最新版| 无码欧精品亚洲日韩一区| 精品女同一区二区三区免费站| 亚洲另类小说图片| 国产美女a做受大片免费| 一区在线免费观看| 亚洲小视频在线观看| 拨牐拨牐x8免费| 四虎影视永久在线精品免费| 亚洲AV第一页国产精品| 男人的好看免费观看在线视频| 亚洲av无码专区在线观看亚| 精品亚洲一区二区三区在线观看| 三根一起会坏掉的好痛免费三级全黄的视频在线观看 | 免费精品99久久国产综合精品| 亚洲精品成人av在线| 免费看国产成年无码AV片| 亚洲AV综合色区无码一二三区| 亚洲国产精品无码久久九九| 日韩插啊免费视频在线观看| 亚洲人成网站在线在线观看| 亚洲中文字幕无码不卡电影| 免费一本色道久久一区| a级毛片视频免费观看|