一、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)结果界面