struts2环境搭建步骤

本文介绍了Struts2框架的基本概念,包括其作为Xwork基础上的MVC框架的特点,以及如何进行环境搭建。详细讲解了所需的类库、web.xml配置、struts.xml文件配置等内容,并给出了具体的Action类编写示例。

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

struts2  

一个基于Xwork的MVC框架

Xwork 是一个命令模式框架

是一个标准的Command模式实现,并且完全从web层脱离出来。

Xwork提供了很多核心功能:

前端拦截机(interceptor),

运行时表单属性验证,类型转换,

强大的表达式语言(OGNL – the Object Graph Notation Language),

IoC(Inversion of Control控制反转)容器等

 

使用struts2需要的类库:

1.    commons-fileupload-X.X.X.jar(可选)

2.    commons-io-X.X.X.jar      (可选)

3.    commons-logging-X.X.X.jar (可选)

4.    commons-logging-api.X.X.jar(可选)

5.    freemarker-X.X.X.jar

6.    ognl-X.X.X.jar

7.    struts2-core-X.X.X.X.jar

8.    xwork-core-X.X.X.jar

9.    javassist-3.7.ga.jar(new for Struts versions 2.2.1 and higher)

 

 

环境搭建步骤:

1.  web.xml配置struts2过滤器

<!-- 配置Struts2核心控制器 StrutsPrepareAndExecuteFilter

        2.1.3之前的版本使用  FilterDispacher过滤器

   -->

   <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.  classpath下定义struts.xml

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD StrutsConfiguration 2.0//EN"

    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

      <!--constant 用来配置struts2常量属性

                     可以在多个文件声明越靠后的优先级越高

 

      struts2按以下顺序搜索常量:

         default.properties

      struts-default.xml

         struts-plugin.xml

         struts.xml

         struts.properties

         web.xml

       

        struts2支持struts.properties  为兼容WebWork

                配置常量应首选考虑struts.xml

               

               配置信息可以在文档或default.properties中找到

  -->

 

     <!--

     该属性设置Struts2应用是否使用开发模式

     如果设置该属性为true,则可以在应用出错时显示更多、更友好的出错提示

     并且修改配置文件后的改动会反映到web应用中不需要重启web服务器

     默认值:false

     通常,在开发阶段,为true,发布阶段后,为false

   -->

   <constant name="struts.devMode" value="true" />

  

   <!--

     指定Struts2处理的请求后缀,该属性的默认值是.action和空,

     即所有匹配*.action的请求都由Struts2处理

     如果用户需要指定多个请求后缀,以逗号隔开

    -->

   <constant name="struts.action.extension" value="action,do,," />

        

    <!--package 将多个action 组织为一个逻辑单元

      

         name    指定包名

        

         extends    指定要继承的包 

              struts-default包定义在struts-default.xml

              struts-default包为abstract(不能有action定义,只能被继承)

              struts-default包中定义了struts2内置的一些result类型及拦截器等

       

         namespace 指定命名空间

        

            可以将包中的action配置为不同的名称空间,以便在不同命名空间使用同名的action

            Struts2使用action名字和命名空间来标示action

            即在收到请求时把URL分为namespaceaction名字两部分

            strus.xml查找namespace/xxx.action,如无,查找默认命名空间

                    

            默认命名空间是"",表示可以接收所有命名空间

                访问URL:

                        /hello.action

                        /xxx/hello.action

                        /xxx/yyy/hello.action

               

           struts2支持"/"命名的根命名空间

                   namespace="/"            访问URL/xxx.action

                 

            namespace一般以模块命名(/开头)

                   namespace="/user"        访问URL/user/xxx.action

                   namespace="/aaa/bbb"     访问URL/aaa/bbb/xxx.action

                  

            Struts2默认访问URL后缀为.action  (可以省略)  

                        可以通过常量struts.action.extension指定

                       

                       多个包可以定义相同的namespace

              

   -->

       

   <!--

       action元素代表具体业务控制器   

            name指定访问的URL

            class指定Action类名

            class省略时 class默认为ActionSupport  默认执行execute()

            class指定Action默认执行返回String类型的execute()

           

       result元素通过名称指定action的返回结果

           name属性指定返回URL名称    默认为success(Action接口定义常量)

      

   -->

   <package name="default" namespace="/"extends="struts-default">

     <action name="index">

        <result >/index.jsp</result>

     </action>

     <action name="hello"class="org.struts2.ch1.action.HelloAction">

        <result name="success">/ch1/hello.jsp</result>

     </action>

   </package>

</struts>

 

3.  编写具体Action

/*

 * struts2 Action的定义方式:

       方式1:

        action可以是一个普通的pojo对象

               但需要有一个返回String类型的execute()

              

     方式2:

           实现Action接口

          

     方式3:

           常规的做法是继承ActionSupport

    注意:

      struts2Action每次请求创建一个新的实例(线程安全)

      struts1Action每次请求共享一个实例(线程不安全)

 */

public class HelloAction  {

   public  HelloAction(){

      System.out.println("创建 Struts2 Action实例");

    }

   public String execute(){

     System.out.println(this.getClass().getSimpleName()+"  execute...");

     return "success";

   }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值