《Web高级程序设计第10章-Struts.ppt》由会员分享,可在线阅读,更多相关《Web高级程序设计第10章-Struts.ppt(37页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第8章 Struts开发基础武昌工学院 信息工程学院 姚远版权所有 10.1 什么是什么是Struts?Struts全称是Apache Struts,它是一个用于创建JAVA Web应用程序的开源框架。框架是指包含了一套Web请求处理、Web应答及生产页面内容的架构及相应的辅助代码和工具程序等。10.1 什么是什么是Struts?Struts包含了三大方面的支持与代码库,来帮助开发者快速快发架构良好的用于商业逻辑与表现分离的Web应用程序1.请求处理:Struts框架提供良好的Web请求处理机制,它解析用户发送的Http请求地址,把请求分发给相应的由开发者编写的处理代码。2.应答处理:Stru
2、ts框架提供方便的Web应答机制,使用配置文件或代码内的标记配置Web请求的结果页面集合,使得以往繁琐复杂的多页面跳转处理和多结果显示处理变得简单容易,便于操作和改动。3.页面产生:Struts框架提供了丰富的JSP页面标签(tags),使得产生网页模板的JAVA代码与HTML代码可以完全分离,并且对页面模板内可以使用的变量及其表示语法进行了扩充和规范,使得显示代码和业务逻辑处理代码完全分离。10.1.2 Struts应用程序的架构应用程序的架构Struts框架已经为网页处理做了大部分工作,一般开发者要生成一个Struts支持的动态网站,只需要添加自己的配置文件Struts.xml、Actio
3、n类、以及网页生成模板。在Struts应用程序需要完成以下内容1.Action2.配置文件Struts.xml3.网页生成模板10.2使用使用Eclipse开发开发Struts 2网网站站运行效果运行效果http:/localhost:8080/Struts2Ex1/HelloWorld.action 10.2.3 修改修改web.xml配置文件配置文件 struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /*10.2.4 添加添加Struts.xml配置文件配置文件使用St
4、ruts技术提交的url请求通常类似于:http:/localhost:8080/Struts2Ex1/HelloWorld.action/showhelloworld.jsp 10.2.5 添加添加Action代码类代码类import com.opensymphony.xwork2.ActionSupport;public class HelloWorld extends ActionSupport String message =;public String getMessage()return message;public void setMessage(String message)t
5、his.message=message;public String execute()throws Exception message=欢迎使用Struts 2开发JAVA网站。;return SUCCESS;Execute方法被默认调用 10.2.6 编辑网页生成模板编辑网页生成模板 大家好啊。$message 使用”$”与”#”包含相应内容。在包含的内容里,是JSP页面上下文中可以直接访问的JAVA变量、对象名。运行效果运行效果http:/localhost:8080/Struts2Ex1/HelloWorld.action 大家好啊。10.3 Struts的配置文件的配置文件节点节点节点
6、节点节点节点10.3.4 节点节点在节点下至少定义一个结果节点,该节点可以不带任何属性,但是应该明确表示该结果的生成页面路径。此时,结果节点默认的返回名称为”success”。/usersave.jsp如果user.ManageAction返回的结果不是”sucess”,也即处理过程中出现错误,我们应该能够让其转向出错页面处理。这种情况下,使用节点的name属性,就可以进行出错页面定义:/usersave.jsperror.jsp节点中的type属性节点中的type属性是相当重要的一个属性,表示结果处理类型。未经指定时,它默认为”dispatcher”,它指本结果类型是一个JSP分发器,即结果
7、应该由一个请求分发器传递到结果页面处理。/showhelloworld.jspActionSupport类实现了Action接口。Aciton接口提供了5个常量,在自定义的Aciton类中可以使用这些常量作为方法的返回结果。ERRORINPUTLOGINNONESUCCESS节点中的name属性/showhelloworld.jspname属性默认值为”success”10.4 编写编写Struts的的Action模型驱动的action属性驱动的action10.4.2 模型驱动定义一个类实现ModelDriven 接口,这个类是行为实现器。使得struts 2框架帮助自动填充一个对象的数据。
8、开发者在实现getModel方法时,注意要返回一个数据对象,即希望被填充入数据的对象。Struts 2框架在处理表单时,将会自动把表单里对应名称的输入域的内容向该对象的属性字段填充。在把数据填充入该对象后,还会把它放置在Struts的值堆栈顶,后续操作可以访问该对象。10.4.2 模型驱动:示例编写一个页面:能输入教师姓名、职称、超额课时,点击提交后输出相应计算后的工资。页面:inputEmp_Model.jsp用于输入编写action类:FulltimeTeacherAction 编写结果页面:模型驱动inputEmp_Model.jsp部分源码本院全职教师工资计算本院全职教师工资计算 模型
9、驱动 struts.xml中相关配置ShowCalResult.jspError.jspinputEmployee.jsp模型驱动:编写actionpublic class FulltimeTeacherAction extends ActionSupport implements ModelDriven FulltimeTeacher teacher;/模型驱动public Object getModel()teacher=new FulltimeTeacher(,);return teacher;模型驱动:编写actionpublic String CalculateWage()teach
10、er.calculateWage();if(teacher.getWage()0)return Action.SUCCESS;else return inputagain;模型驱动:编写结果页面:ShowCalResult.jsp工资情况一览你好!$name,你的名字确实叫职称为:超额课时为:工资为:模型驱动:运行效果属性驱动action的应用实例struts.xml中相关配置ShowCalResult.jspError.jspinputEmployee.jsp编写actionpublic class FulltimeTeacherAction extends ActionSupport pr
11、ivate String name;private String title;private Float hour;private Float wage;private String onboardtime;public FulltimeTeacherAction()onboardtime=new SimpleDateFormat(yyyy-MM-dd HH:mm:ss E).format(java.util.Calendar.getInstance().getTime();public String CalculateWage()tryFulltimeTeacher teacher=new
12、FulltimeTeacher();teacher.setName(name);teacher.setTitle(title);teacher.setExtraclasshour(hour);teacher.calculateWage();wage=teacher.getWage();if(wage0)return SUCCESS;else SetNull();return INPUT;catch(Exception e)return ERROR;public String SetDefault()SetNull();return INPUT;private void SetNull()thi
13、s.setName();this.setTitle();this.setHour(Float.valueOf(0);public void setName(String name)this.name=name;public String getName()return name;public void setTitle(String title)this.title=title;public String getTitle()return title;public void setHour(Float hour)this.hour=hour;public Float getHour()retu
14、rn hour;public void setWage(Float wage)this.wage=wage;public Float getWage()return wage;public String getOnboardtime()return onboardtime;public void setOnboardtime(String onboardtime)this.onboardtime=onboardtime;编写结果页面:ShowCalResult.jsp工资情况一览你好!职称为:超额课时为:工资为:10.5.3 集合对象:应用示例Struts.xml:showallteacher
15、s.jspPayrollAction.FulltimeTeacherActionpackage PayrollAction;import public class FulltimeTeacherAction extends ActionSupport implements ModelDriven public Object getModel()Ex2_Payroll.ManageFulltimeTeachers manage=new ManageFulltimeTeachers();return manage.getFundamental();public String GetAllTeach
16、ers()return wantall;ManageFulltimeTeachers类定类定义义public class ManageFulltimeTeachers public Vector getFundamental()Vector teachers=new Vector();teachers.add(new FulltimeTeacher(Amy,副教授副教授);teachers.add(new FulltimeTeacher(Bobby,教授教授);teachers.add(new FulltimeTeacher(Cice,教授教授);return teachers;Insert title here 姓名 职称$name$title showallteachers.jsphttp:/localhost:8080/TestOnlyStruts/GetAllTeachersFulltimeTeacher.action