资源描述
第二章,Struts原理(一),回顾,为什么要使用框架?说出三个流行的Java框架。什么是MVC?MVC有什么用?Struts框架有什么用?,预习检查,如何在web.xml中配置Struts?Struts默认的配置文件名是什么?Struts中有哪几类组件?,本章任务,使用Struts框架实现:加法器发布房屋信息,理解Struts框架的工作原理掌握使用Struts框架开发Web应用的基本步骤熟悉MyEclipse对Struts开发的支持,本章目标,Web框架事实标准,:Web框架的事实标准,JavaEE主流技术趋势图,主流Web框架趋势图,http:/struts.apache.org,使用Struts实现加法器,使用开发的4个步骤给项目添加Struts支持实现业务类添加Struts组件1、ActionForm2、Action3、添加jsp页面4、配置struts-config.xml调试运行,完成的项目,1,2,3,4,新建Web项目,使用Struts实现加法器,给项目添加Struts支持,点选MyEclipseAddStrutsCapabilities,添加Struts支持,1,在项目节点上单击右键,使用Struts实现加法器,给项目添加Struts支持,添加Struts支持后的项目,增加了:StrutsJAR包struts-config.xmlStruts标签库修改了web.xml,添加Struts支持前的项目,Struts是基于Servlet技术实现的框架,可以配置Struts配置文件的文件名,支持多个配置文件,拦截所有以“.do”结尾的请求,1,使用Struts实现加法器,实现业务类(模型-Model),2,使用Struts实现加法器,添加Struts组件,1、ActionForm,3,单击Add,给Form增加属性。,3,使用Struts实现加法器,添加Struts组件,2、Action配置Action属性,设置Path属性即访问该Action的路径,设置Form属性将Form和Action关联,设置Type属性即Action对应的Java类,设置Forwards属性用于配置转发的JSP页面,3,使用Struts实现加法器,添加Struts组件,2、Action-编写Action代码,publicActionForwardexecute(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)Calculatorcalc=newCalculator();/获得ActionForm的引用AddFormaddForm=(AddForm)form;doublemodel=calc.add(Double.parseDouble(addForm.getFirstNumber(),Double.parseDouble(addForm.getSecondNumber();/将计算结果存储到request中request.setAttribute(sum,model);/将请求转发到result出口指向的页面returnmapping.findForward(result);,y2ssh.sg.chp2.AddAction.java,从ActionForm中即可获得表单提交的参数,通过逻辑名引用页面逻辑名和页面对应关系在struts-config.xml中配置,3,使用Struts实现加法器,添加Struts组件,3.添加JSP页面根据Action的Forwords属性的设置,添加add.jsp和add_result.jsp两个页面,采用Struts提供的html:form标签,对应前面Action的path属性,对应前面Form的属性名,ActionForm保存在request或session中,3,使用Struts实现加法器,添加Struts组件,4、配置struts-config.xml,3,使用Struts实现加法器,调试运行,3,演示示例:基于Struts实现加法器,小结,使用Struts开发加法器过程中使用了哪些Struts组件?使用Struts开发步骤是什么?1、添加Struts支持2、开发业务逻辑类(模型,Model)3、开发ActionForm组件(视图组件,View)4、开发Action组件(控制组件,Controller)5、开发JSP页面6、修改配置文件struts-config.xml,配置ActionForm和Action7、调试运行,ActionForm组件,Action组件,Struts原理,回顾Servlet+JSP+JavaBean的编程模型,数据库,Servlet,JaveBean,JSP,Struts原理,自定义框架原理,ControllerServlet,AddAction,Calculator业务逻辑方法,视图,模型,控制器,Struts原理,StrutsWeb应用运行过程,控制器组件:ActionServlet,视图组件:JSP,模型组件:PostBiz,数据库,控制器组件:PostAction,控制器组件:AddAction,模型组件:PostDAO,视图组件:JSP,Struts原理,Struts原理,ActionServlet,JSP,JavaBean,数据库,AddAction,AddForm,ActionMapping,1,2,3,4,5,6,开发时只需关注:两个核心组件:ActionFormAddAction一个配置文件,1、页面提交的数据封装到ActionForm中2、通过请求路径查找Struts-config.xml中Action的配置,找到并调用对应的Action,Controller(控制器),Model(模型),View(视图),查找ActionMapping,找到正确的JSP页面,并转发,StrutsMVC小结,控制器组件ActionServlet由Struts提供:org.apache.struts.action.ActionServlet是一个Servlet,需要在web.xml中配置AddAction-ActionBean封装一类客户操作继承自org.apache.struts.action.Action,实现execute方法需要在struts-config.xml中配置,publicclassAddActionextendsActionpublicActionForwardexecute(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse)/TODO:在这里添加代码returnmapping.findForward(result);,StrutsMVC小结,视图组件ActionForm-FormBean封装页面提交的数据继承自org.apache.struts.action.ActionForm需要在struts-config.xml中配置与JSP的交互-从页面获得输入-发送数据到页面其他视图组件:JSP、JSTL、EL、自定义标签第4章介绍Struts标签,addForm.getFirstNumber();,request.setAttribute(data,data);,StrutsMVC小结,模型组件Struts对模型组件的实现没有任何限制一般为:UserBiz接口、UserBizImpl类、UserDAO接口、UserDAOJdbcImpl类。struts-config.xml配置FormBean和ActionBean服务器启动时,Struts装载struts-config.xml信息,小结,Struts是如何实现MVC的?,Struts深度历险,Struts执行顺序在AddForm和AddAction中增加调试代码运行程序查看控制台输出,ActionServlet调用AddForm的setter方法,然后调用AddAction的execute方法,最后页面将Form中的值显示出来,Struts深度历险,ActionForm和ActionMapping中有什么?Action中execute方法的参数列表设置断点,观察变量,publicActionForwardexecute(ActionMappingmapping,ActionFormform,HttpServletRequestrequest,HttpServletResponseresponse),AddAction.java,通过在excute方法中设置断点、观察变量,可以帮我们解决很多使用Struts中出现的问题,小结,结合下图,说说Struts的运行过程。,使用Struts开发“发布出租信息”,使用Struts开发“发布房屋信息”功能模型(Model)组件典型的三层结构面向接口编程开发顺序:DAOBizFormBeanJSPActionBeanstruts-config.xml调试,使用Struts开发“发布出租信息”,业务流程,1、如果未登录,转到login2、如果isConfirmed为false,转到confirm;否则,保存数据,转到userlist3、如果出错,转到error,使用Struts开发“发布出租信息”,实现代码,publicActionForwardexecute(.)/如果没有登录,转发到登录页面HttpSessionsession=request.getSession(false);USERuser=null;if(session!=null)user=(USER)session.getAttribute(user);if(user=null)returnmapping.findForward(login);/如果还没有确认,转到确认页面Stringconfirm=request.getParameter(confirm);if(null=confirm|!yes.equals(confirm)returnmapping.findForward(confirm);/调用业务逻辑方法,插入数据到数据库tryFwxxFormfwxxForm=(FwxxForm)form;FWXXfwxx=newFWXX();fwxx.setTitle(fwxxForm.getTitle();.biz.post(fwxx);request.setAttribute(msg,发布成功!);returnmapping.findForward(index);catch(Exceptione)request.setAttribute(msg,出错啦:+e.getMessage();returnmapping.findForward(error);,PostAction.java,使用Struts开发“发布出租信息”,配置文件,演示示例:使用Struts开发“发布出租信息”功能,总结,如何使用Struts开发登录功能?Action组件的作用是什么?ActionForm组件的作用是什么?struts-config.xml中都配置了哪些信息?回忆Struts架构图,讲述Struts是如何实现MVC模式的?,作业,课后作业必做教员备课时在此添加内容选做教员备课时在此添加内容提交时间:xxx提交形式:xxx预习作业背诵英文单词教员备课时在此添加内容,
展开阅读全文