??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲成av人片乱码色午夜,亚洲精品欧美,国产精品久久久久久久龚玥菲http://www.aygfsteel.com/yuwenlin/category/38257.htmlzh-cnMon, 16 Mar 2009 16:52:04 GMTMon, 16 Mar 2009 16:52:04 GMT60四种Action详解http://www.aygfsteel.com/yuwenlin/archive/2009/03/16/259956.html独孤?/dc:creator>独孤?/author>Mon, 16 Mar 2009 02:43:00 GMThttp://www.aygfsteel.com/yuwenlin/archive/2009/03/16/259956.htmlhttp://www.aygfsteel.com/yuwenlin/comments/259956.htmlhttp://www.aygfsteel.com/yuwenlin/archive/2009/03/16/259956.html#Feedback2http://www.aygfsteel.com/yuwenlin/comments/commentRss/259956.htmlhttp://www.aygfsteel.com/yuwenlin/services/trackbacks/259956.html
Struts中有四种不同Action,分别如下Q?
1.Action
2.DispatchAction
3.LookupDispatchAction
4.MappingDispatchAction
关于Action在Struts中的工作程Q这里我׃多说了,只针对各U不同的Action详解
    W一UActionQ是最普通、也是我们最先接触的一U,但它仅支持一U业务方法,Action中只能允许有一个execute()Q所有比较单一Q有局限性,qx的项目中也用的少Q或者说Q它针对的是一个表单,一个SubmitQ?
关于用法QAction中就一个execute()Q而strut-config.xml也只需配置一h普通的<action/>节点Q就够了
<!-- Action -->
    
<action
      attribute
="loginForm"
      name
="loginForm"
      path
="/login"
      scope
="request"
      type
="org.svse.struts.action.LoginAction">
      
<forward name="ok" path="/ok.jsp"></forward>
      
<forward name="error" path="/error.jsp"></forward>      
      
</action>
    W二UDispatchActionQ这是我们在qx的学?fn)和目中用的最多的一U,因ؓ它支持多个业务方法的扩展Q用v来也方便Q或者说Q它针对的是一个表单,多个ButtonQ?
关于用法QAction中需要几个业务方法,复制几个execute()Q然后改名即可,比如我们做加、减、乘、除Q有四个Ҏ(gu)Q即Qadd(),sub(),mul(),div();而struts-config.xml中也只需配一?lt;action/>节点Q当Ӟ在涉及到有的业务是否需要表单验证时Q可以单独再d节点?
<!-- DispatchAction -->
    
<action
      attribute
="calForm"
      name
="calForm"
      parameter
="method"
      path
="/cal"
      scope
="request"
      type
="org.svse.struts.action.CalAction">
      
<forward name="result" path="/cal_result.jsp"></forward>
      
</action>
parameter参数对应的就是我们的业务Ҏ(gu)?在三UDispatchAction中都要用到它,因ؓ有了?可实现多业务的调用;
哪我们在视图?是如何调用的?很简?/cal.do?method=Ҏ(gu)?add、sub)
<script type="text/javascript">
        function dosubmit(url)
{
            var myform 
= document.myform;
            myform.action 
= url;
            myform.submit();
        }

    
</script>
  
</head>
  
  
<body>
  
<!-- 一个表单多个按?nbsp;-->
  
<form method="post" name="myform">
       W一个数:
<input type="text" name="num1"><br>
       W二个数:
<input type="text" name="num2"><br>
       
<input type="button" value="?/span>" onclick="dosubmit('cal.do?method=add')">
       
<input type="button" value="?/span>" onclick="dosubmit('cal.do?method=sub')">
    
<input type="button" value="?/span>" onclick="dosubmit('cal.do?method=mul')">
       
<input type="button" value="?/span>" onclick="dosubmit('cal.do?method=div')"> 
  
</form>
  
</body>
    W三ULookupDispatchActionQ此UAction恐怕是我们qx用的最的一U了Q尽它也支持多业务Q或者说Q它针对的是一个表单,多个SubmitQ?/span>
但用h非常ȝQ需要struts标签,资源文g,Action中要Map集合;q里大概说一?
Actoin中业务方法跟上面一?只不q多一个包含Map的方?
//通过资源文g的key(button.add),来找C务方法add(),sub()
    protected Map getKeyMethodMap() {
        Map map 
= new HashMap();
        map.put(
"button.add","add");
        map.put(
"button.sub","sub");
        
return map;
    }
