JAEE學(xué)習(xí)筆記(25)Struts2(2)

目錄

1.Action處理請(qǐng)求參數(shù)(重點(diǎn))

2.struts2類型轉(zhuǎn)換(了解)

3.struts2請(qǐng)求參數(shù)校驗(yàn)(次重點(diǎn))


復(fù)習(xí):
1.框架:是一個(gè)半成品绿贞,可以在其基礎(chǔ)上在次開發(fā)。
2.struts2框架:它是一個(gè)web層使用的mvc框架。
3.struts2核心  1.struts2核心  2.xwork核心
4.struts2入門:
    1.導(dǎo)jar包
        struts2/apps/strut_blank.war文件
    2.需要配置struts2
        1.web.xml
            StrutsPrepareAndExecuteFilter
        2.struts.xml
            位置:src以下(clasess)
            
        3.struts.xml文件中標(biāo)簽
            <package> 用于管理action
                name:包名   唯一
                namespace:與action的name屬性確定訪問action的路徑.  默認(rèn)值""
                extends:繼承的包名  struts-default
            <action> 聲明一個(gè)action
                name:action名稱  在同一個(gè)包下不能重名
                class:action類全名   ActionSupport
                method:action類中的方法名  方法無參數(shù)梧税,返回值為String   execute
            <result> 結(jié)果視圖
                name:與action的method方法的返回值匹配跳轉(zhuǎn)
                type:跳轉(zhuǎn)方式
                    
                在struts-default.xml文件中定義
                    chain  請(qǐng)求轉(zhuǎn)發(fā)  action
                    dispatcher 請(qǐng)求轉(zhuǎn)發(fā) 頁面
                    redirect  重定向 頁面
                    redirectActiono 重定向  action
                    stream 下載.

5.struts2框架加載配置文件順序
    1.default.properties
    2.struts-default.xml  struts-plugin.xml  struts.xml
    3.struts.properties
    4.web.xml
    
6.定義常量
    1.struts.xml
    2.struts.properties
    3.web.xml
    
7.struts2中action創(chuàng)建方式
    1.pojo類
    2.implements Action
    3.extends ActionSupport
    
8.struts2中action方法訪問方式
    1.method=xxx;
    2.通配符
    3.動(dòng)態(tài)方法調(diào)用
    
9.關(guān)于在struts2中獲取Servlet API
    1.ActionContext
        ActionContext context=ActionContext.getContext();
    2.使用注入
    3.ServletActionContext

1.struts2中獲取請(qǐng)求參數(shù)
在struts2中action是什么?(struts2是一個(gè)mvc框架)    
    V:jsp
    M:action
    C:action  StrutsPrepareAndExecuteFilter
    
在struts2中獲取請(qǐng)求參數(shù):
    1.屬性驅(qū)動(dòng)
        1.直接將action做一個(gè)model,就可以得到請(qǐng)求參數(shù).
            問題1:action封裝請(qǐng)求參數(shù)旬牲,會(huì)不會(huì)存在線程安全問題?
                不會(huì):因?yàn)槊恳淮握?qǐng)求逗旁,都是一個(gè)新的action站叼。(servlet在web容器(tomcat)里只會(huì)被實(shí)例化一次例诀,在多請(qǐng)求時(shí)充易,web容器會(huì)為每個(gè)請(qǐng)求從線程池分配一個(gè)線程梗脾,多個(gè)線程共享一個(gè)servlet的實(shí)例,因此servlet是線程不安全的盹靴,比如共享狀態(tài)變量)
            缺點(diǎn):需要單獨(dú)定義javaBean,將action中屬性copy到j(luò)avaBean中炸茧。 
            優(yōu)點(diǎn):簡單瑞妇。              
            這種方式 ,底層是通過反射來實(shí)現(xiàn)的梭冠。
            
        2.在action中聲明一個(gè)model辕狰。
            private User user;提供get/set方法
            
            在頁面上使用ognl來描述
            <input type="text" name="user.username">
            
            優(yōu)點(diǎn):簡單,解決了第一種封裝的問題
            缺點(diǎn):在頁面上使用了ognl表達(dá)式控漠,頁面不通用了蔓倍。
            
            問題:這種方式,數(shù)據(jù)是怎樣封裝的?
                是通過struts2中的interceptor進(jìn)行了數(shù)據(jù)封裝.
                 <interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>
            
            
            
    2.模型驅(qū)動(dòng)(在開發(fā)中應(yīng)用比較多)
        步驟:
            1.讓action類實(shí)現(xiàn)ModelDriven
            2.重寫getModel方法
            3.在action中實(shí)現(xiàn)化一個(gè)model對(duì)象盐捷,讓getModel方法返回這個(gè)對(duì)象偶翅。
            
            public class Login3Action extends ActionSupport implements ModelDriven<User> {

                private User user = new User();

                public User getModel() {
                    return user;
                }
            }
        優(yōu)點(diǎn):解決了屬性驅(qū)動(dòng)存在的問題
        缺點(diǎn):一次只能封裝一個(gè)model對(duì)象.
        
         struts2 有很多圍繞模型驅(qū)動(dòng)的特性 
        * <interceptor name="modelDriven" class="com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor"/> 為模型驅(qū)動(dòng)提供了更多特性

