Struts2知识复习之一

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts2知识复习之一相关的知识,希望对你有一定的参考价值。

#Struts2知识复习之一

  1. 概述:struts2是一个基于MVC设计模型的轻量级web应用框架,它本质上相当于servlet。
    它是 Struts1(早期基于MVC模式的轻量级Web框架) 和 WebWork(openSymphony组织的J2EE Web框架)技术的合并。
    它的核心是WebWork,采用拦截器的机制来处理用户请求,使业务逻辑控制器与ServletAPI脱离。
  2. struts2优势:
    • 提供Exception异常处理机制
    • 提供良好的Ajax支持
    • Result方式的页面导航,通过Result标签实现重定向和页面跳转。
    • 开源,扩展性强
  3. web层框架(struts1,struts2,webwork,springMVC)都基于前端控制器的模式
    • 什么前端控制器模式?
      概述:传统开发中,每一个请求都会对应一个Servlet,这样就会导致很多的Servlet。
      而Struts2框架将所有请求都经过一个前端控制器,通过拦截器来过滤,实现部分功能后,
      将剩下具体的操作提交到具体的Action进行处理。

      struts2入门基本

      1. Struts2开发包目录
        • apps:存放Struts2实例程序
        • docs:Struts2的API参考文档
        • lib:Struts2的核心类库,以及第三方插件类库。
        • src:Struts2的框架源码
      2. web工程引入的struts2开发包
        概述:实际开发中, 因为我们不需使用lib目录下所有jar包,所以我们引入的是
        appsstruts2-blankWEB-INFlib 目录下的jar包。
        struts2开发jar包分析:
        struts2-core-2.3.24.jar Struts2核心类库
        xwork-core-2.3.24.jar webWork核心类库,Struts2构建的基础
        ognl-3.0.6.jar 对象图导航语言(Object Graph Navigation Language) Struts2通过其读写对象的属性。
        freemarker-2.3.22.jar Struts2标签模板使用的类库
        log4j-api-2.2.jar Struts2日志管理组件依赖包的api
        log4j-core-2.2.jar Struts2日志管理组件依赖包
        commons-fileupload-1.3.1.jar Struts2文件上传组件依赖包
        commons-io-2.2.jar Struts2的输出输入,传文件依赖的jar包
        commons-lang3-3.2.jar 包含一些数据类型工具,是对java.lang包的增强
        javassist-3.11.0.GA.jar javascript字节码解析器
        asm-3.3.jar 操作字节码类库
        asm-commons-3.3.jar 提供基于事件的表现形式。 asm-tree-3.3.jar 提供基于对象的表现形式。

        Struts2配置详解

        & 基本配置环境搭建
        struts.xml文件的约束:
        <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">;
        头标签:<struts></struts>
        & Struts2执行流程:
        从客户端发送的请求,会先经过前端控制器(核心过滤器 StrutsPrepareAndExecuteFilter )过滤器中执行一组拦截器,完成部分功能。
        执行完拦截器后,就会执行Action,返回一个结果视图,根据Result配置进行页面的跳转。

      3. struts.xml文件配置
        (1)常量配置(使用<content></content>)
        注:所有常量配置都可在struts2-core-2.3.24.jar包下的/org/apache/struts2/default.properties文件中找到
        常量的配置属性:
        方式一(基于struts.xml文件)
        <1> i18n:国际化编码,解决Post提交乱码。
        示例:
        <constant name="struts.i18n.encoding" value="UTF-8"></constant>
        <2> struts.action.extension=action,, 指定访问action时的后缀名, action,, 为默认值
        action,, 代表后缀名为action或空 (两个 , 符号代表空)。
        示例:
        <constant name="struts.action.extension" value="action,,"></constant>
        <3>struts.devMode = false(默认) 指定struts2是否以开发模式运行,开发模式具有以下优点:
        1.热加载主配置文件(不需要重启即可生效)
        2.提供更多错误信息输出,方便开发时的调试
        示例:
        <constant name="struts.devMode" value="true"></constant>
        <4>配置动态方法调用是否开启
        示例:struts.enable.DynamicMethodInvocation = false(默认) 默认是关闭,使用需手动开启
        分析:
        配置后浏览器访问服务器数据的格式为:Action类后 + !+对应的方法名
        如:http://localhost/struts2_01/dynamic/Demo1Action!query
        这种动态方法常量配置会导致 地址栏的名称怪异,不利于SEO搜索引擎的检索
        方式二(基于web.xml文件)
        配置struts2的编码为utf-8到整个web应用中
        <context-param>
        <param-name>struts.i18n.encoding</param-name>
        <param-value>UTF-8</param-value>
        </context-param>
        方式三(基于 在src下重写一个常量配置文件 default.properties覆盖框架已有的常量配置文件)
        (2)基本配置
        <package name="" namespace="" extends="struts-default">
        <action name="" class="" method="">
        <result name="success">/xxx.jsp</result>
        </action>
        </package>
        细述:
        <1>父标签package,将多个Action封装到一个包里。其属性如下:
        • name:包名,起到标识作用,随便起但不能重复。
        • namespace:给Action的访问路径定义一个命名空间。
        • extend:继承Struts2框架下的一个指定包struts-default的所有配置
          该属性标识 该包是否为抽象,若为true则说明该包不能独立运行,只是专门被继承的
          <2>一级子标签<action>,配置action类。其属性如下:
          • name:决定了action的资源访问名
          • class:action的完整类名
          • method:调用actionl类中哪个方法来处理请求。
            <3>一级子标签<default-action-ref>
            <default-action-ref name="xx.dd.Demo2Action"></default-action-ref>
            当访问找不到包下的ation,会使用Demo2Action作为默认的action处理请求
            <3>二级子标签<result>,结果配置
          • name属性:标识处理结果的名称,与Action类方法的返回值对应
          • type属性:指定调用哪一个result类来处理结果,默认使用 转发 进行结果处理。
            & 结果处理方式:
            1 type="dispatcher" 请求转发
            2 type="redirect" 重定向
            3 重定向到另一个Action(常用) Demo1Action / ${name} 4 请求转发到另一个Action(不常用了解即可) Demo1Action / & 标签体内容:填写跳转页面的相对路径 <4>二级子标签 (3)引入src路径下其他的struts.xml文件,格式如下: (4)配置拦截器,格式如下: add,delete
      4. 配置核心过滤器
        概述:所有的WEB框架都有基于 前端控制器(核心过滤器)模式的特点。
        示例: struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /*
      5. Struts2配置文件加载顺序
        概述:每次从客户端发送请求到服务器都要经过Struts2的核心过滤器StrutsPrepareAndExecuteFilter,该过滤器有预处理和执行的功能。

以上是关于Struts2知识复习之一的主要内容,如果未能解决你的问题,请参考以下文章

Struts2知识复习之四

Struts2复习之标签

Struts2复习之Struts2拦截器

struts2 struts2入门

Struts2学习————Struts2入门

12-30 Struts2复习