Struts2学习一(Struts2介绍)

1、Struts2介绍

Struts2是一个基于MVC设计模式的Web应用框架,本质是一个Servlet
Struts2学习一(Struts2介绍)_第1张图片

Struts2的主要功能
1、Action上,可以是一个普通的POJO
2、线程上,每一个Action对应一个实例,没有线程上的问题(Servlet单实例)
3、整个ONGL
4、使用值栈技术(ValueStack)技术
5、整合Spring AOP思想的拦截机制

2、Struts2的使用流程

1、导jar包
2、Action类的编写
3、struts.xml文件配置
4、web.xml文件配置过滤器
5、测试

3、Struts2的执行流程

Struts2学习一(Struts2介绍)_第2张图片

1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求;
2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin);
3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action;
4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy;
5、ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类;
6、ActionProxy创建一个ActionInvocation的实例。
7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2框架中继承的标签。在这个过程中需要涉及到ActionMapper。

Struts2学习一(Struts2介绍)_第3张图片

3、Sturts内部配置相关文件的介绍

1、defalut.properties:配置sturts常量,比如说编码
位置:

struts2-core-2.3.15.3.jar!/org/apache/struts2/default.properties

2、struts-default.xml: struts核心配置文件

truts2-core-2.3.15.3.jar!/struts-default.xml

3、struts-plugin.xml整个其他框架
4、struts.xml:用户自定义核心配置文件
5、web.xml:也可以配置struts常量

参考博客
http://blog.csdn.net/zzjjiandan/article/details/9837869

4、Struts.xml文件配置详解

-- 配置文件详解 
        1.<constant> 用于配置struts常量的
            name:struts提供固定常量名称。此名称从 default.properties文件获得
            value:常量值
            例如:<constant name="struts.devMode" value="true">constant>
        2. struts用于管理所有action类
            name:给当前包进行唯一命名,必填项。用于其他包继承的。
                例如:struts-default.xml/name="struts-default" abstract="true">
                    将struts已经完成的功能,作为一个包存在。名称是固定值struts-default。
            namespace:action访问路径前缀。
                例如:"/"
                    "/hello"
                    "/a/b/c"
                    ""
            extends:用于继承其他包的。
                例如:"struts-default"> 当前action继承struts已经完成功能。
            abstract:是否抽象,如果设置为true,表示没有具体action实现功能。(了解)
        2.1  用于配置action类(请求处理类)
            name:action名称,用于在请求路径进行访问
            class:action类全限定类名
            method:用于确定action类中需要执行的方法,默认值:execute
        2.2 <result> 用于配置结果集
            name:用于确定action类中,方法的返回值
            text:标签体用于设置jsp路径
            type:结果集类型
                dispatcher:请求转发,从一个action到jsp页面,默认值。
                redirect:重定向到jsp页面
                redirectAction:重定向到另一个action
                stream:以流的方法发送浏览器,用于文件下载。
                chain:链,在一次请求中,从一个action到另一个action
        2.3 <result-types> 用于配置结果集类型的,一般不用,但需要看的懂。
        2.4  用于配置拦截器
             用于注册拦截器的
             拦截器栈,将已经注册的拦截器组合在一起,形成一个栈。
                例如:name="defaultStack"> 声明一个拦截器栈,名称是:defaultStack
        2.5 ref>用于确定当前默认拦截器的
            例如:ref name="defaultStack"/> 将“defaultStack”拦截器栈,声明默认拦截器栈
        2.6 ref> 如果访问的action不存在,默认执行的aciton。
            例如:/a/b/c/d/oneAction 此aciton没有配置,默认情况返回action找不到
                如果配置ref> 如果存在404时,不显示action找不到,而是指定action
        2.7 class-ref > 用于配置 默认action实现类
            例如:class-ref class="com.opensymphony.xwork2.ActionSupport" /> 
                如果编写配置文件时没有声明class属性,及name=""> 将执行ActionSupport类。
        3  将多个struts配置文件组合成一个。
            struts.xml 入口配置文件,大家共用的。用于存放通用模块。
                file="struts-user.xml" />
                file="struts-book.xml" />
            提供子配置文件
                struts-user.xml
                struts-book.xml
    -->

5、HelloWorld

1、UserAction类

public class UserAction {
    public String execute() {
        return "success";
    }
}

2、index.jsp
3、struts.xml文件配置



<struts>

    <constant name="struts.devMode" value="true">constant>
    <constant name="sturts.enable.DynamicMethodInvocation" value="true">constant>
    <package name="struts" namespace="/" extends="struts-default">
        <action name="userAction" class="com.example.struts.UserAction">
            <result name="success" type="">/a/success.jspresult>
        action>

    package>
struts>

4、success.jsp文件
5、web.xml文件

    <filter>
        <filter-name>struts2filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterfilter-class>
    filter>
    <filter-mapping>
        <filter-name>struts2filter-name>
        /*
    filter-mapping>

你可能感兴趣的:(web)