以下我将从一个简单点的计算器实例,介绍struts1的环境配置,以及其重要的两个核心类:ActionForm和Action
简单计算器实现思路:
1.提供一个输入界面,输入两个数字和运算符(+、-、*、/),提交后将运算结果显示出来。假设出现错误显示错误页面,在正确页面和错误页面须要显示出输入值、运算符和计算结果。
2.发送计算请求。须要Action处理这个请求。并将计算结果返回。此外,发请求须要传送数据才干计算。所以须要一个ActionForm来进行数据传送。表单上传送过来的数据都是字符串的,ActionForm能够进行数据类型转换。
步骤一:配置Struts环境
1.jar包
拷贝此路径下的全部jar包。并放置在项目的WebRootWEB-INFlib下
Strutsstruts-1.2.9-binlib下全部的jar包
2.配置ActionServlet
找到Strutsstruts-1.2.9-binwebappsstruts-blankWEB-INFweb.xml
将红框中的内容复制到项目的WebRootWEB-INFweb.xml下
3.配置struts核心配置文件
拷贝Strutsstruts-1.2.9-binwebappsstruts-blankWEB-INF下的struts-config.xml文件到WebRootWEB-INF下
步骤二:代码实现
1.新建input.jsp页面:提供输入界面。输入两个数字和运算符
<body> <h1>简易计算器</h1> <hr> <form action="cal.action" method="post"> <input type="text" name="value1"> <select name="flag"> <option value="+">+</option> <option value="-">-</option> <option value="*">*</option> <option value="/">/</option> </select> <input type="text" name="value2"> <input type="submit" value="计算"> </form> </body>
2.新建CalActionForm页面并继承Struts的ActionForm:ActionForm将页面上的数据封转到Action业务类。
<pre name="code" class="java">/** * ActionForm传送数据 * @author 火云 * */ @SuppressWarnings("serial") public class CalActionForm extends ActionForm { private int value1; private String flag; private int value2; public int getValue1() { return value1; } public void setValue1(int value1) { this.value1 = value1; } public String getFlag() { return flag; } public void setFlag(String flag) { this.flag = flag; } public int getValue2() { return value2; } public void setValue2(int value2) { this.value2 = value2; } }
3.新建CalAction类并继承Struts的Action,并覆盖execute方法:Action处理每一次请求
/** * Action处理每一次请求。继承Struts的Action,并覆盖execute方法 * @author 火云 * */ public class CalAction extends Action { @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { //取出表单数据 CalActionForm calform = (CalActionForm)form; //基于Struts对数据的封装传送,所以我们能强制转换 int value1 = calform.getValue1(); String flag = calform.getFlag(); int value2 = calform.getValue2(); //处理数据 int result = 0; try { if("+".equals(flag)){ result = value1+ value2; }else if("-".equals(flag)){ result = value1-value2; }else if("*".equals(flag)){ result=value1*value2; }else if ("/".equals(flag)){ result=value1/value2; } //转向成功页面 request.setAttribute("result", result); return mapping.findForward("success"); } catch (Exception e) { e.printStackTrace(); } //转向错误页面 return mapping.findForward("error"); } }
4.配置流程:Struts-config文件
5.success.jsp页面:
<body> ${calform.value1 } ${calform.flag } ${calform.value2 } = ${result } </body>
6.error.jsp页面
<body> ${calform.value1 } ${calform.flag } ${calform.value2 } 失败!</body>
事实上,在DRP分销系统中我们接触过MVC开发模式,在MVC开发模式中Servlet扮演着控制器的角色。
其主要功能:參数获取。业务逻辑调用,以及页面转向。
Struts是基于MVC模式的一个web开发框架。对Servlet进行了封装。为什么要进行封转呢。主要是我们在Servlet进行页面转向时。页面都是写死了。直接转到了jsp。假设我们更换jsp名称,就须要改动代码,并且从表单传过来的数据都是字符串类型,我们还须要依据实际的需求进行类型转换。比如(年龄,int类型),每次都须要先转。基于这些种种原因。Struts对其进行了封转。提供了一种更为灵活的机制。
总结:
以上仅仅是通过一个简单的小样例来对struts1的初步学习。这仅仅是学习的第一阶段。对它的理解还须要看在以后的学习中是否真正的用心。每一种框架都有通的一面。所以仅仅要用心学,多思考,再接触新的框架的时候,不论什么问题也都会迎刃而解。