Struts2学习一(Struts2介绍)

1、Struts2介绍

Struts2是一个基于MVC设计模式的Web应用框架,本质是一个Servlet
这里写图片描述

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的执行流程

这里写图片描述

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。

这里写图片描述

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.<package> struts用于管理所有action类
            name:给当前包进行唯一命名,必填项。用于其他包继承的。
                例如:struts-default.xml/<package name="struts-default" abstract="true">
                    将struts已经完成的功能,作为一个包存在。名称是固定值struts-default。
            namespace:action访问路径前缀。
                例如:"/"
                    "/hello"
                    "/a/b/c"
                    ""
            extends:用于继承其他包的。
                例如:<package extends="struts-default"> 当前action继承struts已经完成功能。
            abstract:是否抽象,如果设置为true,表示没有具体action实现功能。(了解)
        2.1 <action> 用于配置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 <interceptors> 用于配置拦截器
            <interceptor> 用于注册拦截器的
            <interceptor-stack> 拦截器栈,将已经注册的拦截器组合在一起,形成一个栈。
                例如:<interceptor-stack name="defaultStack"> 声明一个拦截器栈,名称是:defaultStack
        2.5 <default-interceptor-ref>用于确定当前默认拦截器的
            例如:<default-interceptor-ref name="defaultStack"/> 将“defaultStack”拦截器栈,声明默认拦截器栈
        2.6 <default-action-ref> 如果访问的action不存在,默认执行的aciton。
            例如:/a/b/c/d/oneAction 此aciton没有配置,默认情况返回action找不到
                如果配置<default-action-ref> 如果存在404时,不显示action找不到,而是指定action
        2.7 <default-class-ref > 用于配置 默认action实现类
            例如:<default-class-ref class="com.opensymphony.xwork2.ActionSupport" /> 
                如果编写配置文件时没有声明class属性,及<action name=""> 将执行ActionSupport类。
        3 <include> 将多个struts配置文件组合成一个。
            struts.xml 入口配置文件,大家共用的。用于存放通用模块。
                <include file="struts-user.xml" />
                <include 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文件配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<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.jsp</result>
        </action>

    </package>
</struts>

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

    <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>
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值