--------------------------------------------------------------------------
擴(kuò)展:
    1.將數(shù)據(jù)封裝到List集合
        頁面:
            username1:<input type="text" name="users[0].username"><br>
            password1:<input type="password" name="users[0].password"><br>
            
            username2:<input type="text" name="users[1].username"><br>
            password2:<input type="password" name="users[1].password"><br>
        
        action類:
            private List<User> users;
            get/set方法
            
    2.將數(shù)據(jù)封裝到Map集合
        頁面:
            username1:<input type="text" name="map['aaa'].username"><br>
            password1:<input type="password" name="map['aaa'].password"><br>
            
            username2:<input type="text" name="map['bbb'].username"><br>
            password2:<input type="password" name="map['bbb'].password"><br>
        
        action類:
            private Map<String, User> map;
            提供get/set

===================================================================================

struts2中提供的類型轉(zhuǎn)換
在web中我們使用beanutils直接將表單數(shù)據(jù)封裝到j(luò)avaBean中。---類型轉(zhuǎn)換

struts2中action得到請(qǐng)求參數(shù)碉渡,也可以直接封裝到j(luò)avaBean.

    struts2 內(nèi)部提供大量類型轉(zhuǎn)換器聚谁,用來完成數(shù)據(jù)類型轉(zhuǎn)換問題 
    boolean 和 Boolean
    char和 Character
    int 和 Integer
    long 和 Long
    float 和 Float
    double 和 Double
    Date 可以接收 yyyy-MM-dd格式字符串
    數(shù)組  可以將多個(gè)同名參數(shù),轉(zhuǎn)換到數(shù)組中
    集合  支持將數(shù)據(jù)保存到 List 或者 Map 集合
    
    例如:日期類型滞诺,我們傳遞  yyyy-MM-dd  yyyy年MM月dd日格式都可以形导,但是如果是yyyy/MM/dd
        就會(huì)出現(xiàn)問題.
        
關(guān)于struts2中的類型轉(zhuǎn)換器:
    struts2中的類型轉(zhuǎn)換器根接口是:com.opensymphony.xwork2.conversion.TypeConverter。
    
