《Struts基础开发》PPT课件.ppt_第1页
《Struts基础开发》PPT课件.ppt_第2页
《Struts基础开发》PPT课件.ppt_第3页
《Struts基础开发》PPT课件.ppt_第4页
《Struts基础开发》PPT课件.ppt_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

第12章,Struts2基础开发,本课教学内容,Struts2简介Struts2的基本原理Struts2的基本使用方法其他问题,Struts2简介,大多数框架的版本改进,一般是在原有的基础上增加功能或者进行优化,但是,Struts2和Struts1相比,不简单是这样,无论从流程还是结构上,都有很多革命性的改进,Struts2简介,Struts2并不是新发布的新框架,而是在另一个非常流行的框架:WebWork基础上发展起来的。因此,可以说,Struts2并没有继承Struts1的特点,反而和WebWork非常类似;换句话说,Struts2是衍生自WebWork,而不是Struts1。正是由于这个原因,Struts2吸引了众多的WebWork开发人员来进行使用。并且由于Struts2是WebWork的升级,在各种功能和性能方面都有很好的保证,吸收了Struts1和WebWork两者的优势,因此也是一个非常优秀的框架,Struts2简介,Struts2和Struts1具有一些不同点,主要集中在以下方面:Action类的编写:在Struts1中,Action类一般继承基类org.apache.struts.action.Action。而在Struts2中,Action类可以实现一个Action接口,也可实现其他接口,也可以继承ActionSupport基类,甚至不需要实现任何接口,只编写execute函数即可,Struts2简介,Action的运行模式:Struts1中,Action是单态的,系统实例化一个对象来处理多个请求,为每个请求分配一个线程,在该线程中运行execute函数。因此,在开发时需要特别小心,Action资源必须是线程安全的或同步的。但是,Struts2中,Action为每一个请求产生一个实例,不会产生线程安全问题。但是,系统又能够及时回收垃圾资源,不会有废弃空间的问题,Struts2简介,对Web容器的依赖:Struts1中,Action的execute函数内,传入了ServletAPI:HttpServletRequest和HttpServletResponse,使得测试必须依赖于Web容器。但是,在Struts2中,可以不传入HttpServletRequest和HttpServletResponse,但是也可以访问它们,因此,Action不依赖于容器,允许Action脱离容器单独被测试,Struts2简介,对表单数据的封装:Struts1中,使用ActionForm来封装表单数据,所有的ActionForm必须继承org.apache.strtus.action.ActionForm,有可能造成ActionForm类和VO类重复编码。但是,Struts2中,直接在Action中编写表单数据相对应的属性,可以不用编写ActionForm,而这些属性又可以通过Web页面上的标签访问,Struts2的基本原理,环境配置要编写基于Struts2的应用,需要导入一些支持的包,也就是Struts2开发包。这些开发包可以到网上去下载。下载地址为://,Struts2的基本原理,在Struts2中,常用的的组件有:FilterDispatcher过滤器、JSP、Action、JavaBean、配置文件等。对于一个动作,其执行步骤为:用户输入,JSP表单的请求被FilterDispatcher截获,Struts2的基本原理,FilterDispatcher将表单信息转交给Action,并封装在Action内Action来调用JavaBean(DAO)Action返回要跳转到的JSP页面逻辑名称给框架框架根据逻辑名称找到相应的网页地址,进行跳转,结果在JSP上显示,Struts2的基本使用方法,导入Struts2将如下的几个包拷贝到项目中WEB-INF中的lib目录下:,编写JSP,*具体代码示例详见课本,编写并配置ActionForm,在Struts1.x中,必须要单独建立一个ActionForm类,而在Struts2中ActionForm和Action已经合二为一了。因此,只需要将和表单元素同名的属性编写到Action内。Action只是一个普通的类。在包prj12内新建一个类:LoginAction.java,编写并配置ActionForm,LoginAction没有继承任何类,它有属性account和password,与login.jsp中的表单元素account与password必须同名,编写并配置Action,Struts2中,既然Action和ActionForm合二为一,Action是负责业务逻辑的,所以必须编写业务逻辑代码。下面来加强Action的功能。要能够处理业务逻辑,必须要满足一个规范,那就是:编写execute方法来处理业务逻辑。注意,不是重写,是编写。并且该方法不需要有任何的参数,编写并配置Action,编写execute方法,是因为Action接收数据后,由框架自动调用它的execute方法,该方法的运行,在底层通过反射机制进行。execute的格式为:publicStringexecute()该函数返回一个字符串,表示的是目标页面的虚拟名称,编写并配置Action,配置文件/loginSuccess.jsp/loginFail.jsp,编写并配置Action,从以上配置可以看出,在标签中可以有多个,名称任意,但不要重名;extends属性表示继承一个默认的配置文件struts-default,一般都继承于它,可以不用修改。标签中的name属性表示Action被提交时的路径,class指定动作类路径,测试,*具体代码测试效果图见课本,其他问题,程序运行流程login.jsp中的表单提交到的地址为/Prj12/login.action,被org.apache.struts2.dispatcher.FilterDispatcher截获,框架把提交的地址的项目名称和扩展名.action去掉,变为/login,读取配置文件,其他问题,在配置文件中,根据/login,找到配置文件中的action对应的类,从而得到要提交到的类LoginAction;在LoginAction中,实例化对象,将account和password封装进去,其他问题,框架调用LoginAction的execute方法,处理后返回一个字符串框架根据字符串内容,在配置文件中找到相应的页面,并跳转,其他问题,Action生命周期框架先实例化LoginAction对象,然后调用LoginAction的setAccount函数,封装表单数据,然后调用execute函数,进行处理在第二次提交时,LoginAction会重新实例化,说明每一个LoginAction对象都服务一个请求,这和Servlet的原理是不一样的,其他问题,在Action中访问Web对象获得request对象的方法是:importorg.apache.struts2.ServletActionContext;publicStringexecute()throwsExceptionHttpServletRequestrequest=ServletActionContext.getRequest();/使用request,其他问题,在Action中访问Web对象获得response对象的方法是:importorg.apache.struts2.ServletActionContext;publicStringexecute()throwsExceptionHttpServletResponseresponse=ServletActionContext.getResponse();/使用response,其他问题,在Action中访问Web对象获得application对象的方法是:importorg.apache.struts2.ServletActionContext;publicStringexecute()throwsExceptionServletContextapplication=ServletActionContext.getServletContext();/使用application,其他问题,在Action中访问Web对象获得session对象的方法是:importcom.opensymphony.xwork2.ActionContext;publicStringexecute()throwsExceptionMapsession=ActionContext.getContext().g

温馨提示

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

评论

0/150

提交评论