二、struts2 入门

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 作用差不多

  • Filter : Sun 规范的一套接口,请求的预处理机制

  • Interceptor :表现层框架(Struts1,Struts2,springmvc ) 规范的一种技术(拦截器)

  • Filter :可以拦截各种类型的请求:.html .css .js .jsp servlet请求 、 动作请求等

  • Interceptor:只能拦截处理动作类请求

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>

  • 自定义拦截器步骤
    • 自定义拦截器: struts2 框架提供了 定义拦截器的接口。Interceptor 接口、继承 AbstractInterceptor抽象类
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.上传下载 详看代码

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容

  • action中如何接受页面传过来的参数 第一种情况:(同名参数) 例如:通过页面要把id=1 name=tom a...
    清枫_小天阅读 2,958评论 1 22
  • 详谈 Struts2 的核心概念 本文将深入探讨Struts2 的核心概念,首先介绍的是Struts2 的体系结构...
    可爱傻妞是我的爱阅读 1,122评论 0 2
  • 概述 什么是Struts2的框架Struts2是Struts1的下一代产品,是在 struts1和WebWork的...
    inke阅读 2,256评论 0 50
  • 1.访问ServletApi三种方式 1).在Action访问Servlet API: 在Action类中操作Se...
    贾里阅读 451评论 0 0
  • 一、struts2的执行流程 先来了解一下struts1的执行流程: Struts1运行原理:(了解) Strut...
    聂叼叼阅读 583评论 1 3