-------------------------------------------------------
自定義類型轉(zhuǎn)換器:
    
    步驟:
        1.創(chuàng)建一個(gè)類實(shí)現(xiàn)TypeConverter接口.
        2.重寫接口中方法习霹,實(shí)現(xiàn)類型轉(zhuǎn)換操作.
        3.注冊(cè)類型轉(zhuǎn)換器.
        
    詳解說明:
        1.創(chuàng)建一個(gè)自定義類型轉(zhuǎn)換器
            1.實(shí)現(xiàn)TypeConverter需要重寫
                public Object convertValue(Map<String, Object> context, Object target, Member member, String propertyName, Object value, Class toType);
                如果實(shí)現(xiàn)接口朵耕,這個(gè)方法參數(shù)太多(6個(gè))
                
            2.不推薦實(shí)現(xiàn)接口,可以繼承 DefaultTypeConverter類
                優(yōu)點(diǎn):重寫的方法參數(shù)沒有那么多
                 public Object convertValue(Map<String, Object> context, Object value, Class toType) {
                        return convertValue(value, toType);
                }
    
            3.個(gè)人推薦使用 繼承DefaultTypeConverter類的一個(gè)子類StrutsTypeConverter.
                原因:在這個(gè)類中將從頁面?zhèn)鬟f的數(shù)據(jù)怎樣封裝序愚,以及action中的數(shù)據(jù)怎樣在頁面上顯示做了分離.
                
                  public abstract Object convertFromString(Map context, String[] values, Class toClass);
                  public abstract String convertToString(Map context, Object o);
    


        2.怎樣注冊(cè)一個(gè)自定義類型轉(zhuǎn)換器.
            
            1.局部--針對(duì)于action
                 配置文件所在位置以及名稱:  在Action類所在包 創(chuàng)建 Action類名-conversion.properties , 
                 配置文件書寫:    格式 : 屬性名稱=類型轉(zhuǎn)換器的全類名 
            2.局部--針對(duì)于model
                 配置文件所在位置以及名稱:  在model類所在包 創(chuàng)建 model類名-conversion.properties , 
                 配置文件書寫:    格式 : 屬性名稱=類型轉(zhuǎn)換器的全類名 
            3.全局
                配置文件所在位置以及名稱:在src下創(chuàng)建一個(gè)xwork-conversion.properties
                配置文件書寫:  格式:  要轉(zhuǎn)換的類型全名=類型轉(zhuǎn)換器的全類名 
                
    -----------------------------------------------------------------------------
    注意:
        對(duì)于struts2中類型轉(zhuǎn)換器憔披,如果表單數(shù)據(jù)提交時(shí),將數(shù)據(jù)向model封裝爸吮,出現(xiàn)了問題芬膝,會(huì)報(bào)錯(cuò):
        No result defined for action cn.itcast.action.RegistAction and result input
        
        上面的意思是說,在RegistAction的配置中沒有配置input結(jié)果視圖.
        <action name="regist" class="cn.itcast.action.RegistAction">
            <result name="input">/success.jsp</result>
        </action>
        如果配置了形娇,出現(xiàn)類型轉(zhuǎn)換問題锰霜,就會(huì)跳轉(zhuǎn)到input指定的視圖。
        
        問題:為什么會(huì)向input視圖跳轉(zhuǎn)?
            是因?yàn)閟truts2中的攔截器(interceptor).
            
            在struts2中的
                 <interceptor name="conversionError" class="org.apache.struts2.interceptor.StrutsConversionErrorInterceptor"/>
                 用于記錄類型轉(zhuǎn)換問題
                 
            在struts2中
                 <interceptor name="workflow" class="com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor"/>
                 用于得到問題桐早,向input視圖跳轉(zhuǎn)癣缅。
                 
        關(guān)于錯(cuò)誤信息展示:
                    
            通過分析攔截器作用,得知當(dāng)類型轉(zhuǎn)換出錯(cuò)時(shí)哄酝,自動(dòng)跳轉(zhuǎn)input視圖 友存,在input視圖頁面中 <s:fieldError/> 顯示錯(cuò)誤信息    
            * 在Action所在包中,創(chuàng)建 ActionName.properties陶衅,在局部資源文件中配置提示信息 : invalid.fieldvalue.屬性名= 錯(cuò)誤信息

            
    如果是自定義類型轉(zhuǎn)換器屡立,出現(xiàn)類型轉(zhuǎn)換問題,要跳轉(zhuǎn)到input視圖搀军,在類型轉(zhuǎn)換器中膨俐,必須拋出異常才可以勇皇。

======================================================================================

關(guān)于struts2提供的數(shù)據(jù)校驗(yàn)
在開發(fā)中,請(qǐng)求參數(shù)是需要校驗(yàn)的焚刺。
    客戶端校驗(yàn)---->js
    服務(wù)器校驗(yàn)---->java代碼敛摘。
    
struts2中提供的校驗(yàn)-----服務(wù)器端校驗(yàn)。

分成兩種:
    1.手動(dòng)校驗(yàn)(編碼校驗(yàn))
    2.配置校驗(yàn)(annotation,xml) 我們講的是xml乳愉。
    
1.手動(dòng)校驗(yàn):(了解)
    要求:action類必須繼承自ActionSupport兄淫。需要重寫一個(gè)方法 validate
    
    通過測試發(fā)現(xiàn)在action中重寫的validate方法執(zhí)行了。并且是在請(qǐng)求處理方法(execute)之前執(zhí)行的蔓姚。
    
    
    對(duì)于struts2提供的校驗(yàn)拖叙,它也是通過攔截器實(shí)現(xiàn)的。
    
    問題:在validate方法中怎樣存儲(chǔ)校驗(yàn)錯(cuò)誤信息?
    
        在validate方法中   this.addFieldError(Sting name,String value);
        
    問題:在頁面上怎樣獲取錯(cuò)誤信息?(在input視圖上)
        <s:fielderror> 展示所有錯(cuò)誤信息
        
        <s:fielderror fieldName="">展示特定名稱的錯(cuò)誤信息.
        
    ------------------  
    問題:在同一個(gè)Action中有多個(gè)請(qǐng)求處理方法(login,regist)那么有些方法是需要校驗(yàn)的赂乐,有些是不需要的,怎樣處理?
        解決方案:創(chuàng)建一個(gè)名稱叫   validate+請(qǐng)求處理方法名   例如:請(qǐng)求處理方法叫  regist()  校驗(yàn) 的方法名 validateRegist().
        
