45fan.com - 路饭网

搜索: 您的位置主页 > 电脑频道 > 电脑教程 > 阅读资讯:Struts.net详细分析

Struts.net详细分析

2016-08-31 12:27:56 来源:www.45fan.com 【

Struts.net详细分析

下载: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:formaction="/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-beanname="lykForm"
type="javawebstudio.struts_db.NetForm" />

<actionpath="/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

 

本文地址:http://www.45fan.com/dnjc/70229.html
Tags: 介绍 HTTP Struts.net
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部