当前位置:主页 >> JSP及框架 >> 正文
struts2深入理解一
阅读:1483 输入:2014-11-05 16:31:58

struts2深入理解
1.ActionSupport
validate()
2.web.xml
过滤器
    <filter>
        <filter-name>struts-cleanup</filter-name>
        <filter-class>
            org.apache.struts2.dispatcher.ActionContextCleanUp
        </filter-class>
    </filter>  
    <filter-mapping>
        <filter-name>struts</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

3.struts.xml
input类型转化 输入验证校验  文件上传 等出错的时候
struts2默认在execute方法执行之前,会先执行validate验证方法,如果发现有errors,直接就中转到input所指向的页面.跳转到input之前就根本没有执行action的方法.

4.
    <!-- package提供了将多个Action组织为一个模块的方式
        package的名字必须是唯一的 package可以扩展 当一个package扩展自
        另一个package时该package会在本身配置的基础上加入扩展的package
        的配置 父package必须在子package前配置 
        name:package名称
        extends:继承的父package名称
        abstract:设置package的属性为抽象的 抽象的package不能定义action 值true:false
        namespace:定义package命名空间 该命名空间影响到url的地址,
        例如此命名空间为/test
        则访问是的地址为
        login.jsp传的action要变化
        http://localhost:8080/struts2/test/XX.action
     -->
5.method="{1}" 代表什么?  Action类里面的第一个方法
Action中的方法通配符
这里的{1}表示接收前面action里通过通配符传来的值,例如你配置的是<action name="*Crud" class="example.Crud" method="{1}"> ,然后调用***/editCrud.action,则method里获得的值是edit,将会调用这个action里面的 edit方法

附:
Action中的方法通配符 

    有些时候对Action中方法的调用满足一定的规律,例如edit Action对应edit方法,delete Action对应 delete方法,这个时候我们可以使用方法通配符,例如:
<action name="*Crud" class="example.Crud" method="{1}"> 这时,editCrud Action的引用将调用edit方法,同理,deleteCrud Action的引用将调用delete 方法。

    另外一种比较常用的方式是使用下划线分割,例如: 
<action name="Crud_*" class="example.Crud" method="{1}"> 
    这样当遇到如下调用的时候可以找到对应的方法。 
"action=Crud_input"   =>   input方法 
"action=Crud_delete" =>   delete方法 

    通配符和普通的配置具有相同的地位,可以结合使用框架的所有其他功能。

其他知识点http://mazhaboge.lofter.com/post/e40ff_235fe2