二、struts2 入门

2017-12-28  本文已影响0人  cqzhangjian

1.struts.xml 配置文件详解

    <!-- package 标签:包的概念,在该标签中可以定义多个Action 动作类
                name 属性 :可以随便定义,但是有点意义。如果一个 struts.xml 文件中有多个 package 标签 ,name 属性对应的值不能重复
                extends 属性 : 一般继承 struts-default,因为该包定义了struts2 大量的配置,比如拦截器(使得请求进行预处理)
                namespace 属性 :定义 url 地址的一部分,它是以 / 开头
                
        action 标签 :关联自定义的 动作类的
            class 属性:设置 动作类的全路径
            name 属性 :定义 url 地址的一部分,它不能以 / 开头,必须配置指
            method 属性 : 外部通过 aciton 中的name值来作请求,指定对应的方法来处理该请求,如果不配置该属性,就会默认找 execute方法执行
            
        result 标签 : 逻辑视图 物理视图关联,并且引导视图进行跳转,默认引导方式是转发
             type 属性: dispatcher 转发 针对视图的转发
                      redirect 重定向,针对的 视图的重定向
                      
                      redirectAction 重定向,针对的是动作重定向
                      chain 转发:针对动作类的转发
                    
             name 属性:关联逻辑视图
        constant 标签,配置 struts2 相关的信息 常量配置 key/value
                kye:struts.action.extension 表示配置动作类的后缀名,如果不配,默认就是 .action 或者 不写
                kye:struts.devMode 表示开启开发者模式,提供更友好更详细的信息,也自动开启了国际化资源加载功能以及自动加载struts.xml文件的功能
     -->

2.拦截器

拦截器一般是 web 框架中的概念,不是 Sun 定义的 概念。
拦截器(Interceptor)的作用跟 sun定义的 Filter 作用差不多

Struts2 默认使用的拦截器:

     <interceptor-stack name="defaultStack">
                <interceptor-ref name="exception"/>
                <interceptor-ref name="alias"/>
                <interceptor-ref name="servletConfig"/>
                <interceptor-ref name="i18n"/>
                <interceptor-ref name="prepare"/>
                <interceptor-ref name="chain"/>
                <interceptor-ref name="scopedModelDriven"/>
                <interceptor-ref name="modelDriven"/>
                <interceptor-ref name="fileUpload"/>
                <interceptor-ref name="checkbox"/>
                <interceptor-ref name="datetime"/>
                <interceptor-ref name="multiselect"/>
                <interceptor-ref name="staticParams"/>
                <interceptor-ref name="actionMappingParams"/>
                <interceptor-ref name="params"/>
                <interceptor-ref name="conversionError"/>
                <interceptor-ref name="validation">
                    <param name="excludeMethods">input,back,cancel,browse</param>
                </interceptor-ref>
                <interceptor-ref name="workflow">
                    <param name="excludeMethods">input,back,cancel,browse</param>
                </interceptor-ref>

public class MyInter extends AbstractInterceptor {
    <interceptors>
            <!-- 申明自定义的拦截器 -->
            <interceptor name="my1" class="com.xingxue.struts2.web.interceptor.MyInter"></interceptor>
        </interceptors>
    <!-- 全局配置拦截所有动作类:struts2中的默认的拦截器就失效-->
        <default-interceptor-ref name="my1"></default-interceptor-ref>

注意:应该这样配置

    <interceptors>
            <!-- 申明自定义的拦截器 -->
            <interceptor name="my1" class="com.xingxue.struts2.web.interceptor.MyInter"></interceptor>
            <!-- 申明一个拦截器栈:一个容器,可以配置都个拦截器 -->
            <interceptor-stack name="myStack">
                <interceptor-ref name="defaultStack"></interceptor-ref>
                <interceptor-ref name="my1"></interceptor-ref>
            </interceptor-stack>
        </interceptors>
        
        <!-- 全局配置拦截所有动作类-->
        <default-interceptor-ref name="myStack"></default-interceptor-ref>

3.上传下载 详看代码

上一篇 下一篇

猜你喜欢

热点阅读