资源文gQ?
# Resources for parameter 'org.svse.struts.ApplicationResources'
# Project ch03
button.add
=add
button.sub
=sub
struts-config.xml也跟上面一?Ҏ(gu)method来找;
哪视囄件如何来调用?
<!-- 一个表单多个提?nbsp;-->
    
<form action="cal2.do" method="post">
          num1:
<input type="text" name="num1"/><br>
          num2:
<input type="text" name="num2"/><br>
          
<html:submit property="method">
              
<bean:message key="button.add"/>
          
</html:submit>
          
<html:submit property="method">
              
<bean:message key="button.sub"/>
          
</html:submit>
    
<form>
怎么样够ȝ的吧。。?
    W四UMappingDispatchActionQ我自认为它比DispatchAction差不多好用,只是它够灉|(q里针对<action/>节点Q想咋配咋配)Q或者说Q它针对的是多个表单Q多个Submit;
关于用法Q也比较单:
Action中的业务实现跟DispatchAction一Pstrut-config.xml则要灉|些,针对每一个业务方法,配一?lt;action/>节点Q?
<!-- MappingDispatchAction -->
    
<!-- add -->
    
<action
      attribute
="calForm"
      name
="calForm"
      parameter
="add"
      path
="/add"
      scope
="request"
      type
="org.svse.struts.action.Cal3Action">
      
<forward name="result" path="/cal_result.jsp" />
    
</action>
    
<!-- sub -->
    
<action
      attribute
="calForm"
      name
="calForm"
      parameter
="sub"
      path
="/sub"
      scope
="request"
      type
="org.svse.struts.action.Cal3Action">
      
<forward name="result" path="/cal_result.jsp" />
    
</action>
视图lg的调用就很能够方便了Q直接跟/path路径?doQ?
<form action="add.do" method="post">
        num1:
<input type="text" name="num1"><br>
        num2:
<input type="text" name="num2"><br>
        
<input type="submit" value="?/span>">
    
</form>
Struts中四UAction用法基本完毕Q此U属本h在学?fn)过E中自己的ȝQ若有不当之处,愿不令赐?!!


]]>
Struts核心标签(原创)http://www.aygfsteel.com/yuwenlin/archive/2009/03/14/259782.html独孤?/dc:creator>独孤?/author>Sat, 14 Mar 2009 15:47:00 GMThttp://www.aygfsteel.com/yuwenlin/archive/2009/03/14/259782.htmlhttp://www.aygfsteel.com/yuwenlin/comments/259782.htmlhttp://www.aygfsteel.com/yuwenlin/archive/2009/03/14/259782.html#Feedback1http://www.aygfsteel.com/yuwenlin/comments/commentRss/259782.htmlhttp://www.aygfsteel.com/yuwenlin/services/trackbacks/259782.html常用的Struts标签库有以下五大c:

1.HTML TagQ?/p>

用来创徏能够和Struts框架以及其它相应的HTML标签交互的HTML输入表单;

如:<htmlQform></htmlQform>Q?lt;htmlQtext/>Q?lt;htmlQpassword/>Q?lt;htmlQradio/>Q?lt;htmlQcheckbox/>Q?lt;htmlmultibox>

2.Bean Tag

