Struts2复习.doc_第1页
Struts2复习.doc_第2页
Struts2复习.doc_第3页
Struts2复习.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、 MVC设计模式是指Model 我们编写的javabean,包括dao,DBManagerView jsp页面Controller 在Struts2中指的是Action控制器注意:struts2是不是在struts1基础之上发展起来,而是在webwork框架上发展而来。2、 MVC的优势1) 可为一个模型建立多种不同视图,随意切换2) 视图和控制器的可接插性3) 模型的可移植性3、 Struts2和Struts1相比优势1) 测试更方便,控制器没有和系统的类有太多耦合2) Struts2的Action是一个完全的POJO类。无任何依赖关系注意:一般我们为了规范Action的开发,会让Action去实现一个接口:Action接口,或者继承一个方法。ActionSupport类4、 Struts2的体系结构a) 核心控制器:StrutsPrepareAndExecuteFilter 接收请求并分发到相应action中b) 业务控制器:就是我们自己编写的Action类5、 Struts2的配置文件1) Struts.xml 2) Sperties注意复习配置文件中的每一项分别表示什么如: 配置系统属性常量(简单主题显示)/注意:包必须继承自struts-default 包,否则报错 这里是Action的配置/xx.jsp 这里是定义视图转向的配置6、 Sturts2运行流程:a) 客户端发送请求b) 核心控制器StrutsPrepareAndExecuteFilter 接收请求,并找到相应的Action处理c) Action默认执行execute()方法,如果设置了则执行相应的方法,处理完毕,转发到相应的视图(根据配置中的result进行)7、 Struts2的核心控制器是一个过滤器,需要在web.xml中进行配置。8、 Action配置的时候属性注意:Struts2的Action是会为每个请求创建一个Action Struts1的Action是单例的a) name是 Action的名称,用于页面提交时使用b) Class是Action的路径9、 Result配置时的属性a) name 该视图的名称b) type 用于指定result的结果类型,默认为转发,可设置为重定向注意:当然可以配置全局的result属性,一般我们是配置在action内部,供当前这个action使用10、 Struts2在Action中无法直接使用内置对象(request session等)如何获取呢?1) 获取值/获得request中所有值Map requestMap = (Map)ActionContext.getContext().get(request);/获得session中所有值(是一个Map)Map sessionMap = (Map)ActionContext.getSession();2) 获取对象通过ServletActionContext.getRequest()获得request对象 ServletActionContext.getResponse()获得response对象 ServletActionContext.getRequest().getSession()获得session对象3)11、 Struts2在Action中通过属性或者对象来封装页面用于提交的数据a) 属性时称为 属性驱动b) 对象时称为 模型驱动(模型驱动时页面上必须使用 对象名称.属性名)12、 Struts2中的常量可以在Struts.xml中设置,也可以单独建立文件perties文件a) struts.ui.theme 设置struts显示主题风格b) struts.action.extension 设置拦截的后缀c)13、 在开发中经常会遇到很多配置,这样struts.xml中配置将非常多,很难维护,这样提供了包含配置:可分别建立struts1.xml struts2.xml 然后我们在struts.xml中包含其他即可:14、 Struts2中,如果提交表单或超链接时只写了action的名称,则默认执行execute方法,如果写了则调用相应的方法,如何写呢?a) !进行分割b) _进行分割,这个时候需要在actin的配置中指明 如下: /login.jsp 注意上面的 * 号和 method=1 表示方法名使用*号位置15、 类型转换器:Struts会自动将我们表单提交的整数、小数、日期等类型转换为目标类型(注意 只要是表单提交的都是字符串,struts2为我们自动将字符串转为整数、小数等类型)但是当我们需要将一整个字符串对应到一个对象的时候,struts2则无法执行,(如,提交的是 张三,男,20,山东省,想自动对应到对象的时候,无法完成,这个时候需要自定义类型转换器)自定义类型转换器需要实现一个接口:TypeConverter接口(3个方法)由于接口中的方法我们一般只需要关注一个,所以struts2提供了一个抽象类:StrutsTypeConverter类,我们只需要去继承这个类,重新convertFromString即可当然类型转换器完毕后需要注册一下,让系统识别知道,配置文件perties中进行1) 建立类实现TypeConverter接口 或者继承 StrutsTypeConverter类2) 建立配置文件注册即可(左边为目标类型,右边为转换器)16、 拦截器a) 系统中经常会遇到权限判断,写日志等操作,这样的话我们需要在每个action中的方法中进行判断,能否一次性处理呢?当然可以,Sturts2为我们提供了拦截器机制,它可以在执行Action中所有方法前或者之后做一些事情。比如权限处理,我们可以在执行Action中方法之前做一个判断工作。1) 建立类实现 Interceptor接口或者继承 AbstractInterceptor类2) 重写: intercept方法,该方法可以得到你要执行的目标方法和action的名称,可对方法名进行判断。判断通过后可放行,不通过可返回相应的配置result视图3) 拦截器完成后需要在struts.xml中的action中进行配置指定,配置某个包下的Action使用该拦截器(默认拦截器)或者某个Action使用这个拦截器如果判断通过则必须执行目标action的方法了,需要使用return invocation.invoke()去执行注意:自己看书看下默认拦截器如何配置(也是重点。容易考试。)17、 文件上传Struts2中文件上传可使用自带的jar包进行。Method必须为post,类型指定1)页面表单2) 在Action中设置类型为File的xxx属性、类型为String的xxxFileName属性、类型为String的xxxContentType属性,分别用于封装提交的内容(流)、文件名和类型18、 OGNL是struts2中访问数据的一种语法ActionContext最大,它是一个Action运行时的环境,其中包含了StackContext和ValueStack比如我们request、session、application中的数据都是放在了StackContext中,从StackContext中取数据,必须加入#attr号进行容易考试:比如session中放入了很多对象#session.persons.? this.age 20 代表取出session中放入的persons集合中年龄大于20的#session.persons.( this.age 20) 代表取出session中放入的persons集合中第一个年龄大于20的对象注意:ActionContext是sstruts2中Action执行的上下文环境StackContext用于存储请求的参数、会话、Servlet上下文等信息ValueStack是OGNL的根,用于存储临时的请求中的参数信息。19、 Struts2标签库1) 使用时页面上必须指定 2) s:property value= escape=是否解析HTML,默认不解析 default=值为null时默认显示什么P88:如果页面上只有则输出位于ValueStack(值栈)栈顶的对象3) 输出当前日期4) 5) 如果想获得是否偶数行: $sss.even6) 7) 如:Struts2中取出Session中值的方法 #session.uid或者#attr.uid ,如果是EL表达式则是$uidStruts2中动态返回设置,有时候返回的result配置太多,对于维护反而不好,struts2提供了动态返回的机制Struts.xml中配置如下:/$target.jsp 注意这里使用了占位符,将在Action赋值Action则必须如下:public class MyTestActionprivate String target;/这个名字和前面$target对应/方法中赋值public String login()if(判断)this.target = success;/页面的名称

温馨提示

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

评论

0/150

提交评论