1 / 34

第二章

第二章. Struts 原理(一). 回顾. 为什么要使用框架? 说出三个流行的 Java 框架。 什么是 MVC ? MVC 有什么用? Struts 框架有什么用?. 预习检查. 如何在 web.xml 中配置 Struts ? Struts 默认的配置文件名是什么? Struts 中有哪几类组件?. 本章任务. 使用 Struts 框架实现: 加法器 发布房屋信息. 本章目标. 理解 Struts 框架的工作原理 掌握使用 Struts 框架开发 Web 应用的基本步骤 熟悉 MyEclipse 对 Struts 开发的支持.

keren
Download Presentation

第二章

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第二章 Struts原理(一)

  2. 回顾 • 为什么要使用框架? • 说出三个流行的Java框架。 • 什么是MVC?MVC有什么用? • Struts框架有什么用?

  3. 预习检查 • 如何在web.xml中配置Struts? • Struts默认的配置文件名是什么? • Struts中有哪几类组件?

  4. 本章任务 • 使用Struts框架实现: • 加法器 • 发布房屋信息

  5. 本章目标 • 理解Struts框架的工作原理 • 掌握使用Struts框架开发Web应用的基本步骤 • 熟悉MyEclipse对Struts开发的支持

  6. Web框架事实标准 http://struts.apache.org Java EE主流技术趋势图 主流 Web 框架趋势图 : Web框架的事实标准

  7. 使用Struts实现加法器 • 使用 开发的4个步骤 给项目添加Struts支持 实现业务类 添加Struts组件 1、ActionForm 2、Action 3、添加jsp页面 4、配置struts-config.xml 调试运行 1 2 3 4 完成的项目

  8. 使用Struts实现加法器 新建Web项目 添加Struts支持 给项目添加Struts支持 1 在项目节点上单击右键 点选 MyEclipse  Add Struts Capabilities

  9. 使用Struts实现加法器 添加Struts支持前的项目 1 给项目添加Struts支持 Struts是基于Servlet技术实现的框架 • 增加了: • Struts JAR 包 • struts-config.xml • Struts标签库 • 修改了web.xml 可以配置Struts配置文件的文件名,支持多个配置文件 拦截所有以“.do”结尾的请求 添加Struts支持后的项目

  10. 使用Struts实现加法器 实现业务类(模型 - Model) 2

  11. 使用Struts实现加法器 2 填写Name属性 1 使用“Struts 1.2 Form,Action&JSP”向导新建组件 填写Form type属性 3 添加Struts组件 3 • 1、ActionForm 单击Add,给Form增加属性。

  12. 使用Struts实现加法器 添加Struts组件 3 2、Action 配置Action属性 设置Path属性 即访问该Action的路径 设置Type属性 即Action对应的Java类 设置Form属性 将Form和Action关联 设置Forwards属性 用于配置转发的JSP页面

  13. 使用Struts实现加法器 3 添加Struts组件 • 2、Action -- 编写Action代码 y2ssh.sg.chp2.AddAction.java public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { Calculator calc = new Calculator(); //获得ActionForm的引用 AddForm addForm = (AddForm) form; double model = calc.add( Double.parseDouble(addForm.getFirstNumber()), Double.parseDouble(addForm.getSecondNumber())); //将计算结果存储到request中 request.setAttribute("sum", model); //将请求转发到"result"出口指向的页面 return mapping.findForward("result"); } 从ActionForm中即可获得表单提交的参数 通过逻辑名引用页面 逻辑名和页面对应关系在struts-config.xml中配置

  14. 使用Struts实现加法器 /ch02/add.jsp <html:form action="/add" method="post"> 第一个数: <input type="text" name="firstNumber"/> 第二个数: <input type="text" name="secondNumber"/> <input type="submit" name="submitAdd" value="加"/> </html:form> /ch02/add_result.jsp 第一个数:${requestScope.addForm.firstNumber} 第二个数:${requestScope.addForm.secondNumber} 结果:${requestScope.sum} 3 添加Struts组件 • 3. 添加JSP页面 • 根据 Action 的 Forwords属性 • 的设置,添加add.jsp和 • add_result.jsp两个页面 采用Struts提供的html:form标签 对应前面Action 的path属性 对应前面Form 的属性名 ActionForm保存在request或session中

  15. 使用Struts实现加法器 add.jsp AddAction.java 3 添加Struts组件 • 4、配置struts-config.xml

  16. 使用Struts实现加法器 调试运行 3 演示示例:基于Struts实现加法器

  17. 小结 • 使用Struts开发加法器过程中使用了哪些Struts组件? • 使用Struts开发步骤是什么? 1、添加Struts支持 2、开发业务逻辑类(模型,Model) 3、开发ActionForm组件(视图组件,View) 4、开发Action组件(控制组件,Controller) 5、开发JSP页面 6、修改配置文件struts-config.xml,配置ActionForm和Action 7、调试运行 ActionForm组件 Action组件

  18. Struts原理 数据库 • 回顾Servlet+JSP+JavaBean的编程模型 Servlet JaveBean JSP

  19. Struts原理 add.jsp add_result.jsp • 自定义框架原理 视图 Controller Servlet AddAction 控制器 Calculator 业务逻辑方法 模型

  20. Struts原理 struts-config.xml • Struts Web应用运行过程 控制器组件: ActionServlet 模型组件: [Post]Biz 控制器组件: [Add]Action 控制器组件: [Post]Action 数据库 模型组件: [Post]DAO 视图组件: JSP 视图组件: JSP

  21. Struts原理 1、页面提交的数据封装到ActionForm中 2、通过请求路径查找Struts-config.xml中Action的配置,找到并调用对应的Action Controller (控制器) • Struts原理 1 ActionServlet 4 数据库 AddForm, ActionMapping 2 JavaBean [Add]Action 3 6 Model(模型) 5 JSP • 开发时只需关注: • ·两个核心组件: • ActionForm • [Add]Action • ·一个配置文件 查找ActionMapping,找到正确的JSP页面,并转发 View(视图)

  22. Struts MVC小结 • 控制器组件 • ActionServlet • 由Struts提供:org.apache.struts.action.ActionServlet • 是一个Servlet,需要在web.xml中配置 • [Add]Action -- Action Bean • 封装一类客户操作 • 继承自org.apache.struts.action.Action,实现execute方法 • 需要在struts-config.xml中配置 public class AddAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { // TODO: 在这里添加代码 return mapping.findForward("result"); } }

  23. Struts MVC小结 • 视图组件 • ActionForm -- Form Bean • 封装页面提交的数据 • 继承自org.apache.struts.action.ActionForm • 需要在struts-config.xml中配置 • 与JSP的交互 -- 从页面获得输入 -- 发送数据到页面 • 其他视图组件:JSP、JSTL、EL、自定义标签 • 第4章介绍Struts标签 addForm.getFirstNumber(); request.setAttribute("data", data);

  24. Struts MVC小结 • 模型组件 • Struts对模型组件的实现没有任何限制 • 一般为:[User]Biz接口、[User]BizImpl类、[User]DAO接口、[User]DAOJdbcImpl类。 • struts-config.xml • 配置Form Bean和Action Bean • 服务器启动时,Struts装载struts-config.xml信息 <struts-config> <form-beans> <form-bean name="addForm" type="y2ssh.sg.ch2.web.form.AddForm" /> </form-beans> <action-mappings> <action name="addForm" path="/add" scope="request" type="y2ssh.sg.ch2.web.action.AddAction"> <forward name="input" path="/add.jsp" /> <forward name="result" path="/add_result.jsp" /> </action> </action-mappings> </struts-config>

  25. 小结 • Struts是如何实现MVC的?

  26. Struts深度历险 • Struts执行顺序 • 在AddForm和AddAction中增加调试代码 • 运行程序查看控制台输出 ActionServlet调用AddForm的setter方法 然后调用AddAction 的execute方法 最后页面将Form中的值显示出来

  27. Struts深度历险 • ActionForm和ActionMapping中有什么? • Action中execute方法的参数列表 • 设置断点,观察变量 AddAction.java • public ActionForward execute( • ActionMapping mapping, • ActionForm form, • HttpServletRequest request, HttpServletResponse response) 通过在excute方法中设置断点、观察变量,可以帮我们解决很多使用Struts中出现的问题

  28. 小结 • 结合下图,说说Struts的运行过程。

  29. 使用Struts开发“发布出租信息” • 使用Struts开发“发布房屋信息”功能 • 模型(Model)组件 • 典型的三层结构 • 面向接口编程 • 开发顺序: DAO  Biz Form Bean JSP Action Bean struts-config.xml • 调试

  30. 使用Struts开发“发布出租信息” post.jsp confirm.jsp PostAction userlist login error 1、如果未登录,转到login 2、如果isConfirmed为false,转到confirm;否则,保存数据,转到userlist 3 、如果出错,转到error • 业务流程

  31. 使用Struts开发“发布出租信息” public ActionForward execute(...){ //如果没有登录,转发到登录页面 HttpSession session = request.getSession(false); USER user = null; if (session != null) { user = (USER) session.getAttribute("user"); } if(user == null){ return mapping.findForward("login"); } //如果还没有确认,转到确认页面 String confirm = request.getParameter("confirm"); if(null==confirm || !"yes".equals(confirm)){ return mapping.findForward("confirm"); } //调用业务逻辑方法,插入数据到数据库 try{ FwxxForm fwxxForm = (FwxxForm) form; FWXX fwxx = new FWXX(); fwxx.setTitle(fwxxForm.getTitle()); ... biz.post(fwxx); request.setAttribute("msg","发布成功!"); return mapping.findForward("index"); }catch(Exception e){ request.setAttribute("msg","出错啦:" + e.getMessage()); return mapping.findForward("error"); } } PostAction.java • 实现代码

  32. 使用Struts开发“发布出租信息” <form-beans> <form-bean name="fwxxForm" type="com.aptech.jb.entity.form.FwxxForm" /> </form-beans> <action-mappings> <action name="fwxxForm" path="/post" scope="request" type="com.aptech.jb.action.PostAction"> <forward name="affirm" path="/affirm.jsp" /> <forward name="userlist" path="/list.do?myrent=y" /> <forward name="login" path="/login.jsp" /> <forward name="error" path="/error.jsp" /> </action> </action-mappings> • 配置文件 演示示例:使用Struts开发“发布出租信息”功能

  33. 总结 • 如何使用Struts开发登录功能? • Action组件的作用是什么? • ActionForm组件的作用是什么? • struts-config.xml中都配置了哪些信息? • 回忆Struts架构图,讲述Struts是如何实现MVC模式的?

More Related