到目前为止,我们经历了从静态页面到JSP,再到JSP+Servlet+JavaBean的学习过程,又在前面学习了Struts技术。
没有人知道宇宙是怎样开始的。有人推论... 啊,错了,跳到魔兽正史了。
纯JSP盛行的时代是乱世,那时候编写的HTML和JSP混用代码很少存活到今天。业务逻辑越来越复杂,JavaBean和Servlet开始广泛应用,这个世界里开始散发着文明的气息,事情开始变得有秩序。Struts出现的意义大致相当于《拿破仑法典》的颁发,框架的广泛使用铲除了杂乱和无序,还提供给人们各种方便。EJB王朝没落的时候,三层架构+Struts MVC开始了温和的统治,这个新的领袖虽然没有王冠(非jcp委员会) ,也没有权杖(不是jsr标准),但成为了 Java Web应用开发事实标准,得到了天下。
Struts是针对JSP+Servlet的一个MVC的解决方案。
使用
开发的4个步骤:
1、给项目添加Struts支持
2、实现业务逻辑类(模型,Model)
3、添加Struts组件
开发ActionForm组件(视图组件,View)
开发Action组件(控制组件,Controller)
开发JSP页面
修改配置文件struts-config.xml,配置ActionForm和Action
4、调试运行
demo
下面我们写一个Calculator,简单练习下Struts框架:

创建项目,搭建框架,我们创建biz包
public class Calculator {
public double addition(double num1,double num2) {
return num1+num2;
}
public double subtract(double num1,double num2) {
return num1-num2;
}
public double multiply(double num1,double num2) {
return num1*num2;
}
public double divide(double num1,double num2) {
return num1/num2;
}
}
添加Struts支持:

创建结果页面,修改index页面
Welcome to out website <br>
<html:form action="/calc" method="post">
<input type="hidden" name="operate" />
Calculator<br/>
num1:
<input type="text" name="num1"><br/>
num2:
<input type="text" name="num2"><br/>
<button onclick="doSubmit('doAddition')">加</button>
<button onclick="doSubmit('doSubtract')">减</button>
<button onclick="doSubmit('doMultiply')">×</button>
<button onclick="doSubmit('dodDivide')">÷</button>
</html:form>
<script>
function doSubmit(opr){
document.forms[0].elements["operate"].value=opr;
document.forms[0].submit();
}
</script>
好,我们开始创建FormBean、action。

选择Formbean的基类

这里action的基类,我们选择DispatchAction,这就意味着struts-config.xml里,我们要添加属性parameter="operate",它是index页面加的隐藏域的值,这个,你懂的

好,下面要做的是修改Action:
public ActionForward doAddition(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
CalcForm calcForm = (CalcForm) form;// TODO Auto-generated method stub
Calculator calculator = new Calculator();
double result;
result= calculator.addition(Double.parseDouble(calcForm.getNum1()), Double.parseDouble(calcForm.getNum2()));
request.setAttribute("result", result);
return mapping.findForward("result");
}
public ActionForward doSubtract(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
CalcForm calcForm = (CalcForm) form;// TODO Auto-generated method stub
Calculator calculator = new Calculator();
double result;
result= calculator.subtract(Double.parseDouble(calcForm.getNum1()), Double.parseDouble(calcForm.getNum2()));
request.setAttribute("result", result);
return mapping.findForward("result");
}
public ActionForward doMultiply(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
CalcForm calcForm = (CalcForm) form;// TODO Auto-generated method stub
Calculator calculator = new Calculator();
double result;
result= calculator.multiply(Double.parseDouble(calcForm.getNum1()), Double.parseDouble(calcForm.getNum2()));
request.setAttribute("result", result);
return mapping.findForward("result");
}
public ActionForward dodDivide(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
CalcForm calcForm = (CalcForm) form;// TODO Auto-generated method stub
Calculator calculator = new Calculator();
double result;
result= calculator.divide(Double.parseDouble(calcForm.getNum1()), Double.parseDouble(calcForm.getNum2()));
request.setAttribute("result", result);
return mapping.findForward("result");
}
输出页面,用el表达式、jstl都行。


浙公网安备 33010602011771号