struts2复习笔记

来源:互联网 发布:手机淘宝购买运费险 编辑:程序博客网 时间:2024/05/17 08:13
                                 struts2.3.24框架


struts2.3.24框架 运用在web层  是在struts1框架和webwork基础上全新的框架 


struts2.3.24解决的问题
   1.如果功能很多,就会写很多servlet,造成维护不方便,struts2使用过滤器去拦截不同的请求,去执行不同的方法
   2.Spingmvc框架 也是运用在web层


struts框架入门


   第一步导入jar包
   第二步执行action
   第三步配置action访问路径
      要创建struts核心配置


struts基本执行过程


请求到过滤器web.xml。过滤器是在服务器启动时就创建了,servlet在第一次访问才创建


在过滤中执行功能有
   获取请求路径
   得到路径hello那个值
   到src下面找到struts.xml,使用dom4j解析,得到xml文件中内容
   拿着hello得到xml文件找到action标签。匹配name属性值是否一直。
   如果一致,再找那么属性所在的action标签中另一个属性class值,
   得到全路径
   使用反射实现功能
   class clazz=Class.froName("action路径");
   得到名称是execute的方法


   Method m=clazz.getMethod("execute");


   Object obj=m.invoke();
   得到action的返回值
   在struts.xml文件中,找到action标签中
   找到result标签,匹配result标签的name属性值是否一致
   如果一样,跳转到配置页面中


   查看过滤器中的源代码
   它本身是一个过滤器shareprepareandexecutefilter
   1.过滤器是在服务器启动时创建 执行init方法
    在init中主要加载配置文件
    包含自己创建的配置文件还有struts配置的文件




    struts核心配置


    标签package


    区别不同的action
    name属性
    和功能本身没有关系的 在一个配置文件中可以写过个package
    name的属性值不相同


    extends


    表示一种继承
    属性值是固定的
    写这个属性值之后,在package里面配置类具有action功能


    namespace


    属性值和action标签里面name的属性构成访问路径




    标签action


    name属性值就是访问的路径


    class属性值就是action的全路径


    method属性
    比如在action里面默认执行的是execute
    让action中多个方法执行,可以在method中配置
    标签result
      到不不同的页面
    name的属性值




    type属性 默认是转发


    type="dispatcher" 重定向
    可以配置其他的action
    chain 转发到action 一般不用,可能有缓存
    redirectaction 重定向action


    进行常量的配置
    <constant> 如果是编码配置的话,只对post请求起作用
   
   分模块开发
   action三种编码方式


   一 写一个普通类
   二 写一个类去继承actionsupport


   三 写一个类去实现action


   action访问三种方式
   method


   通配符
   name=“user_*” method="{1}"
   动态访问
   首先你先配置一个常量支持动态配置




   结果页面配置
    如果有多个action,方法返回的值相同的,返回的路径也相同,可以用全局路径配置


   全局页面的配置
    要写在package里面
      <global-results></global-results>


   在action获取表单提交的数据


   actioncontext
   servletactioncontext
   接口注入的方式


   用struts封装的方法获取表单提交的数据


   属性封装


   private String name;
   {get;set;}get方法可以不写出来




   模型驱动封装
    实现接口modeldriven
    实现方法getmodel
    在action手动创建实体类对象


   表达式封装
    在action中声明实体类
    生成setget方法
    在表单name属性值里面写表达式形式


   使用模型驱动和属性封装注意的问题


    两者不能同时使用获取同一个表单的数据


   servlet和action区别


   servlet是单实例对象
   action是多实例对象




   值栈存在于每一个action对象中


   值栈的内部结构


   root list
    我们一般只取root里面的内容


   context map


   向值栈中存放数据的三种方式


   set方法


   push方法


   在action中定义变量,设置变量的get方法


   推荐使用第三种方法存值




   向值栈中放入对象


   在action中定义对象常量
   生成get方法
   向值栈对象常量赋值




   向值栈中放入list集合


   从值栈中获取字符串
    <s:property value="username"/>
   从值栈中获取对象
     <s:property value="user.username"/>
   从值栈中获取list
     有三种获取方式
     第一种
        <s:property value="list[0].username"/>


     第二种
      <s:itater value="#list" >
          <s:property value="username"/>


      </s:itrater>
      第三种
        <s:itater value="list" var="usr">
          <s:property value="#user.username">


      </s:iterator>


拦截器的概述
1.struts2是框架 封装了很多功能。都是在拦截器里面
2.struts2有很多拦截器,每次执行默认的拦截器
3.struts2里面默认拦截器的位置
拦截器在什么时候执行
 action创建之后,方法执行之前


拦截器的原理


aop思想
面向切面编程,有基本功能,扩展功能,不通过修改源代码方式扩展功能


责任链模式
 要执行多个操作,添加  修改  删除操作


aop思想和责任链如何应用到拦截器中
 拦截器在action对象创建之前,action方法之后
 在action方法执行之前执行默认拦截器,执行过程使用aop思想
  在执行拦截器时候,执行很多的拦截器。这个过程使用责任链模式


 过滤器是在服务器创建时,就创建


过滤器和拦截器区别
 过滤器  过滤器理论上可以过滤任何内容 html jsp servlet 图片路径




 拦截器  拦截器只可以拦截action
 
servlet和action区别
servlet 默认第一次访问时创建,创建一次,单实例模式
action 每次访问时,就创建,创建多次,多实例模式




自定义拦截器


  拦截器结构
    继承一个类abstractintercept
    abstractintercept实现一个接口intercept
    里面有三个方法
    init
    destroy
    intercept
    在实际开发中使用一个类继承methodfilterintercept,让action方法进行不拦截


   声明拦截器
   引用拦截器
原创粉丝点击