Struts2最全面总结.doc_第1页
Struts2最全面总结.doc_第2页
Struts2最全面总结.doc_第3页
Struts2最全面总结.doc_第4页
Struts2最全面总结.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

2012年5月13日22:13:12Struts2总结fdteam captain陈玉龙1、Struts2的起源和背景Struts 2以WebWork优秀的设计思想为核心,吸收了Struts 1的部分优点,建立了一个兼容WebWork和Struts 1的MVC框架。2、Struts 2的项目的编写在编写一个Struts 2的项目之前,有三个步骤需要完成:第一步要做的就是导包,导包的方式有两种,这里不详细回顾;第二步是在web.xml中配置Struts2的过滤器: struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /* 第三步src目录下建立 struts.xml /xxx.jsp在配置struts.xml的时候需要注意一点,如果网络不好或者没有网络,则需要导入struts-2.0.dtd,一般放在lib目录下,然后在配置的时候,填入绝对路径或者相对路径都行。struts.xml文件中,一个package可以放多个action,每个action中又可以放多个result。3、Struts2中的标签Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求。Struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于任何表现层技术,也就是说strtus2提供了大部分标签,可以在各种表现技术中使用。包括最常用的jsp页面,也可以说Velocity和FreeMarker等模板技术中的使用。在JSP页面中,如果要用到Struts2的标签,首先要声明引入标签库: , s可以随便取,便于在用标签时调用。常用的标签:1、 property标签,用于输出特定的值。如。2、 iterator标签,主要用于遍历显示集合,集合包含List、Set和数组,在项目作业中用来在表格中显示所有学生信息。3、if else语句的使用:2321都不等4、URL标签修改这是一段在项目中用到的URL标签,主用作用的页面跳转和值传递。5、data标签日期标签的作用是按照format的格式去输出日期数据。6、表单标签,这个是最常用的标签,种类很多,有form、textfield、textarea、password、file、select、checkbox等,在项目中也多处用到。4、struts2的传值后台取前台的值,主要由三种方法,举例说明:以登陆界面为例,登陆表单login.jsp: 用户名: 密 码: 1、在Action类中定义表单属性,两者属性名称必须一致。提供setter,getter方法。即可接收到表单传过来的参数。这种接收参数的方法,方便简单,但是结构性不是很好,且当表单传递来的参数很多的时候,整个Action类中充斥着setter,getter方法,程序结构不是很美观。2、把表单传递过来的参数封装成一个类,然后调用其中的属性。然后再在Action方法中,定义该类的对象就可以,前台传递的值都封装在这个对象里,在通过get方法就可以得到值。用这种方法需要在前台进行一些修改,标签的name需要改成对象.属性这样的格式。如用户名:。这种取值形式在struts开发中是很常用的一种方法,建议熟练掌握。3、 通过实现ModelDriven接口接收表单数据。首先Action类必须实现ModelDriven接口,同样把表单传来的数据封装起来,Action类中必须实例化该对象,并且要重写getModel()方法。传递的值同意封装在对象中。从后台传值到前台,如果action中有set方法,只需要将值set,然后在跳转的前台通过name匹配直接拿就行。5、struts2的国际化 每种框价都会有国际化的支持,struts2的国际化大致上分为页面的国际化,Action的国际化以及xml的国际化首先在struts.xml中加入资源文件的命名格式: 名称_语言代码_国家代码. Properties如果创建中文和英语国际化,那么资源文件名称为messageResource_zh_CN.properties和messageResource_en_US.properties在项目中,我们主要用的是jsp页面的国际化:通过使用标签输出国际化label.helloWorld为资源文件中定义的key在messageResource_en_US.properties加入以下内容label.hello=hello 0label.helloWorld=hello,world在messageResource_zh_CN.properties加入以下内容label.hello=你好 0label.helloWorld=你好,世界(1). 上面两个都为输出一个hello word的两种表示。显示一个文本框,文本框的标题进行国际化。(2). 使用标签指定从某个特定的资源文件中取数据 指定在从messageResource取资源(3). callan使用带参数的资源.可以替换label.hello=hello 0中的0第三种没有怎么用到过,在项目中,主要是用到这种形式。6、struts2中的校验框架要实现校验,需要配置xml资源文件,资源文件的命名规则是:ActionMassage-方法-validation.xml。struts校验框架的执行原理是,执到action时,不执行里面的方法,转而会去执行校验器,执行完后返回执行action里的方法。校验器分为字段校验和非字段校验,一般采用字段校验,较直观也好理解。以下是字段校验的配置:给action的字段配置校验器,比如说login.java里有username和pwd字段,那么配置login-validation.xml进行两个字段的校验: /要校验的字段名(密码校验把此改为pwd即可) /不许为空 no null/错误提示 在前台可以用标签指定校验信息显示的位置,也可以采用默认的显示,前者的标签是。7、struts2中action访问servlet API在struts2框架中,Action与Servlet Api相互分离,这种底耦合性给开发带来了便利。但是很多时候,Action不访问Servlet API,将不能够实现业务逻辑处理。例如,得到Session和Application等。struts2为我们提供了两种途径来访问ServletAPI,一种是间接访问;还有一种是直接访问。其中直接访问有区分为IOC和非IOC两种方式1、间接访问 Action运行期间所用到的数据都保存在ActionContext中,例如session会话,客户端提交的参数等信息。所以ActionContext是Action的一个上下文对象。 2、直接访问 (1)IOC方式 在struts2框架中,通过IOC方式访问ServletAPI,就必须实现Action中相应的接口,这些接口是:org.apache.struts2.util.ServletContextAerceptor.ServletRequestAerceptor.ServletResponseAerceptor.ServletSessionAware你可以实现其中一个接口,也可以全部都实现,根据具体情况而定。(2)非IOC方式在struts2中,提供了ServletActionContext类来获得ServletAPI,ServletActionContext类为我们提供了静态方法,直接调用即可。Action对Servlet API的访问,分别为间接访问和直接访问(IOC和非IOC方式)。对于间接访问,只能得到request和session对象(Map类型的),不能得到response对象。对于IOC方式,使用起来比较麻烦,并且与Servlet API耦合大,在这里不推荐使用。对于非IOC方式,推荐使用,代码清晰而且又能满足要求。8、struts2中的ognl OGNL 是 Object-Graph Navigation Language 的缩写,从语言角度来说:它是一个功能强大的表达式语言,用来获取和设置 java 对象的属性 , 它旨在提供一个更高抽象度语法来对 java 对象图进行导航,OGNL 在许多的地方都有应用,例如: 1)作为 GUI 元素(textfield,combobox, 等)到模型对象的绑定语言。 2)数据库表到 Swing 的 TableModel 的数据源语言。 3)web 组件和后台 Model 对象的绑定语言 (WebOGNL,Tapestry,WebWork,WebObjects) 。 4)作为 Jakarata Commons BeanUtils 或者 JSTL 的表达式语言的一个更具表达力的替代语言。OGNL 表达式:1)常量:字符串:“ hello ” 字符: h 数字:除了像 java 的内置类型 int,long,float 和 double,Ognl 还有如例:0.01B,相当于 java.math.BigDecimal,使用 b 或者 B 后缀。 100000H,相当于 java.math.BigInteger,使用 h 或 H 后缀。2)属性的引用例如:3)变量的引用例如:#name4)静态变量的访问使用 classfield5)静态方法的调用使用 classmethod(args), 如果没有指定 class 那么默认就使用 java.lang.Math.6)构造函数的调用例如:new java.util.ArrayList();在使用OGNL时,会经常用到三个符号#、%和$,这三个符号需要熟练掌握。9、struts2中的拦截器在struts2项目中使用拦截器,需要构建拦截器资源,还得配置struts.xml文件,将拦截器资源引入到Action中。以项目为例/register.jsp/login.jsp/login.jsp多个拦截器,指定相应的位置,然后添加到拦截器栈(interceptor-stack)里,再将拦截器栈添加到action中去。另外一种方法是直接将拦截器添加到action中,也可以实现效果,不过在有大量拦截器

温馨提示

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

评论

0/150

提交评论