CalcAction.java package com.calc.resource.action; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.DynaActionForm; import org.apache.struts.actions.DispatchAction; import com.calc.biz.CalcBiz; /** * MyEclipse Struts Creation date: 10-21-2008 * * XDoclet definition: * * @struts.action path="/calc" name="calcForm" input="/calc.jsp" * parameter="method" scope="request" */ public class CalcAction extends DispatchAction { CalcBiz biz = new CalcBiz(); public ActionForward doAdd(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { DynaActionForm calcForm = (DynaActionForm) form; double num1 = Double.parseDouble(calcForm.get("num1").toString()); double num2 = Double.parseDouble(calcForm.get("num2").toString()); double result = biz.add(num1, num2); request.setAttribute("operator", "Add"); request.setAttribute("result", new Double(result)); return mapping.findForward("toResult"); } public ActionForward doSubtract(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { DynaActionForm calcForm = (DynaActionForm) form; double num1 = Double.parseDouble(calcForm.get("num1").toString()); double num2 = Double.parseDouble(calcForm.get("num2").toString()); double result = biz.subtract(num1, num2); request.setAttribute("operator", "Subtract"); request.setAttribute("result", new Double(result)); return mapping.findForward("toResult"); } public ActionForward doMultiply(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { DynaActionForm calcForm = (DynaActionForm) form; double num1 = Double.parseDouble(calcForm.get("num1").toString()); double num2 = Double.parseDouble(calcForm.get("num2").toString()); double result = biz.multiply(num1, num2); request.setAttribute("operator", "Multiply"); request.setAttribute("result", new Double(result)); return mapping.findForward("toResult"); } public ActionForward doDivide(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { DynaActionForm calcForm = (DynaActionForm) form; double num1 = Double.parseDouble(calcForm.get("num1").toString()); double num2 = Double.parseDouble(calcForm.get("num2").toString()); double result = biz.divide(num1, num2); request.setAttribute("operator", "Divide"); request.setAttribute("result", new Double(result)); return mapping.findForward("toResult"); } } CalcBIZ.java package com.calc.biz; public class CalcBiz { public double add(double num1, double num2) { return num1 + num2; } public double subtract(double num1, double num2) { return num1 - num2; } public double multiply(double num1, double num2) { return num1 * num2; } public double divide(double num1, double num2) { return num1 / num2; } } struts-config.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config> <data-sources /> <form-beans> <form-bean name="calcForm" type="org.apache.struts.action.DynaActionForm"> <form-property name="method" type="java.lang.String" /> <form-property name="num2" type="java.lang.String" /> <form-property name="num1" type="java.lang.String" /> </form-bean> </form-beans> <global-exceptions /> <global-forwards /> <action-mappings> <action attribute="calcForm" input="/calc.jsp" name="calcForm" parameter="method" path="/calc" scope="request" type="com.calc.resource.action.CalcAction" validate="false"> <forward name="toResult" path="/result.jsp" /> </action> <action forward="/calc.jsp" path="/back" /> </action-mappings> <message-resources parameter="com.calc.resource.ApplicationResources" /> </struts-config> cals.jsp <%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> <html> <head> <title>JSP for DynaActionForm form</title> <mce:script type="text/javascript"><!-- function doCalc(operator) { //document.forms[0].method.value=operator; //document.form[0].elements["method"].value); document.all("method").value=operator; document.forms[0].submit(); } // --></mce:script> </head> <body> <h2> <bean:message key="calc.jsp.title" /> </h2> <html:form action="/calc.do" method="post" focus="num1"> <html:hidden property="method" value="" /> <bean:message key="calc.jsp.num2" /> <html:text property="num2" /> <html:errors property="num2" /> <br /> <bean:message key="calc.jsp.num1" /> <html:text property="num1" /> <html:errors property="num1" /> <br /> <input type="button" value="<bean:message key='calc.jsp.add'/>" οnclick="doCalc('doAdd')" /> <input type="button" value="<bean:message key='calc.jsp.subtract'/>" οnclick="doCalc('doSubtract')" /> <input type="button" value="<bean:message key='calc.jsp.multiply'/>" οnclick="doCalc('doMultiply')" /> <input type="button" value="<bean:message key='calc.jsp.divide'/>" οnclick="doCalc('doDivide')" /> </html:form> </body> </html> result.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>结果</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css" mce_href="styles.css"> --> </head> <body> <h2> 算数计算器 </h2> 操作: <bean:write name="operator" scope="request" /> <br /> 第一个数: <bean:write name="calcForm" property="num1" /> <br /> 第一个数: <bean:write name="calcForm" property="num2" /> <br /> 结果: <bean:write name="result" scope="request" /> <br /> </body> </html>