-------------------------------------------------------------------------------------------------------------
2.配置校驗(yàn)(xml)
    struts2的校驗(yàn)框架咖气。
    已經(jīng)完成了校驗(yàn)操作(做了很多校驗(yàn)方法)挨措。
    而我們?cè)谑褂脮r(shí),只需要將它們調(diào)用就可以(通過配置文件)
    
    要求:action類必須繼承自ActionSupport崩溪。
    
    問題:配置文件怎樣配置?
        
        位置:xml文件要與action類在同一個(gè)包下
        名稱:action類名-validation.xml
        約束: xwork-core-2.3.7.jar 中 xwork-validator-1.0.3.dtd 下
            <!DOCTYPE validators PUBLIC
            "-//Apache Struts//XWork Validator 1.0.3//EN"
            "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
        書寫:
            1.根元素
                <validators>
            2.子元素
                <field name="屬性名稱"></field>     
        
            3.<field>子元素    
                <field-validator type="校驗(yàn)器"> 這個(gè)是指定校驗(yàn)器
                問題:校驗(yàn)器有哪些?
                    xwork-core-2.3.7.jar 中 /com/opensymphony/xwork2/validator/validators/default.xml下
                    
                    <validator name="required" class="com.opensymphony.xwork2.validator.validators.RequiredFieldValidator"/>
                    <validator name="requiredstring" class="com.opensymphony.xwork2.validator.validators.RequiredStringValidator"/>
                    <validator name="int" class="com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator"/>
                    <validator name="long" class="com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator"/>
                    <validator name="short" class="com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator"/>
                    <validator name="double" class="com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator"/>
                    <validator name="date" class="com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator"/>
                    <validator name="expression" class="com.opensymphony.xwork2.validator.validators.ExpressionValidator"/>
                    <validator name="fieldexpression" class="com.opensymphony.xwork2.validator.validators.FieldExpressionValidator"/>
                    <validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/>
                    <validator name="url" class="com.opensymphony.xwork2.validator.validators.URLValidator"/>
                    <validator name="visitor" class="com.opensymphony.xwork2.validator.validators.VisitorFieldValidator"/>
                    <validator name="conversion" class="com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator"/>
                    <validator name="stringlength" class="com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator"/>
                    <validator name="regex" class="com.opensymphony.xwork2.validator.validators.RegexFieldValidator"/>
                    <validator name="conditionalvisitor" class="com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator"/>
                    
            4.<field-validator>子元素  
                <message>錯(cuò)誤信息</message>
                
            5.<field-validator>子元素
                <param name="">值</param>
                用于指定校驗(yàn)器中的參數(shù).
    ------------------------------------------------------------------------------------------------
    介紹:關(guān)于配置校驗(yàn)中的校驗(yàn)器: 
                    
        * required (必填校驗(yàn)器,要求被校驗(yàn)的屬性值不能為null)
        * requiredstring (必填字符串校驗(yàn)器,要求被校驗(yàn)的屬性值不能為null浅役,并且長度大于0,默認(rèn)情況下會(huì)對(duì)字符串去前后空格)
        * stringlength (字符串長度校驗(yàn)器,要求被校驗(yàn)的屬性值必須在指定的范圍內(nèi)伶唯,否則校驗(yàn)失敗,minLength參數(shù)指定最小長度觉既,maxLength參數(shù)指定最大長度,trim參數(shù)指定校驗(yàn)field之前是否去除字符串前后的空格)
        * regex (正則表達(dá)式校驗(yàn)器乳幸,檢查被校驗(yàn)的屬性值是否匹配一個(gè)正則表達(dá)式瞪讼,expression參數(shù)指定正則表達(dá)式,caseSensitive參數(shù)指定進(jìn)行正則表達(dá)式匹配時(shí)粹断,是否區(qū)分大小寫,默認(rèn)值為true)
        * int(整數(shù)校驗(yàn)器符欠,要求field的整數(shù)值必須在指定范圍內(nèi),min指定最小值瓶埋,max指定最大值)
        * double(雙精度浮點(diǎn)數(shù)校驗(yàn)器,要求field的雙精度浮點(diǎn)數(shù)必須在指定范圍內(nèi),min指定最小值,max指定最大值)
        * fieldexpression (字段OGNL表達(dá)式校驗(yàn)器,要求field滿足一個(gè)ognl表達(dá)式希柿,expression參數(shù)指定ognl表達(dá)式,該邏輯表達(dá)式基于ValueStack進(jìn)行求值,返回true時(shí)校驗(yàn)通過,否則不通過)
        * email(郵件地址校驗(yàn)器养筒,要求如果被校驗(yàn)的屬性值非空曾撤,則必須是合法的郵件地址)
        * url(網(wǎng)址校驗(yàn)器,要求如果被校驗(yàn)的屬性值非空,則必須是合法的url地址)
        * date(日期校驗(yàn)器,要求field的日期值必須在指定范圍內(nèi),min指定最小值,max指定最大值)
        
    ------------------------------------------------------------------------------------------- 
    問題:通過配置校驗(yàn),怎樣處理在同一個(gè)action中存在多個(gè)請(qǐng)求處理方法校驗(yàn)問題?
    
        只需要將校驗(yàn)xml文件名稱修改就可以晕粪。
        action類名-valication.xml 現(xiàn)在要對(duì)action類中某一個(gè)方法校驗(yàn)挤悉。
        
        action類名-action名稱-validation.xml.

