zoukankan      html  css  js  c++  java
  • Struts框架

    SSH框架在mvc模式的的位置作用:

    框架:

             软件中的框架,是一种半成品; 我们项目开发需要在框架的基础上进行!

             因为框架已经实现了一些功能,这样就可以提高开发效率!


    Struts2框架

    Struts1最早的一种基于mvc模式的框架;

    Struts2 是在Struts1的基础上,融合了xwork的功能;

    也可以说,Struts2 = struts1  +  xwork

    Struts2框架预先实现了一些功能:

             1. 请求数据自动封装

             2. 文件上传的功能

             3. 对国际化功能的简化

             4. 数据效验功能


    Struts2开流程

    版本: 2.3

      引入jar文件

    commons-fileupload-1.2.2.jar  【文件上传相关包】
    commons-io-2.0.1.jar
    struts2-core-2.3.4.1.jar           【struts2核心功能包】
    xwork-core-2.3.4.1.jar           【Xwork核心包】
    ognl-3.0.5.jar                                        【Ognl表达式功能支持表】
    commons-lang3-3.1.jar          【struts对java.lang包的扩展】
    freemarker-2.3.19.jar            【struts的标签模板库jar文件】
    javassist-3.11.0.GA.jar           【struts对字节码的处理相关jar】

     


    配置web.xml 

    Tomcat启动-à加载自身web.xml---加载所有项目的web.xml

             通过在项目的web.xml中引入过滤器,

                       Struts的核心功能的初始化,通过过滤器完成

                       filter

    init/      启动执行

    doFilter/   访问执行

    destroy


    <!-- 引入struts核心过滤器 -->
        <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>


    struts2-core-2.3.4.1.jar

    StrutsPrepareAndExecuteFilter  即为核心过滤器

    注意:

     使用的struts的版本不同,核心过滤器类是不一样的!


    开发Action

    注意:

        1. action类,也叫做动作类; 一般继承ActionSupport

            即处理请求的类  (struts中的action类取代之前的servlet)

        2. action中的业务方法,处理具体的请求

            > 必须返回String

            >方法不能有参数

    public class HelloAction extends ActionSupport {
        // 处理请求
        public String execute() throws Exception {}
    }

    Struts2执行流程

    服务器启动:

             1. 加载项目web.xml

             2. 创建Struts核心过滤器对象, 执行filter init()

                  struts-default.xml,           核心功能的初始化

       struts-plugin.xml,            struts相关插件

       struts.xml                         用户编写的配置文件

    访问:

             3. 用户访问Action, 服务器根据访问路径名称,找对应的aciton配置, 创建action对象

             4. 执行默认拦截器栈中定义的18拦截器

             5. 执行action业务处理方法


    struts-default.xml, 详解

     目录:struts2-core-2.3.4.1.jar/ struts-default.xml

     内容:

             1. bean节点指定struts在运行的时候创建的对象类型

             2.指定struts-default  【用户写的package(struts.xml)一样要继承此包

                    package  struts-default  包中定义了:

                              a.  跳转的结果类型           

                                       dispatcher    转发,不指定默认为转发
                                       redirect       重定向
                                       redirectAction  重定向到action资源
                                       stream        (文件下载的时候用)

                              b. 定义了所有的拦截器

                                         定义了32个拦截器!

                                         为了拦截器引用方便,可以通过定义栈的方式引用拦截器,

                                  此时如果引用了栈,栈中的拦截器都会被引用!                             

                                       defaultStack

                                                默认的栈,其中定义默认要执行的18个拦截器!

                              c. 默认执行的拦截器栈、默认执行的action                      

    <default-interceptor-ref name="defaultStack"/> <default-class-ref class="com.opensymphony.xwork2.ActionSupport" />
    <interceptor name="prepare" class="com.opensymphony.xwork2.interceptor.PrepareInterceptor"/>
    <interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>

     


    拦截器:

             拦截器功能与过滤器功能类似。

             区别:

                       共同点: 都拦截资源!

                       区别:

                                过滤器,拦截器所有资源都可以;  (/index.jsp/servlet/img/css/js)

                                拦截器,只拦截action请求。                     

                                拦截器是struts的概念,只能在struts中用。

                                过滤器是servlet的概念,可以在struts项目、servlet项目用。

     面试题: 拦截器什么时候执行? (访问/启动)  先执行action类创建,先执行拦截器?

              -- 1. 用户访问时候按顺序执行18个拦截器;

              -- 2. 先执行Action类的创建,再执行拦截器; 最后拦截器执行完,再执行业务方法


  • 相关阅读:
    25.Kafka(三):面试题
    24.Kafka(二):API
    23.Kafka(一):概述
    22.Flume监控、自定义组件、面试题
    21.Flume概述和企业开发案例
    20.Hive企业调优
    19.Hive函数、存储压缩
    18.Hive数据查询
    17.Hive数据操作
    16.Hive基础
  • 原文地址:https://www.cnblogs.com/loaderman/p/10025593.html
Copyright © 2011-2022 走看看