Struts2编程练习之简易计算器

来源:互联网 发布:eagle软件怎么样 编辑:程序博客网 时间:2024/05/16 00:48

要求:使用Struts2框架开发一个简单的应用,该应用为一个计算器,能进行加、减、乘、除操作,并能对输入的数据进行判断,当用户输入非数字信息时,显示出错提示。

编程步骤:

一、导入需要的struts包

1、struts2-core-2.3.24.1.jar ——struts2的核心jar包

2、commons-fileupload-1.3.1.jar——commons项目中的关于文件上传的包, struts2.1.6版本后必须加入此文件

3、commons-io-2.2.jar——commons项目(commons项目就是java中一些常用的公共的组件)的io子项目,是处理异常的

4、commons-lang3-3.2.jar——commons项目中的lang包

5、commons-logging-1.1.3.jar——日志记录

6、freemarker-2.3.22.jar——支持freemarker(struts2的UI标签的模板使用FreeMarker编写)的,在webwork中也有

7、javassist-3.11.0.GA.jar——一个开源的分析、编辑和创建Java字节码的类库(hibernate中也需要,引入其中一个即可)

8、ognl-3.0.6.jar——支持ognl语言(对象图导航语言(Object Graph Navigation  Language))的,struts2框架通过其读写对象的属性,webwork也支持ognl语言

9、xwork-core-2.3.24.1.jar——xwork的核心jar包,由于struts2是webwork的升级版本,所以必定对其有所依赖(struts2在其基础上构建)

二、JSP页面

1、输入页面index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><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><font color="red">              <s:property value="errors['num1'][0]" />        </font><br>第二个数:<s:textfield name="num2"></s:textfield><font color="red">              <s:property value="errors['num2'][0]" />        </font><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>
2、计算结果显示页面result.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><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="返回" onclick="javascript:history.back();"></a></body></html>

三、service类(判断输入的是不是数字)

CalculateService.java

package com.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; } }

四、action类

CalculateAction.java

package com.action;import com.opensymphony.xwork2.ActionSupport;import com.service.CalculateService;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();@Overridepublic 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";}}

五、配置文件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="com.action.CalculateAction"><result name="success">/result.jsp</result><result name="fail">/index.jsp</result><result name="input">/index.jsp</result></action></package></struts>

六、过滤器配置web.xml

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">  <display-name>SimpleCalculator</display-name>  <welcome-file-list>    <welcome-file>index.jsp</welcome-file>  </welcome-file-list>    <!-- FilterDispatcher配置 -->  <filter>    <filter-name>FilterDispatcher</filter-name>    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>  </filter>  <filter-mapping>    <filter-name>FilterDispatcher</filter-name>    <url-pattern>/*</url-pattern>  </filter-mapping></web-app>

工程目录:



运行页面显示:





0 0