Struts.net介绍

来源:互联网 发布:淘宝知网账号靠谱吗 编辑:程序博客网 时间:2024/06/05 15:42

下载:http://www.javawebstudio.com/bbs/UploadFile/download/struts_db.jar



JavaWebStudio新版本中将新增Struts.net程序设计模式JavaWebStudio新版本中将新增Struts.net程序设计模式

JavaWebStudio新版本中将新增Struts.net程序设计模式。Struts.net是一种增强的Struts程序,ActionForm采用了一个叫NetForm的傻瓜式、动态、具有数据验证的Bean,是Struts v1.2.6版本中LazyValidatorForm类的加强和扩展,不用写Bean文件,也不用配置Bean的数据类型。Action采用了一个叫NetAction的傻瓜式、自动函数映射Java处理程序,是Struts v1.2.6版本中LookupDispatchAction类的加强和扩展,例如JSP表单中有一个叫“delete”的按钮,那么表单提交时,就自动映射到名为delete()的方法。还可以在映射方法中定义其它事件与函数的映射。在这种模式下,Java Web的程序设计非常简单,程序设计效率可、程序的简洁性可与ASP.NET相比美。在这种模式下,Struts程序也只有两个文件,即JSP文件和Action文件,前者对应于ASP.NET的.aspx文件,后者对应于ASP.NET的c#net或VB.net文件。

Struts.net程序设计的例子:
开发环境:JavaWebStudio 2005+Struts.net
实现方法非常简单,只要两个文件cunter.jsp和cunterAction.java文件,再加上struts-config.xml的配置就行了。

一、cunter.jsp文件内容:
<html:form  action="/cunterAction.do"    method="post">
数据输入和输出文本框代码如下:
      数据1:<html:text property="mybeanvariable1" />  
      数据2:<html:text property="mybeanvariable2" />
运算结果:<html:text property="mybeanvariable3" />
提交按钮代码如下:
      <html:submit property="action"  value="相加"/>
      <html:submit property="action"  value="相减"/>
      <html:submit property="action"  value="相乘"/>
      <html:submit property="action"  value="相除"/>
      <html:reset value="重写" />    
</html:form>  

