struts2的传值方式2域模式也叫DomainModel
总的来说首先你需要建一个要存储得javabean cal类把num1、num2和op封装
然后在jsp页面写表单把要传的值写上,在Action页面声明这个类并且为这个类创建set和get方法,
Cal类不需要显式的实例化,struts会自动帮你实例化,但前提条件是,传值时需要使用 对象名.参数名 的方式进行传递
.jsp
<body>
<form action="calAction" method="post" >
操作数1:<input type="text" name="cal.num1" value="${requestScope.cal.num1}"><br>
运算: <input type="radio" name="cal.op" value="+" ${requestScope.cal.op=="+"? "checked": " "}>+
<input type="radio" name="cal.op" value="-" ${requestScope.cal.op=="-"? "checked" : " "}>-
<input type="radio" name="cal.op" value="*" ${requestScope.cal.op=="*"? "checked" : " "}>*
<input type="radio" name="cal.op" value="/" ${requestScope.cal.op=="/"? "checked" : " "}>/<br>
操作数2:<input type="text" name="cal.num2" value="${requestScope.cal.num2}"><br>
<input type="submit" value="计算" ><br>
结果:<input type="text" value="${requestScope.result}">
</form>
</body>
Action
package action;
import cal.Cal;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class calAction extends ActionSupport {
private Cal cal;
public Cal getCal() {
return cal;
}
public void setCal(Cal cal) {
this.cal = cal;
}
public String cal(){
float result=0;
System.out.println(cal.getOp());
float num1=cal.getNum1();
float num2=cal.getNum2();
switch(cal.getOp().charAt(0)){
case '+':
result=num1+num2;
break;
case '-':
result=num1-num2;
break;
case '*':
result=num1*num2;
break;
case '/':
result=num1/num2;
}
System.out.print(result);
ActionContext action=ActionContext.getContext();
action.put("result", result);
return "success";
}
}
.java(Bean)
package cal;
public class Cal {
private float num1;
private String op;
private float num2;
private float result;
public float getNum1() {
return num1;
}
public void setNum1(float num1) {
this.num1 = num1;
}
public String getOp() {
return op;
}
public void setOp(String op) {
this.op = op;
}
public float getNum2() {
return num2;
}
public void setNum2(float num2) {
this.num2 = num2;
}
public float getResult() {
return result;
}
public void setResult(float result) {
this.result = result;
}
}
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<action name="calAction" class="action.calAction" method="cal">
<result name="success">/cal.jsp</result>
</action>
</package>
<!-- Add packages here -->
</struts>
好了这就是DomainModel