使用DispatchAction做一个简单的计算器
DispatchAction是Struts中Action中的一种,为一种动态Action,可以处理相同类型的方法
1.calculator.jsp(计算页面)
- <%@pagelanguage="java"pageEncoding="GB18030"%>
-
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
- <html>
- <head>
- <title>calculator.jsp</title>
-
<mce:scripttype="text/javascript"><!--
- functionfun(obj)
- {
-
varelement=document.getElementById("method");
- element.value=obj;
- alert(element.value);
- form1.submit();
- }
-
- </head>
- <body>
- <center>
-
<formaction="calculator.do"method="get"id="form1">
-
<inputtype="text"name="num1"/><br>
-
<inputtype="text"name="num2"/><br>
-
<inputtype="hidden"id="method"name="method">
-
<inputtype="button"name="add"value="加"onclick="fun('add')">
-
<inputtype="button"name="sub"value="减"onclick="fun('sub')">
-
<inputtype="button"name="mul"value="乘"onclick="fun('mul')">
-
<inputtype="button"name="div"value="除"onclick="fun('div')">
- </form>
- </center>
- </body>
- </html>
2.CalculatorForm(传参,验证ActionFrom)
- packagecom.feng.struts.form;
-
importjavax.servlet.http.HttpServletRequest;
-
importorg.apache.struts.action.ActionErrors;
-
importorg.apache.struts.action.ActionForm;
-
importorg.apache.struts.action.ActionMapping;
-
importorg.apache.struts.action.ActionMessage;
-
publicclassCalculatorFormextendsActionForm{
-
privatedoublenum1;
-
privatedoublenum2;
-
privatedoubleresult;
-
publicdoublegetNum1(){
-
returnnum1;
- }
-
publicvoidsetNum1(doublenum1){
-
this.num1=num1;
- }
-
publicdoublegetNum2(){
-
returnnum2;
- }
-
publicvoidsetNum2(doublenum2){
-
this.num2=num2;
- }
-
publicdoublegetResult(){
-
returnresult;
- }
-
publicvoidsetResult(doubleresult){
-
this.result=result;
- }
-
publicActionErrorsvalidate(ActionMappingmapping,
- HttpServletRequestrequest){
-
ActionErrorserrors=newActionErrors();
-
if("".equals(num1)||"".equals(num2)){
-
errors.add("num.null",newActionMessage("num.num"));
- }
-
returnerrors;
- }
-
publicvoidreset(ActionMappingmapping,HttpServletRequestrequest){
-
- }
- }
3.CalculatorAction(处理类DispatchAction)
- packagecom.feng.struts.action;
-
importjavax.servlet.http.HttpServletRequest;
-
importjavax.servlet.http.HttpServletResponse;
-
importorg.apache.struts.action.ActionErrors;
-
importorg.apache.struts.action.ActionForm;
-
importorg.apache.struts.action.ActionForward;
-
importorg.apache.struts.action.ActionMapping;
-
importorg.apache.struts.action.ActionMessage;
-
importorg.apache.struts.action.ActionMessages;
-
importorg.apache.struts.actions.DispatchAction;
-
importcom.feng.struts.form.CalculatorForm;
-
publicclassCalculatorActionextendsDispatchAction{
-
publicActionForwardadd(ActionMappingmapping,ActionFormform,
- HttpServletRequestrequest,HttpServletResponseresponse){
- CalculatorFormcalculatorForm=(CalculatorForm)form;
- calculatorForm.setResult(calculatorForm.getNum1()
- +calculatorForm.getNum2());
-
returnmapping.findForward("ok");
- }
-
publicActionForwardsub(ActionMappingmapping,ActionFormform,
- HttpServletRequestrequest,HttpServletResponseresponse){
- CalculatorFormcalculatorForm=(CalculatorForm)form;
- calculatorForm.setResult(calculatorForm.getNum1()
- -calculatorForm.getNum2());
-
returnmapping.findForward("ok");
- }
-
publicActionForwardmul(ActionMappingmapping,ActionFormform,
- HttpServletRequestrequest,HttpServletResponseresponse){
- CalculatorFormcalculatorForm=(CalculatorForm)form;
- calculatorForm.setResult(calculatorForm.getNum1()
- *calculatorForm.getNum2());
-
returnmapping.findForward("ok");
- }
-
publicActionForwarddiv(ActionMappingmapping,ActionFormform,
- HttpServletRequestrequest,HttpServletResponseresponse){
- CalculatorFormcalculatorForm=(CalculatorForm)form;
-
if(calculatorForm.getNum2()==0){
-
ActionErrorserrors=newActionErrors();
-
-
-
ActionMessagesmessage=newActionMessages();
-
message.add("d",newActionMessage("num.zero"));
-
super.saveErrors(request,message);
-
returnmapping.findForward("no");
-
}else{
- calculatorForm.setResult(calculatorForm.getNum1()
- /calculatorForm.getNum2());
-
returnmapping.findForward("ok");
- }
- }
- }
4.ApplicationResources.properties(资源文件,显示错误信息)
- num.null=/u6570/u5B57/u4E0D/u80FD/u4E3A/u7A7A/!/!/!
- num.zero=/u6570/u5B57/u4E0D/u80FD/u4E3A/u96F6/!/!/!
5.struts-config.xml(配置文件)
- <?xmlversion="1.0"encoding="UTF-8"?>
-
<!DOCTYPEstruts-configPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration1.2//EN""http://struts.apache.org/dtds/struts-config_1_2.dtd">
-
<struts-config>
-
<data-sources/>
-
<form-beans>
-
<form-beanname="calculatorForm"type="com.feng.struts.form.CalculatorForm"/>
-
</form-beans>
-
<global-exceptions/>
-
<global-forwards/>
-
<action-mappings>
-
<action
-
attribute="calculatorForm"
-
input="/form/calculator.jsp"
-
name="calculatorForm"
-
parameter="method"
-
path="/calculator"
-
scope="request"
-
type="com.feng.struts.action.CalculatorAction">
-
<forwardname="ok"path="/result.jsp"></forward>
-
<forwardname="no"path="/error.jsp"></forward>
-
</action>
-
</action-mappings>
-
<message-resourcesparameter="com.feng.struts.ApplicationResources"/>
-
</struts-config>
分享到:
相关推荐
以下是一个简单的DispatchAction使用步骤: 1. **创建DispatchAction类**:首先,你需要继承自org.apache.struts.actions.DispatchAction,创建一个新的Action类。在这个类中,你需要定义一系列处理特定业务的方法...
Struts1.2是一个经典的Java Web框架,它在企业级应用开发中被广泛使用,尤其在Web MVC(Model-View-Controller)设计模式的应用上。本示例是基于Struts1.2实现的一个计算器程序,旨在帮助初学者理解Struts框架的工作...
使用DispatchAction的另一个优点是,它可以结合Struts的国际化和主题功能,为不同的用户群体提供定制的视图。此外,通过将Action类中的方法组织成逻辑相关的组,可以更方便地进行权限控制和事务管理。 然而,需要...
03Struts2常用标签&DispatchAction.rar03Struts2常用标签&DispatchAction.rar03Struts2常用标签&DispatchAction.rar03Struts2常用标签&DispatchAction.rar
Struts1中怎样实现DispatchAction配置多个input属性\Struts1中怎样实现DispatchAction配置多个input属性
在本教程中,我们将深入探讨如何利用Struts的标签库和DispatchAction来实现数据的增删改查操作,这对于初学者来说是一个非常实用的学习主题。 首先,`DispatchAction`是Struts中的一个特殊Action类,它允许我们根据...
在早期的Struts版本中,`DispatchAction`类是一个核心组件,它允许我们通过单一的Action类处理多个请求,通过在请求URL中指定不同的方法名来调用不同的业务逻辑。 标题提到的"Struts中等同于DispatchAction类方法...
解决Struts1.x中使用Validator框架对DispatchAction不同方法使用不同的字段验证 你可以先参看我的blog文章:http://blog.csdn.net/qjyong/archive/2008/11/16/3311688.aspx 再决定是否下载。
在本项目中,我们关注的是"Struts+Oracle实现DispatchAction类",这是一个将Struts框架与Oracle数据库结合使用,以实现业务逻辑处理的例子。 DispatchAction是Struts框架中的一个关键组件,它扮演着控制器的角色,...
DispatchAction是Struts框架中的一个动作类,用于处理用户的请求并转发到相应的业务逻辑。在这个场景中,我们将探讨如何结合DispatchAction和存储过程来实现分页效果。 首先,理解分页的基本概念。分页是当数据量过...
2. **实现DispatchAction**:接下来,你需要创建一个继承自`org.apache.struts.actions.DispatchAction`的类。例如,我们可以创建`YourDispatchAction.java`: ```java public class YourDispatchAction extends ...
Struts计算器是一个基于Java EE平台,使用Struts框架开发的简单计算器应用,主要目标是帮助初学者理解并实践Struts框架的基本用法。Struts是一个开源的MVC(Model-View-Controller)框架,用于构建可维护性高、结构...
`DispatchAction`是由Apache Struts框架提供的一个基础类,它扩展了`Action`类。它的主要功能是将一个HTTP请求路由到多个方法,而不是只调用一个单一的方法来处理所有的请求。`DispatchAction`通过请求参数(通常是...
最近自学java中的框架-struts写了一些小例子,这都是很经典的程序,如果大家瞧得起要下载去看看,顺便给俺找找不足的地方。我的qq 821865130 email qingtian_hechen@163.com 希望大家能多多给我帮助。在此谢谢各位!...
2. **配置Struts-config.xml**:接下来,在`struts-config.xml`配置文件中,为`DispatchAction`创建一个或者多个配置项,每个配置项对应一个请求。在`<action>`元素中,使用`parameter`属性指定区分不同业务的方法的...
- 创建一个新的Maven项目,因为Struts2通常与Maven一起使用,以管理依赖。 - 设置项目的目录结构,包括`src/main/java`(源代码)、`src/main/resources`(资源文件)、`src/main/webapp`(Web应用目录)等。 2. ...