到目前为止,我们经历了从静态页面到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,配置ActionFormAction

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都行。

posted on 2010-11-28 10:28  豫州邢帥  阅读(498)  评论(1编辑  收藏  举报