二、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.上传下载 详看代码

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

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