Struts教案(1-3课时).doc_第1页
Struts教案(1-3课时).doc_第2页
Struts教案(1-3课时).doc_第3页
Struts教案(1-3课时).doc_第4页
Struts教案(1-3课时).doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大连英极计算机职业培训学校英极培训学校教案课程名称Struts 1.2 技术依据教材精通Struts本日提要1. JSP作用域 2. JSP内置对象 3. EL表达式简介4. EL运算符 5. EL变量 6. EL保留字 7. EL隐含对象 8. JSTL标签简介与安装 9. JSTL核心标签库课时3小时所需设备,资料Eclipse、Tomcat、精通Struts知识点回顾与强化检查(5分钟)1. EL表达式范围对象是哪四个? (1分钟)2. 使用EL表达式输出数据$requestScope.rs-list为什么错误?(1分钟)3. 变量为什么$port无法输出?(1分钟)4. ServletConfig对应JSP内置对象的哪一个?(1分钟)5. 既然有EL表达式为什么还要使用标签?(1分钟)第一节(45分钟)1.教学任务A 网络MVC模型和模型1模型2结构 (10分钟)B Struts MVC模型介绍 (10分钟)C 搭建Struts工程(10分钟)D 编写Struts 查询用户信息的例子(15分钟)2教学难点 B、C、D3,教学内容A 网络MVC模型和模型1模型2结构 MVC 是一种设计模式,它强制性地把应用程序的输入、处理和输出分开。MVC 把应用程序分成三个核心模块:模型、视图和控制器。 JSP模型1 JSP模型2 SUN 公司制定的JSP Model1 和JSP Model2 规范。JSP Model1体系中,JSP页面负责响应用户请求并将处理结果返回用户,JSP既要负责业务流程控制,又要负责提供表示层数据,同时充当视图和控制器,未能实现这两个模块之间的独立和分离。 JSP Model1和JSP Model2的本质区别在于处理用户请求的位置不同。JSP Model2体系中,Servlet充当控制器的角色,负责处理用户请求,创建 JSP页面需要使用的JavaBean对象,根据用户请求选择合适的 JSP页返回给用户。在 JSP页内没有处理逻辑,它仅负责检索原先由Servlet创建的JavaBean对象,从Servlet中提取动态内容插入到静态模板。 B. Struts MVC模型介绍Struts实现 MVC的机制 Struts 实质上就是在 JSP Model2 的基础上实现的一个 MVC 框架。在 Struts 框架中,模型由实现业务逻辑的 JavaBean 或 EJB 组件构成,控制器由 ActionServlet 和 Action 来实现,视图由一组JSP文件构成。 1 视图 视图就是一组JSP文件。在这些JSP文件中没有业务逻辑,也没有模型信息,只有标签,这些标签可以是标准的 JSP标签或客户化标签,如 Struts标签库中的标签。 通常把Struts框架中的ActionForm Bean也划分到视图模型中。ActionForm Bean也是一种 JavaBean,除了具有一些 JavaBean的常规方法,还包含一些特殊的方法,用于验证HTML表单数据以及将其属性重新设置为默认值。2 控制器 控制器由ActionServlet类和Action类来实现。ActionServlet类是 Struts框架中的核心组件,ActionServlet类继承了javax.servlet.http.HttpServlet类,它主要负责接收 HTTP请求,根据配置文件 struts-config.xml,把请求转发给适当的 Action对象,如该Action对象不存在,ActionServlet会先创建这个Action对象。 Action类负责调用模型的方法,更新模型的状态,并帮助控制应用程序的流程。大型应用中,Action充当用户请求和业务逻辑之间的适配器(Adaptor) ,其功能就是将请求与业务逻辑分开,它根据用户请求调用相关的业务逻辑组件(JavaBean或 EJB), Action侧重于控制应用程序流程,而不是实现应用程序的逻辑。 当ActionServlet 控制器收到用户请求后,把请求转发到一个Action实例,如果这个实例不存在,控制器会创建它,然后调用这个Action实例的execute()方法,该方法返回ActionForward对象,它封装了把用户请求再转发给其他 Web组件的信息,用户定义自己的Action类,即Action基类的子类,必须覆盖execute()方法,在基类中返回null。 3 模型模型表示应用程序的状态和业务逻辑。通常是 JavaBean或 EJB 组件。 Struts的配置文件struts-config.xml struts-config.xml 描述用户请求路径和Action映射关系。在该配置文件中,每一个Action的映射信息都通过一个元素来配置。在内存中,每一个元素都对应一个org.apache.struts.action.ActionMapping类的实例。C. 搭建Struts工程1 到Apache网站下载Struts 1.2项目文件。解压缩之后内部doc文件夹中放置的API文档,lib文件夹之下放置的是Struts1.2所需要的库文件。2 在Eclipse中创建动态Web项目,选择Tomcat服务器。3 在项目文件夹之下的WEB-INF自文件夹之内放置Struts库文件4 配置web.xml文件 action org.apache.struts.action.ActionServlet config /WEB-INF/struts-config.xml debug 3 detail 3 0 action *.do 5 在WEB-INF下面创建struts-config.xml文件D. 编写Struts 查询用户信息的例子1 完成下面的JSP查询页面2 编写SearchForm类,继承ActionForm超类,封装表单参数,配置xml文件3 编写SearchAction类,继承Action超类,配置xml文件4 编写数据库查询DAO类,返回结果集。5 Action中绑定结果集,并且跳转JSP页面6 在JSP页面中显示查询结果,如图:第二节(50分钟)1.教学目标 A Struts配置文件 (25分钟)B ActionForm类生命周期与方法(15分钟)C Struts表单转码 (10分钟)2.教学难点 A,B,C3.教学内容A Struts配置文件 Struts应用采用两个基于XML的配置文件来配置,分别是web.xml和struts-cofig.xml文件.web.xml文件是配置所有 web应用的而struts-config.xml文件是struts专用的配置文件,事实上也是可以根据需要给这个配置文件起其他名称的. struts-config.xml文件在struts应用启动的时候会把Struts配置文件信息读取到内存中,并把它们存放在config包中相关的JavaBean类的实例中。包中的每一 个类都和struts配置文件中特定的配置元素对应,ModuleConfig在Struts框架中扮演了十分重要的角色,它是整个config包的核心,在Struts运行时来存放整个应用的配置信息.如果有多个子应用都会有一个ModuleConfig对象,它和Struts文件根元素的对应,根元素中包含等元素。1 子元素 它包含及,它的作用是图形化其父元素,的内容是一个16x16的图像文件,而的内容是一个32x32的图像文件。如下例子: /images/smalllogo.gif /images/largelogo.gif2 子元素 它用来设置它的父元素中设定的JavaBean的属性值,它一般用在指定的GenericDataSource 属性,扩展的ActionMappings以及扩展的 global forwards例如: 3 配置JDBC数据源其配置形式如下: 4 配置FormBean 用来定义将要绑定到Action的FormBean的实例。例如: 5 配置全局转发 全局转发可以定义几个子元素,struts首先会在元素中找对应的。除了name及path属性之外,还有一个redirect属性,如果redirect设为true的时候,则用HttpServletResponse.sendRedirect()方法,否则RequestDispatcher.forward()方法,缺省为false。 注:如果为true,则用HttpServletResponse.sendRedirect()方法,此时存储在原来的HttpServletRequest中的值将会丢失。例子: 6 配置 它可以定义几个子元素,它主要是定义Action实例到ActionServlet类中,例子如下: 属性及其描述信息如下: Path 在浏览器的URL中输入的字符(必须的) Type 连结到本映射的Action的全称(可选的) Name 与本操作关联的Action Bean在中定义name名(可选的) Scope 指定ActionForm Bean的作用域(session和request),缺省为session。(可选的) Input 当Bean发生t误时返回的控制。(可选的) ClassName 指定一个调用这个Action类的ActionMapping类的全名。缺省用 org.apache.struts.action.ActionMapping,(可选的) Forward 指定处理相应请求所对应的JSP页面。(可选的) Include 如果没有forward的时候,它起forward的作用。(可选的) Validate 若为true,则会调用ActionForm的validate()方法,否则不调用,缺省为true。(可选的)7 配置RequestProcessor 在struts-config.xml文件中用子元素来定义RequestProcessor,例如:元素属性及其描述信息如下: processorClass 指定自定义的RequestProcessor类的全名 BufferSize 指定用来下载所用的缓存大小。缺省是4096字节。 contentType 定义response文本类型,缺省是text/html Debug 定义当前系统的除错级别,缺省是0 Locale 如果是true,则在用户的session中存放Locale对象,缺省为true maxFileSize 指定下载文件最大的大小。缺省是250M multipartClass 指定去代替org.apache.struts.upload.DiskMultipartRequestHandler类的 类的全名。 Nocache 如果是true,则会关闭每个response的缓存功能。缺省是false TempDir 指定上载文件所用的临时目录。缺省值由容器决定8 配置Message Resources在struts-config.xml文件中用元素来定义消息资源。元素属性及其描述信息如下: Parameter 给定资源文件全名 ClassName 定义处理消息资源的类名的全名,缺省是 org.apache.struts.config.MessageResourcesConfig Factory 定义MessageResourcesFactory类的全名,缺省是 perty.MessageResourcesFacotry Key 定义绑定在这个资源包中的ServletContext的属性主键,缺省值是Action.MESSAGES_KEY. Null 如果为true,则找不到消息key时,则返回null,缺省是true.B. ActionForm类生命周期与方法1 首先控制器接受请求,从request或session范围中查找关联的ActionForm,如果不存在就创建它,并调用reset()方法,然后将其保存到request或session范围中。2 把用户输入的表单数据封装到ActionForm中。3 如果action的validate属性为true,则调用ActionForm的validate()方法。4 如果验证失败,则讲控制转发给action的input属性指定的web组件,其actionForm实例依然保存在request或session中;如果验证成功,则调用action的execute()方法,将actionForm传递给execute方法,最后将请求转发给其他web组件,actionForm依然存在于request或session中。C. Struts表单转码Struts中需要对表单数据转码,通常转码的过程放在ActionForm中完成。因为ActionForm属于视图层,因此需要负责对表单转码,如果转码放到Action中则造成视图与逻辑任务混杂不清晰。转码应该放在ActionForm中的reset方法内,因为该方法先于赋值方法执行。可以写成request.setCharacterEncoding(gb2312);ActionForm里面出现的所有异常应当全部捕获,不可以上抛异常。第三节(50分钟)1.教学目标 A Struts 控制器组件和运行原理 B Action类以及内置Action类2,教学难点 A、B3, 教学内容AStruts 控制器组件和运行原理 Struts的控制器组件主要完成以下任务: l 接收用户请求 l 根据用户请求,调用合适的模型组件来执行相应的业务逻辑 l 获取业务逻辑执行结果 l 根据当前状态以及业务逻辑执行结果,选择合适的视图组件返回给用户1、 ActionServlet类org.apache.struts.action.ActionServlet 类是 Struts框架的核心控制器组件,所有的用户请求都是先由 ActionServlet 来处理,然后再由ActionServlet把请求转发给其他组件,Struts 框架只允许在一个应用中配置一个ActionServlet类,在应用的生命周期中,仅创建ActionServlet类的一个实例,这个ActionServlet实例可以同时响应多个用户请求。 ActionServlet的 process()方法 当 ActionServlet 实例接收到 HTTP 请求后,在 doGet()或 doPost()方法中都会调用process()方法来处理请求,ActionServlet的 process()方法代码: selectModule()方法选择负责处理当前请求的子应用模块,然后把子应用模块相关的ModuleConfig和MessageResources对象存储到 request范围中,这使得框架的其余组件可以方便地从request范围中读取这些对象,从而获取应用配置信息和消息资源。process()方法完成实际的预处理请求操作。 扩展 ActionServlet方法 从Struts1.1开始,多数功能被移到 org.apache.struts.action.RequestProcessor类中,以便减轻ActionServlet类的控制负担。如实际应用确实要扩展ActionServlet类,则可以创建一个 ActionServlet 类的子类,然后在 web.xml 文件中配置这个客户化ActionServlet 类,覆盖 init()方法时,一定注意在 init()中加上 super.init(),保证ActionServlet默认的初始化操作正确执行。web.xml配置: 2、 RequestProcessor 类 对于多应用模块的Struts应用,每个子应用模块都有各自的RequestProcessor 实例。在ActionServlet 的 process()方法中,一旦选择了正确的子应用模块,就会调用子应用模块的RequestProcessor 实例的 process()方法来处理请求。在 ActionServlet 调用这个方法时,就会把当前的request和response 对象传给它。 Struts 框架只允许应用中存在一个 ActionServlet 类,但是可以存在多个客户化的RequestProcessor 类,每个子应用模块都可以拥有单独的 RequestProcessor 类。 B. Action类以及内置Action类Action 类是用户请求和业务逻辑之间的桥梁,每个 Action 充当客户的业务代理,在RequestPorcess 类 预 处 理 请 求 时 , 创 建 了 Action 的 实 例 后 , 就 调 用 自 身 的processActionPerform()方法,该方法再调用 Action类的 execute()方法。每个Action类只会被Struts创建唯一一个对象,例如浏览器提交表单请求Struts的时候,Struts只会创建一次这个Action对象,然后便把这个Action对象放入HashMap中。其它浏览器在访问的时候Struts就不会再重新创建这个Action对象,直接从HashMap中取出Action对象,调用execute方法。既然Action类是“单例”类,就会存在多浏览并发访问引起的多线程共享访问Action对象,因此Action类就必须被Struts设计成非线程安全,这样才能可以让多个线程共享使用。由上可知,在Action中只能使用局部变量,否则数据就会不同步。Struts提供了一些现成的Action类,常用的Action类有:l org.apache.struts.actions.ForwardAction l org.apache.struts.actions.IncludeActionl org.apache.struts.actions.DispatchActionl org.apache.struts.actions.LookupDispatchActionl org.apache.struts.actions.SwitchAction一、 org.apache.struts.actions.ForwardAction 类在 JSP网页中,尽管可以直接通过标签把请求转发给其他 Web组件,但是Struts框架提倡先把请求转发给控制器,再由控制器来负责请求转发。由控制器来负责请求转发有以下优点: 控制器具有预处理请求功能,它能够选择正确的子应用模块来处理请求,并且把子应用模块的ModuleConfig和 MessageResources对象存放在request范围内,这样请求转发的目标Web组件就可以正常地访问ModuleConfig和MessageResources对象。 如JSP页面中含有HTML表单,控制器能够创建和这个表单对应的ActionForm对象,把用户输入表单数据组装到 ActionForm 中,还可以根据需要对表单进行验证,控制器把ActionForm对象存放在request或session范围内,这样请求转发的目标Web组件也能访问ActionForm。JSP网页之间直接相互转发违背了MVC的分层控制,ForwardAction类专门用于转发请求,不执行任何其他业务操作。二、 org.apache.struts.actions.IncludeAction 类同样,使用IncludeAction 类来代替JSP页面中的,可以充分利用Struts控制器的预处理功能。三、 org.apache.struts.actions.DispatchAction 类通常,在一个 Action 类中只能完成一种业务操作,如果希望在同一个 Action 类中完成一组相关的业务操作,可以使用 DispatchAction类。 配置此类时需要把 parameter 属性设置为method:当用户请求访问DispatchAction 是,应该提供method请求参数:http:/localhost:8088/netstore/action/cart?method=addItem&id=2 四、 org.apache.struts.actions.LookupDispatchAction 类此类是 DispatchAction 类的子类,在 LookupDispatchAction 类中也可以定义多个业务方法,通常此类用于在一个表单中有多个提交按钮,而这些按钮又有一个共同的名字

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论