




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一次课:1、 案例:登陆案例(按照MVC模式进行设计,如何完成?)2、 下载Struts1.x官方文档()。最终版本Struts1.3.10。3、 控制器不是某一个类,而是一类组件。4、 辅助javabean。5、 使用request得值,还有页面转向 等 代码重复性高,所以找一个框架来完成这些工作。6、 为什么使用Struts7、 Struts是apache组织的一个开源项目,主要是采用Servlet和JSP技术来实现的。采用MVC模式。8、 先讲述一下Struts整体的流程。如下图:9、 手动配置Struts实践步骤: 搭建环境 建立ActionForm 建立Action 页面访问1)、搭建环境:l 导入jar包,使用其中相关的类。l 建立一个配置文件:struts-config.xml 作用:方便Struts用户使用位置:一般放在WEB-INF文件夹下l web.xml 注册struts中心控制器-ActionServlet注意事项:Struts配置文件的位置预先加载控制器2)、开发Forml 建立一个类,继承ActionForml 注册,修改配置文件struts-config.xmlname:变量名type:类全名3)、开发Actionl 建立一个类,继承Action覆盖execute方法:n 需要强制转换n 调用其它模块n 跳转,根据关键字l 注册,修改配置文件struts-config.xmlpath:指明调用者能通过中心控制器ActionServlet找到该Actiontype:指明该Action类的全名name:该Action引用的form的名称。10、流程分析图:问题:1)、谁来填充Form?什么时候填充?根据什么来填充?2)、ActionServlet怎么样把请求派发给Action?3)、Action运行完后怎样跳转?第二次课:1、 Struts工作原理,如下图:第一步:读取配置(初始化ModuleConfig对象)Struts框架总控制器(ActionServlet)是一个Servlet,在web.xml中配置成自动启动的Servlet。读取配置文件(struts-config.xml)的配置信息,为不同的Struts模块初始化相应的ModuleConfig对象。l ActionConfigl FormBeanConfigl ForwardConfigl MessageResourcesConfig第二步:发送请求用户提交表单或调用URL向Web应用程序提交一个请求,请求的数据用HTTP协议上传给Web服务器。问题:为什么不说传送到Struts中心控制器?第三步:填充Form(实例化、复位、填充数据、校验、保存)(*.do请求) 从ActionConfig中找出对应该请求的Action子类,如没有对应的Action,控制器直接转发给JSP或静态页面。如有对应的Action且这个Action有一个相对应的ActionForm,ActionForm被实例化并用HTTP请求的数据填充其属性,并且保存在ServletContext中(request或者session中),这样他们就可以被其它Action对象或JSP调用。问题:谁来填充Form?什么时候填充?根据什么来填充?第四步:派发请求控制器根据配置信息ActionConfig将请求派发到具体的Action,相应的FormBean一并传给这个Action的execute()方法。此时还在控制层。问题:根据哪个标签找个具体的Action?第五步:处理业务Action一般只包含一个execute方法,它负责执行相应的业务逻辑(调用其它业务模块)。完毕返回一个ActionForward对象,控制器通过该ActionForward对象来进行转发工作。第六步:返回响应Action根据业务处理的不同结果返回一个目标响应对象给总控制器,该目标响应对象对应一个具体的JSP页面或者另一个Action。注意:这次返回的不是具体的路径,而是一个Forward keyword。第七步:查找响应(翻译响应)总控制器根据业务功能Action返回的目标响应对象,找到对应的资源对象,通常是一个具体的JSP页面(也可以是一个Action)。第八步:响应用户目标响应对象将结果展现给用户目标响应对象(JSP)将结果页面展现给用户。问题:你觉得谁的功劳最大? 对比一下Struts和Servlet,区别是什么?在给大家回顾一下Struts的流程。注意:配置文件中的path前面需要加上“/”。 提交请求的时候需要注意“.do”。案例:增加对学生表进行增删改查的操作。第三次课:1、 Struts常用的组件:ActionServlet、Action Classes、ActionMapping(此处包括ActionForward)、ActionFrom Bean2、 Struts中的MVC: 模型(Model):本质上来说在Struts中Model是一个商业逻辑类,开发者实现商业逻辑。(很多的时候将ActionForm归结为M,但是官方推荐不是这样的) 视图(View):View是由与控制器Servlet配合工作的一整套JSP定制标签库构成,利用他们可以快速建立应用系统的界面。 控制器(Controller):前端控制器是一个Servlet,它将客户端请求转发到相应的后端控制器Action类。3、 ActionServlet(中心控制器)定义:继承自javax.servlet.http.HttpServlet类,是中心控制器(总控制器)。它提供一个中心位置来处理全部的终端请求。l 分析API中的ActionServlet。l config 删除config配置、更改config配置l converNull作用:接受请求、填充数据、派发请求、响应用户配置:参考web配置文件web.xml4、 ActionAction中的方法:execute 查看API问题1:Action何时实例化?启动时还是第一次访问时?有多少个实例? 当请求不同,但是指向同一个Action时呢?是否还继续实例化Action?Action的安全性:(可以参考API)l 注意不要用实例变量或者类变量共享只是针对某个请求的数据l 注意资源操作的同步性问题2:execute方法被调用几次?5、 ActionMapping每一个元素都与类org.apache.struts.action.ActionMapping的一个实例对应。包括name、path、forwards等。可以通过execute中的参数ActionMapping得到一些信息,比如name、type、forward。问题:能get,可不可以set?第四次课:6、 ActionForward(导航器)ActionForward对象是配置对象。这些配置对象拥有第一无二的标识以允许它们按照name属性等来检索。ActionForward对象封装了向前进的URL路径且被请求处理器用于识别目标视图。l name:逻辑名称l path:页面或者模块访问路径。其它属性:l redirect问题:1)、forward()方法和sendRedirect()方法有什么区别? 2)、如果要跳转到一个绝对的路径该怎么办?比如:雅虎网站:总结:如果当redirect的值为false时,使用RequestDispatcher.forward()方法跳转(容器内跳转,请求转发)。path写相对于当前的应用。 如果当为true时,使用HttpServletResponse.sendRedirect()方法跳转(容器外跳转,重新发出请求)。path写绝对路径。7、 ActionForm工作原理处理ActionForm的一般步骤:1) 检查Action的映射,确定Action中已经配置了对ActionForm的映射2) 根据name属性,查找的配置信息3) 检查Action的的使用范围,确定在此范围下(request、session),是否已经有此的实例。4) 假如当前范围下,已经存在了此的实例,而且对当前请求来说,是同一种类型的话,那么就重用。5) 否则,就重新构建一个的实例(调用构造方法),并且保存在一定作用范围。6) 的reset()方法被调用7) 调用对应的setter方法,对状态属性赋值8) 如果validate的属性设置为true,那么就调用的validate()方法。9) 如果validate()没有返回任何错误,控制器将ActionForm作为参数,传给Action实例的execute()方法并执行。第五次课:续上:ActionForm流程图:通过代码对流程图进行测试:l 在ActionForm中加入构造方法l 在ActionForm中加入reset()方法 问题:为什么没有HttpServletResponse参数?l 在setter方法中加入打印语句 问题:如果页面上没有与ActionForm中的属性匹配上,那么还调用setXXX()方法么?注意:要是在ActionForm中不添加没有参数的构造函数可以吗?问题:当第二次调用的时候?构造函数还会被实例化么?分析1:是否会执行scope.setAttribute()这个方法: 从过程去分析:n 使用监听器HttpSessionAttributeListener和ServletRequestAttributeListener从而可以推出:scope的缺省值为session 从结果去分析:n 参数form和存储在scope中的form是同一个Form分析2:setter方法到底是如何调用的?是表单中的名字和Form中的名字一样就可以匹配么?结论:调用setter方法,实质上是对应的标准set方法,比如loginName,去找匹配的setLoginName(),而不是Form中对应的loginName的属性。validate属性:当在配置文件中不声明时,默认为true。第六次课:Struts中的配置文件:web.xml和struts-config.xml介绍struts-config.xml配置文件:1、元素:元素帮助进行框架内部的流程控制,可以将请求URI映射到Action类,将Action对象与ActionForm对象相关联。元素内可以定义多个子元素。2、元素 所描述的是特定的请求路径和一个响应的Action类之间的映射关系。有以下属性: attribute:设置和Action关联的form bean在request/session内的属性key,通过request/session的getAttribute(attribute)方法放回该form bean的实例。总结:attribute用来存取form关键字,缺省值与name一样。 input:当表单验证失败时将请求转发的URL。总结:input如果表单验证不通过则跳转到该值所代表的目标模块。一般结合validate=true来使用。问题:如果validate不配置,那么将发生什么问题?3、元素元素用于定义在整个应用程序内的全局转发。在该元素内可以定义多个子元素。4、Struts国际化需要使用bean:message标签来实现该功能,并且需要资源文件的支持,这里由于需要完成多个语言的现实,因此要建立多个资源文件。同时要求资源文件命名必须规范。资源文件的命名规则:以原有资源文件为基准,在其主文件后+_语言种类编码例如:ApplicationResources_zh_CN.properties在资源文件中加入所要现实的内容,根据资源文件支持的语言不通,需要使用不同的内容进行配置。在Struts配置文件中注册。修改登录页面:将内容通过bean:message标签进行显示5、异常处理:配置异常(在struts-config.xml文件中定义)定制异常有两种:全局异常(Global Exception)和 局部异常(Local Exception)1) 全局异常定义方法:2) 局部异常定义方法:Action异常处理: 怎样使用异常:1、 配置可以指明path、type、key path:出现异常后的跳转页面 key:异常信息的键,对应的值在资源文件中 type:所要处理的异常2、 在相应Action中的execute方法抛出异常3、 在异常处理页面中(path所指页面)使用html:errors标签显示提示信息全局异常和全局跳转那类比一下。动态Form:DynaActionFormStruts解决重复提交问题:一、运行机制:服务器端在处理到达的请求之前,会将请求中包含的令牌值与保存在当前用户会话中的令牌值进行比较,看是否匹配。在处理完该请求后,且在答复发送给客户端之前,将会产生一个新的令牌,该令牌除传给客户端以外,也会将用户会话中保存的旧的令牌进行替换。这样如果用户回退到刚才的提交页面并再次提交的话,客户端传过来的令牌就和服务器端的令牌不一致,从而有效地防止了重复提交的发生。总结如下:第一:你需要在请求中有这个令牌值,请求中的令牌值如何保存,其实就和我们平时在页面中保存一些信息是一样的,通过隐藏字段来保存,保存的形式如: inpu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 考点攻克人教版8年级数学上册《分式》专项练习试卷(解析版含答案)
- 教育学的创新研究及实践
- 职位专业知识与技能培训课件
- 2026届河北省唐山市遵化一中化学高一上期中学业质量监测试题含解析
- 职业骗婚培训知识课件
- 职业预防知识培训课件
- 2025年皮肤科扁平疣自身接种传播预防措施模拟测验题(含答案及解析)
- 金属热处理工操作考核试卷及答案
- 水上救生员技术考核试卷及答案
- 邮政行业职业技能鉴定能力检测试卷含完整答案详解(名师系列)
- 科学版(2024)一年级全一册体育与健康全册教案(表格式)
- 二零二五年度汽车销售商与汽车电子设备供应商合作协议范本
- 2025年中小学教师师德师风知识考试试题及答案
- 2025版小学语文新课程标准
- 电液伺服控制阀和比例阀课件
- 教育培训机构保密协议范本
- 《西方史学史》课件第一章
- 弹性力学徐芝纶答案
- 中学英语校本课程教材(Word)
- 甲醇溶液浓度密度对照表
- 维生系统专项施工方案(可编辑)
评论
0/150
提交评论