Struts2--实现简单计算器

一、struts2的配置
点击查看配置过程

二、整体结构图

在这里插入图片描述
三、实现简单的计算器

  • (1)业务逻辑处理(实现Action对象)
import com.opensymphony.xwork2.ActionSupport;
public class CalculateAction extends ActionSupport {
    private String num1;
    private String num2;
    private String operation;
    private double result;
    public String getNum1() {
        return num1;
    }
    public void setNum1(String num1) {
        this.num1 = num1;
    }
    public String getNum2() {
        return num2;
    }
    public void setNum2(String num2) {
        this.num2 = num2;
    }
    public String getOperation() {
        return operation;
    }
    public void setOperation(String operation) {
        this.operation = operation;
    }
    public double getResult() {
        return result;
    }
    public void setResult(double result) {
        this.result = result;
    }

    CalculateService cs=new CalculateService();
    @Override
    public void validate(){
        boolean flag1,flag2;
        flag1=cs.isNumeric(num1);
        flag2=cs.isNumeric(num2);
        if(flag1==false||num1==null||num1.equals("")){
            this.addFieldError("num1", "只能输入数字。");
        }
        if(flag2==false||num2==null||num2.equals("")){
            this.addFieldError("num2", "只能输入数字。");
        }
    }
    public String execute(){
        double num3=0;
        double num4=0;
        try{
            num3=Double.parseDouble(num1);
            num4=Double.parseDouble(num2);
        }catch(Exception e){
            this.addActionError("只能输入数字。");
            e.printStackTrace();
            return "fail";
        }
        if(operation.equals("加")){
            result=num3+num4;
        }else if(operation.equals("减")){
            result=num3-num4;
        }else if(operation.equals("乘")){
            result=num3*num4;
        }else if(operation.equals("除")){
            if(num4==0){
                this.addFieldError("num2", "除数不能为零!");
                return "fail";
            }else{
                result=num3/num4;
            }
        }
        return "success";

    }
}


  • (2)显示页面index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<head>
    <title>计算器</title>
</head>
<body bgcolor="#FFFFCC">
<h1>算数计算器</h1>
<%@taglib uri="/struts-tags" prefix="s"%>
<s:form action="Calculate" theme="simple">
    第一个数:<s:textfield name="num1"></s:textfield>
    <span style="color: red; ">
        <s:property value="errors['num1'][0]" />
    </span><br>
    第二个数:<s:textfield name="num2"></s:textfield>
    <span style="color: red; ">
        <s:property value="errors['num2'][0]" />
    </span><br>
    <s:submit value="加"  name="operation"></s:submit>
    <s:submit value="减"  name="operation"></s:submit>
    <s:submit value="乘"  name="operation"></s:submit>
    <s:submit value="除"  name="operation"></s:submit>
</s:form>
</body>
</html>

  • (3)service类(判断输入的是不是数字)

public class CalculateService {
    public static boolean isNumeric(String str)
    {
        for (int i = str.length();--i>=0;)
        {
            if (!Character.isDigit(str.charAt(i)))
            {
                return false;
            }
        }
        return true;
    }

}

  • (4)结果显示页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body bgcolor="#FFFFCC">
<h1>算数计算器</h1>
<%@taglib uri="/struts-tags" prefix="s"%>
操作:<s:property value="operation"/><br>
第一个数:<s:property value="num1"/><br>
第二个数:<s:property value="num2"/><br>
结果:<s:property value="result"/><br>
<a href="index.jsp"><input type="button" value="返回" οnclick="javascript:history.back();"></a>
</body>
</html>

  • (5)配置文件struts.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
      <package name="SimpleCalculator" extends="struts-default">
            <action name="Calculate" class="CalculateAction">
                <result name="success">/result.jsp</result>
                <result name="fail">/index1.jsp</result>
                <result name="input">/index1.jsp</result>
            </action>
        </package>
</struts>


  • (6)配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <filter>
        <filter-name>FilterDispatcher</filter-name>
        <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>FilterDispatcher</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

四、运行结果

  • (1)输入界面
    在这里插入图片描述
  • (2)结果界面
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值