Struts2入门

Struts2是一个基于MVC设计模式的web框架,简化了web应用开发。本文介绍了如何创建MavenWeb项目,配置Struts2的核心过滤器、核心配置文件,以及如何进行子控制器类方法的调用和参数赋值。搭建Struts2环境的关键步骤包括配置pom.xml,启用动态方法调用,以及实现ModelDriven接口等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Struts2框架


Struts2 是基于MVC设计模式的web应用程序框架,最初是以WebWork框架和Struts框架为基础,通过提供增强和改进的Struts框架,进而实现简化web技术人员开发工作的目标。

模型(Model)-视图(View)-控制器(Controller),通常简称MVC,是一种开发web应用程序的软件设计模式。该软件设计模式由以下三部分组成:  

模型——属于软件设计模式的底层基础,模型主要负责管理应用程序的数据,它通过响应视图的请求和控制器的指令来更新自身的数据。  
视图——这部分是负责向用户呈现全部或部分数据,通过控制器的指令触发所展现的一种特殊的数据格式。它们是基于像JSP、ASP、PHP之类模板系统的脚本,较易与AJAX技术进行整合。 
控制器——通过软件代码控制模型和视图之间的交互,控制器负责响应用户输入并执行数据模型对象的交互。控制器在接收、确认输入后执行修改数据模型状态的业务操作

一、使用Sturts2


1、创建MavenWeb(3.0)项目(教程)并配置导入Maven的基本依赖

2、引入Sturts2的所有jar包

配置pom.xml文件

<!--struts2-->
    <struts2.version>2.5.13</struts2.version>
<!--struts2-->
    <dependency>
      <groupId>org.apache.struts</groupId>
      <artifactId>struts2-core</artifactId>
      <version>${struts2.version}</version>
    </dependency>

3、配置核心过滤器 作用接收和分发请求    

  <filter>
    <filter-name>struts</filter-name>
    <!-- 此路径为struts2的核心配置文件路径-->
    <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>struts</filter-name>
    <!--拦截*.action的请求 -->
    <url-pattern>*.action</url-pattern>
  </filter-mapping>

4、建立Struts2的核心配置文件 struts.xml 文件名为框架定义的,不能自定义

     建议struts-base.xml文件,用于配置struts的基本配置

struts-base.xml

<struts>
    <!--启用struts2的开发者模式
    struts.devMode该属性设置Struts 2应用是否使用开发模式。如果设置该属性为true,
    则可以在应用出错时显示更多、更友好的出错提示。该属性只接受true和flase两个值,
    该属性的默认值是false。通常,应用在开发阶段,将该属性设置为true,当进入产品发布阶段后,
    则该属性设置为false。
    -->
    <constant name="struts.devMode" value="true"></constant>
    <!--启用struts2配置文件自动加载模式
    struts.configuration.xml.reload该属性设置当struts.xml文件改变后,
    系统是否自动重新加载该文件。该属性的默认值是false。
    -->
    <constant name="struts.configuration.xml.reload" value="true"></constant>
    
    <!--继承struts的默认配置文件 
        默认配置文件路径如下图
        并设置抽象包-->
    <package name="struts-base" extends="struts-default" abstract="true">
        <!--启用动态方法调用模式-->
        <global-allowed-methods>regex:.*</global-allowed-methods>
 
    </package>
    
</struts>

 5、建立Action类,再建立对应的Action的xml文件

struts-hellow.xml        -->HellowAction.java

<struts>
    <!--package
        name 包名 代表当前配置名字
        extends 继承
        namespace 配置空间 默认/  
        在访问hellowAction的控制器类时,需要在前面加入 
        http://localhost:8080/项目名/sys/hellowAction_方法名.action
    -->
 
    <package name="struts-hellow" namespace="/sys" extends="struts-base">
        <!-- action节点
            name代表请求路径名 不要/和后缀 _*动态可变的调用方法名
            class代表子控制器类全路径名
            method 代表子控制器类中调用的方法名 默认excute 不写也默认调用此方法
        -->
        <action name="hellowAction_*" class="struts.action.HelloAction" method="{1}">
            <!--resultv
                name 请求结果码
                注:标签体代表跳转的具体页面的路径
            -->
            <!-- type 跳转方式  转发 dispatcher  或者在重定向 redirect   (默认转发) -->
            <result  name="success" type="dispatcher">/index.jsp</result>
        </action>
 
    </package>
</struts>

再把struts-base.xml和struts-hellow.xml导入到核心配置文件struts.xml中

必须先引入struts-base.xml文件

<!--每一个子控制器类单独对应一个xml文件-->
<struts>
    <include file="struts-base.xml"></include>
    <include file="struts-hellow.xml"></include>
</struts>

到这里基本配置已经完成

3、子控制器类方法的调用

1、在struts-base.xml文件的默认配置文件中启用动态方法调用模式,不设置那么方法就固定了,一个子控制器类只可以调用一个方法

2、在对应的子控制器类设置方法名        struts-hellow.xml

在对应的action的name属性中后面写_*,然后在method={1}

4、参数赋值
1、在子控制器类定义属性,必须提供get/set方法

2、对象属性赋值

        先实现ModelDrive<T>接口,并实现改接口所定义的getModel()方法

        必须先对实体对象进行实例化,不需要给的get/set方法,并在getModel()方法中返回此对象

总结:
        搭建struts2的运行环境步骤:

               1、配置pom.xml文件导入jar包

                2、配置struts2核心过滤器

                3、配置struts2核心配置文件struts.xml文件     放置于resources目录下

                               struts.xml(注意引入顺序)        struts-base.xml        struts-xxx.xml

                                dtd约束 struts-2.5.dtd   (动态方法配置)

                 4、子控制器类中的默认方法名excute

                        1、在sturts-base.xml中开启动态方法

                        2、在具体的struts-xxx.xml中的action节点中的name属性使用动态方法名

                                例:<action="hellowAction_*" class="" method="{1}">

                        3、调用:http://localhost:8080/xxx/hellowAction_方法名.action

               5、传参和页面跳转

                        传参:

                                1、直接在Action中定义属性,并且提供get、set方法

                                2、实现ModelDriven接口,实体类必须实例化,实现getModel方法

                       页面跳转:

                             <result name="结果码" type="跳转方式(默认转发)" >/login.jsp</result>

                                        

              6、J2EE容器交互

                        注入和非注入

                        耦合和解耦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值