=================================================================================

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市兵多,隨后出現(xiàn)的幾起案子尖啡,更是在濱河造成了極大的恐慌橄仆,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件衅斩,死亡現(xiàn)場離奇詭異盆顾,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)畏梆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門您宪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人奠涌,你說我怎么就攤上這事宪巨。” “怎么了溜畅?”我有些...
    開封第一講書人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵捏卓,是天一觀的道長。 經(jīng)常有香客問我慈格,道長怠晴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任浴捆,我火速辦了婚禮蒜田,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘选泻。我一直安慰自己拉盾,他們只是感情好蕊程,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般菩彬。 火紅的嫁衣襯著肌膚如雪从诲。 梳的紋絲不亂的頭發(fā)上康栈,一...
    開封第一講書人閱讀 51,258評(píng)論 1 300
  • 那天辆苔,我揣著相機(jī)與錄音,去河邊找鬼忿族。 笑死锣笨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的道批。 我是一名探鬼主播错英,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼隆豹!你這毒婦竟也來了椭岩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎判哥,沒想到半個(gè)月后献雅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡塌计,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年挺身,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锌仅。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡章钾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出热芹,到底是詐尸還是另有隱情贱傀,我是刑警寧澤,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布伊脓,位于F島的核電站府寒,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏报腔。R本人自食惡果不足惜椰棘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望榄笙。 院中可真熱鬧,春花似錦祷蝌、人聲如沸茅撞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽米丘。三九已至,卻和暖如春糊啡,著一層夾襖步出監(jiān)牢的瞬間拄查,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來泰國打工棚蓄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留堕扶,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓梭依,卻偏偏與公主長得像稍算,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子役拴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 標(biāo)簽 如果要配置的標(biāo)簽糊探,那么必須要先配置標(biāo)簽,代表的包的概念。 包含的屬性 name包的名稱科平,要求是唯一的褥紫,管理a...
    偷偷得路過閱讀 1,343評(píng)論 0 0
  • 概述 什么是Struts2的框架Struts2是Struts1的下一代產(chǎn)品,是在 struts1和WebWork的...
    inke閱讀 2,255評(píng)論 0 50
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法瞪慧,類相關(guān)的語法髓考,內(nèi)部類的語法,繼承相關(guān)的語法汞贸,異常的語法绳军,線程的語...
    子非魚_t_閱讀 31,625評(píng)論 18 399
  • 目錄 1. Struts2提供了三種數(shù)據(jù)封裝的方式 2. 封裝數(shù)據(jù)到Collection和Map 3. Strut...
    深海魚Q閱讀 960評(píng)論 3 10
  • 那天晚上,是我決定要搬走的日子矢腻,你來到這里门驾,說著和我商量,說是可以先暫時(shí)出去住兩天多柑,就兩天奶是,之后就回來。說的多么冠...
    況家家閱讀 145評(píng)論 1 2