属性传值也就是普通的传值方法
先总的说一下属性传值是什么样子的!
在jsp页面直接写就可以了,没有什么特殊的要求和servlet的jsp页面一样
在Action页面定义要传的值,创建get和set方法。可以直接用。
具体参见代码,我用myeclipse写的
.jsp
<body>
<form action="calAction.action" method="post" >
操作数1:<input type="text" name="num1" value="${requestScope.num1}"><br>
运算: <input type="radio" name="op" value="+" ${requestScope.op=="+"? "checked": " "}>+
<input type="radio" name="op" value="-" ${requestScope.op=="-"? "checked" : " "}>-
<input type="radio" name="op" value="*" ${requestScope.op=="*"? "checked" : " "}>*
<input type="radio" name="op" value="/" ${requestScope.op=="/"? "checked" : " "}>/<br>
操作数2:<input type="text" name="num2" value="${requestScope.num2}"><br>
<input type="submit" value="计算" ><br>
结果:<input type="text" value="${requestScope.result}">
</form>
</body>
Action
package action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class calAction extends ActionSupport {
private float num1;
private String op;
private float num2;
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 String cal(){
float result=0;
System.out.println(op.charAt(0));//op.charAt(0)是因为传过来的数据类型不是字符型的,需要用charAt(0)提取第一个元素
switch(op.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";
}
}
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>
***************
struts.enable.DynamicMethodInvocation = true,-动态方法调用,为true时,就可以在struts.xml配置“*”的通配符,来调用action里的方法
struts.devMode
开启这个选项会使struts每次都重新加载初始化文件,配置文件,包括struts.properties,struts.xml等
struts.devMode=true不会自动加载任何配置文件,配置上这个后如果框架出了异常会有非常详细的异常堆栈打印出来,而不是单纯的404或500页面