该标{ֺ包含的标{֏以用来创建bean、访问bean和访问bean的属性?/p>

 如:<beanQwrite/>Q用于将bean的属性输送到jsp面Q?lt;beanQdefine/>定义一个新的bean

3.Logic Tag

该标{ֺ包含的标{֏以用来进行逻辑判断、集合P代和程控制?/p>

如:<logicQiterate/>Q用来@环P?<logicQeaual/>Q用来进行逻辑判断

4.NestedQ增强对其他Struts标签的嵌套用能?/p>

该标{ֺ建立在前三个标签库的基础上,h前三个标{ֺ的所有功能,只是允许标签间的嵌套?/p>

5.Template Tag

随着Titles框架包的出现,此标记已开始减?/p>

下面介绍几个最常用的标{:

<htmlQcheck box/>一般用于一个选项的复选框

<htmlQmultibox/>一般用于多个选项的复选框

<beanQwrite name="user" property="username"/>{同于EL表达C:${user.username}

<beanQdefine id="inter" name="user" property="interest" type="java.lang.String"/>定义一个bean

<beanQmessage key=" " arg0=" "/> key 定义在资源文件中Qargs0[1,2]为参?/p>

<logicQiterate name="list" id="user"> {同于JSTL的:<cQfoeach item=${list} var="user"/>

<logicQequal name="user" property="sex" value="0"/>{同于JSTL的:<cQwhen test=""/>

<logicQempty />标签是用来判断是否ؓI的。如果ؓI,该标{体中嵌入的内容׃被处?/p>

<logic:empty name="listForm" property = "persons">
<div>集合persons为空!</div>
</logic:empty>

1.下面l一个表单的完整代码Q?/p>

<body>
    
<center>
        
<html:form action="/user">
        用户名:
<html:text property="user.username"></html:text><p/>
        密码Q?/span><html:text property="user.pwd"></html:text><p/>
        性别Q?/span><html:radio property="user.sex" value="?/span>">?/span></html:radio>
            
<html:radio property="user.sex" value="?/span>">?/span></html:radio><p/>
        城市Q?/span><html:select property="user.city">
            
<html:option value="">请选择</html:option>
            
<html:option value="武汉">武汉</html:option>
            
<html:option value="上v">上v</html:option>
            
<html:option value="北京">北京</html:option>
        
</html:select><p/>
        爱好Q?/span><html:multibox property="interest" value="看书"/>看书
            
<html:multibox property="interest" value="游戏"/>游戏
            
<html:multibox property="interest" value="睡觉"/>睡觉<p/>
            
<html:submit/><html:cancel/>
        
</html:form>
    
</center>
    
</body>

使用html标签作ؓ表单输入Q可以方便的使用验证框架卻I<html:errors property="username">

2.下面l一个显C数据的代码Q?/p>

<table align="center" border="1" width="600">
        
<caption>用户注册信息</caption>
        
<tr>
            
<td>用户?/span></td>
            
<td>密码</td>
            
<td>性别</td>
            
<td>城市</td>
            
<td>爱好</td>
            
<td colspan="2" align="center">操作</td>
        
</tr>
        
<logic:iterate name="list" id="user">
        
<tr>
            
<td><bean:write name="user" property="username"/></td>
            
<td><bean:write name="user" property="pwd"/></td>
            
<td><bean:write name="user" property="sex"/></td>
            
<td><bean:write name="user" property="city"/></td>
            
<td>
                
<bean:define id="interest" name="user" property="interest" type="java.lang.String"></bean:define>
                
<logic:iterate id="inter" collection="<%=StringUtil.stringChange2(interest)%>">
                    $
{inter}
                
</logic:iterate>
            
</td>
            
<td><a href="del.do?userid=${user.userid}">删除</a></td>
            
<td><a href="upd.do?userid=${user.userid}">修改</a></td>
        
</tr>
        
</logic:iterate>
    
</table>

作ؓ昄数据QStruts标签q不比Jstl与EL方便Q因此,本h更习(fn)惯用后?/span>

其实Struts标签的好处,q不是上面这些,而是它可利用ActionForm来填充数?/span>

比如我们在做面数据修改的时候,会让当前面数据昄到显CZ攚w面,q样利于客户端修?/span>

以前我们q样做的Q根据id从数据库查出Q然后用html的value属性填充,现在有了Struts标签Q就不需要那么麻烦了

直接在Action里填充ActionForm的数据就搞定?/span>Q?/p>

public ActionForward upd(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response) 
{
        UserForm userForm 
= (UserForm) form;
        
int userid = Integer.parseInt(request.getParameter("userid"));
        UserInfo user 
= biz.findUser(userid);
        String[]interest 
= StringUtil.stringChange2(user.getInterest());
        
//用户信息填充到ActionForm
        userForm.setUser(user);
        userForm.setInterest(interest);
        
return mapping.findForward("upd");
    }
然后在修攚w面显C,请往下看Q?/span>
<html:form action="/doupd">
        用户名:
<html:text property="user.username"></html:text><p/>
        密码Q?/span><html:text property="user.pwd"></html:text><p/>
        性别Q?/span><html:radio property="user.sex" value="?/span>">?/span></html:radio>
            
<html:radio property="user.sex" value="?/span>">?/span></html:radio><p/>
        城市Q?/span><html:select property="user.city">
            
<html:option value="">请选择</html:option>
            
<html:option value="武汉">武汉</html:option>
            
<html:option value="上v">上v</html:option>
            
<html:option value="北京">北京</html:option>
        
</html:select><p/>
        爱好Q?/span><html:multibox property="interest" value="看书"/>看书
            
<html:multibox property="interest" value="游戏"/>游戏
            
<html:multibox property="interest" value="睡觉"/>睡觉<p/>
            
<html:submit value="修改"/>
        
</html:form>
怎么P单方便吧Q其实Struts标签q是有它的好处的?

]]>
七种ActionFormhttp://www.aygfsteel.com/yuwenlin/archive/2009/03/13/259576.html独孤?/dc:creator>独孤?/author>Fri, 13 Mar 2009 09:03:00 GMThttp://www.aygfsteel.com/yuwenlin/archive/2009/03/13/259576.htmlhttp://www.aygfsteel.com/yuwenlin/comments/259576.htmlhttp://www.aygfsteel.com/yuwenlin/archive/2009/03/13/259576.html#Feedback0http://www.aygfsteel.com/yuwenlin/comments/commentRss/259576.htmlhttp://www.aygfsteel.com/yuwenlin/services/trackbacks/259576.htmlStruts中最常用的七UActionForm如下Q?/p>

1.ActionForm

2.ValidatorForm

3.ValidatorActionForm

4.DynaActionForm

5.DynaValidatorForm

6.DynaValidatorActionForm

7.LazyValidatorForm

由命名来看,M使用规律如下Q?/p>

1.带有Validator的,但都可用验证框?

2.以Dyna开头的Q都是自动生成相应的formQ只需在Struts-config.xml中配|属性即?/span>

3.中间是否有Action的,表示validation.xml中的form的name名,是跟formbean的名Uͼq是/path路径

下面按规律逐个介绍Q?/p>

1.ActionForm,DynaActionForm此类不支持验证框Ӟ需手动创徏formQƈ实现自定义的validate()Ҏ(gu)

但DynaActionForm是特?它自动生成form)Q所以没有validate()Ҏ(gu)Q所以也׃能验?br /> 2.ValidatorFormQValidatorActionFormQDynaValidatorForm

DynaValidatorActionFormQLazyValidatorForm 此大c都是支持验证框架的,当然也可以完成自定义的validate()Ҏ(gu),来覆盖验证框架的Ҏ(gu)Q其中:

ValidatorFormQDynaValidatorFormQLazyValidatorForm  没有ActionQ是针对form来验证的Q即凡是用到该form的页面,都必验证;

反之QValidatorActionFormQDynaValidatorActionFormQ则是针对Action的,要验证哪个ActionQ就跟那?path路径Qvalidation.xml代码如下Q?/p>

<form-validation>
    
<formset>
        
<!-- 此时针对Action验证,name?/span>/path路径--!>
        
<!--如果是针对form验证Qname则跟formbean的名U?/span>--!>
        
<form name="/login">
            
<field property="username" depends="required">
                
<msg name="required" key="username"/>
            
</field>
            
<field property="pwd" depends="required,minlength">
                
<msg name="required" key="pwd"/>
                
<msg name="minlength" key="pwd1"/>
                
<var>
                    
<var-name>minlength</var-name>
                    
<var-value>6</var-value>
                
</var>
            
</field>
        
</form>
    
</formset>
</form-validation>

针对七种ActionFormQ我们要灉|q用Q需要验证谁Q就让它停下Q不需要的Q让它通过?/p>

 另外介绍下验证框架的使用步骤Q?/p>

1.在validator-rules.xml中引入验证插件的代码Q?/p>

<!--引入验证框架--!>
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
        
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
                                                  /WEB-INF/validation.xml"/>
      </plug-in>
2.创徏q|validation.xml 文g,代码如下Q?
<!DOCTYPE form-validation PUBLIC
          
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
          
"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
<form-validation>
    
<formset>
        
<form name="loginForm">
            
<field property="username" depends="required">
                
<msg name="required" key="username"/>
            
</field>
            
<field property="pwd" depends="required,minlength">
                
<msg name="required" key="pwd"/>
                
<msg name="minlength" key="pwd1"/>
                
<var>
                    
<var-name>minlength</var-name>
                    
<var-value>6</var-value>
                
</var>
            
</field>
        
</form>
    
</formset>
</form-validation>
3.描述.properties资源文gQ来指明验证提示Q当然也可不用,直接声明变量
# Resources for parameter 'ApplicationResources'
# Project ch07
username
=username is null
pwd
=pwd is null
pwd1
=pwd is less than 6
以上来自各方面的学习(fn),加上自己的整?希望与各位豪杰共同探?

]]>
վ֩ģ壺 ̨| ׯ| | DZ| | ƴ| Ϫ| Ͽ| ˮ| ޵| | ݶ| ɽ| | ̨| | | | | | ߷| ɽ| ƺ| ˮ| | | ľ| | Դ| | | | | ذ| ĵ| | | | | | |