二、cunterAction.java文件代码:
//Struts.net支持类
import javawebstudio.struts_db.NetAction;
import javawebstudio.struts_db.NetForm;
public final class counterAction extends NetAction
{
    // 变量定义,日志:
    private Log log = LogFactory.getLog("org.apache.struts.webapp.Example");
    //函数定义:
    public ActionForward 相加(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
     throws Exception
    {
      NetForm lykForm = (NetForm) form;
      int variable1= (int)lykForm.getInt("mybeanvariable1");
      int variable2= (int)lykForm.getInt("mybeanvariable2");        
         lykForm.setInt("mybeanvariable3",variable1+variable2);
         request.setAttribute("lykForm",lykForm);
         return new ActionForward(mapping.getInput());
    }  
    public ActionForward 相减(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
     throws Exception
    {
      NetForm lykForm = (NetForm) form;
      int variable1= (int)lykForm.getInt("mybeanvariable1");
      int variable2= (int)lykForm.getInt("mybeanvariable2");        
         lykForm.setInt("mybeanvariable3",variable1-variable2);
         request.setAttribute("lykForm",lykForm);
         return new ActionForward(mapping.getInput());
    }
    public ActionForward 相乘(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
     throws Exception
    {
      NetForm lykForm = (NetForm) form;
      int variable1= (int)lykForm.getInt("mybeanvariable1");
      int variable2= (int)lykForm.getInt("mybeanvariable2");        
         lykForm.setInt("mybeanvariable3",variable1*variable2);
         request.setAttribute("lykForm",lykForm);
         return new ActionForward(mapping.getInput());
    }
    public ActionForward 相除(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
     throws Exception
    {
      NetForm lykForm = (NetForm) form;
      int variable1= (int)lykForm.getInt("mybeanvariable1");
      int variable2= (int)lykForm.getInt("mybeanvariable2");        
         lykForm.setInt("mybeanvariable3",variable1/variable2);
         request.setAttribute("lykForm",lykForm);
         return new ActionForward(mapping.getInput());
    }
}

三、Struts配置文件struts-config.xml:
<form-bean  name="lykForm"
                type="javawebstudio.struts_db.NetForm" />

<action  path="/counterAction"
             type="emptyprj.counterAction"
              name="lykForm"  
            scope="request"
             input="/counter.jsp">
</action>

帮KUI补充一下:


NetAction是傻瓜式、事件自动映射到函数的Java处理程序,是Struts v1.2.6版本中LookupDispatchAction类的加强和扩展,如果JSP表单中有一个叫"delete"的按钮,那么表单提交时,就自动映射到名为delete()的方法。还可以在映射方法中定义其它事件与函数的映射。
例如JSP表单中有一个叫"delete"的按钮:
<html:submit property="action"  value="delete"/>
那么表单提交时,就自动映射到名为delete()的方法:
public ActionForward delete(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
     throws Exception
    {
          NetForm myForm = (NetForm) form;
      
     return new ActionForward(mapping.getInput());
    }
还可以在映射方法中定义其它事件与函数的映射,例如只要在NetAction扩展类中加入下面加入getKeyMethodMap()方法即可:
protected Map getKeyMethodMap()
{
  Map map=new HashMap();
  map.put("button.remove","delete");//从资源文件中获取映射名称,映射到delete()方法。
  map.put("button.update","delete"); //从资源文件中获取映射名称,映射到delete()方法。
  map.put("remove","delete"); //直接把"remove"当作映射名称,映射到delete()方法。
  map.put("update","delete"); //直接把"update"当作映射名称,映射到delete()方法。
  return map;
}

例子:

(1)struts-config.xml文件:

<struts-config>

       <form-beans>
           <form-bean name="myForm" type="javawebstudio.struts_db.NetForm"/>
       </form-beans>

       <action-mappings>
           <action path="/myActionPath" type="myPackage.MyAction" name="myForm" validate="true"/>
       </action-mappings>

    </struts-config>

(2) jsp 文件:

<html:form action="/myActionPath">

       <h2>简单属性例子</h2>
          
          Customer Number: <html:text property="custNo"/>
          Customer Name:   <html:text property="custName"/>

       <h2>Mapped属性例子</h2>
          
          Street:  <html:text property="address(street)"/>
          Town:    <html:text property="address(town)"/>
          State:   <html:text property="address(state)"/>
          Country: <html:text property="address(country)"/>

       <h2>Indexed(List)属性例子</h2>
          
          <logic:iterate id="products" property="products">
             Product Code:        <html:text name="products" property="code"        indexed="true"/>
             Product Description: <html:text name="products" property="description" indexed="true"/>
             Product Price:       <html:text name="products" property="price"       indexed="true"/>
          </logic:iterate>

    </html:form>

(3)Action 文件:

public ActionForward execute(ActionMapping mapping,
                                 ActionForm form,
                                 HttpServeletRequest request,
                                 HttpServletResponse response) throws Exception {

       NetForm thismyForm = (NetForm )form;

       String custNo = (String)thismyForm .get("custNo");   // simple
       //或者:String custNo = (String)thismyForm .getString("custNo");   // 字符串
      //或者:int custNo = (String)thismyForm .getInt("custNo");   // 整数

       Map address   = (Map)thismyForm .get("address");     // mapped
       List products = (List)thismyForm .get("products");   // indexed  


    }

 

Struts.net需要在Struts v1.2.6及以上版本运行。

如果没有v1.2.6,可到从下面地址下载一个JavaWebStudio的“空的Struts1.2.6版本普通模”,把压缩文件解决到“/JavaWebStudio/bin/模板/Jave Web 项目/Struts项目”目录下,你建立新项目时用这个模板就行了。当然后,你也可以把这个模板lib目录下的所有库文件拷贝及覆盖你项目lib目录下的库文件。

下载:http://www.javawebstudio.com/bbs/UploadFile/download/空的Struts1.2.6版本普通模板.rar

 

原创粉丝点击