struts2入门(一)struts2初识

2012/05/06 1834点热度 0人点赞 0条评论

Struts 2 概述  

    Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。

Struts2是一个用来开发MVC应用程序的框架,提供了多种Web 应用程序开发过程中常见问题的解决方案.

创建struts工程步骤

    1,  创建web工程

    2,  导入struts相关jar包

           可以从struts2提供的apps里找blank工程,这里有struts2需要的最少的jar包

             *  asm-3.3.jar      供了字节码的读写的功能,包含了核心的功能,而其他的jar,都是基于这个核心的扩展.

             *  asm-commons-3.3.jar      提供了基于事件的表现形式

             *  asm-tree-3.3.jar       提供了基于对象的表现形式

             *  commons-fileupload-1.2.2.jar  文件上传组件

             *  commons-io-2.0.1.jar      上传文件依赖的jar包

             *  commons-lang3-3.1.jar    对java.lang包的增强

             *  freemarker-2.3.19.jar    FreeMarker 模板引擎使用FreeMarker语言编写

             *  javassist-3.11.0.GA.jar 代码生成工具, struts2用它在运行时扩展 Java类,可以理解为对属性驱动和模型驱动读写数据的增强

            *  ognl-3.0.5.jar    对象图导航语言(Object Graph Navigation Language),   struts2通过它读写表单对象中的属性

            *  struts2-core-2.3.4.jar  Struts 2框架的核心类库

             *  xwork-core-2.3.4.jar    Command模式框架,WebWork和Struts2都基于xwork,属于核心类库

             * commons-logging.jar :ASF出品的日志包,Struts2框架使用这个日志包来支持Log4J和JDK 1.4版本之上的日志记录

   3,  在web.xml中配置struts的核心过滤器过滤器StrutsPrepareAndExecuteFilter

         ctrl+Shift+T 输入StrutsPrepareAndExecuteFilter 找到对应的类,然后查找到过滤器的路径

<!-- 配置过滤器 -->
 <filter>
   <filter-name>StrutsPrepareAndExecuteFilter</filter-name>
   <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
 </filter>
                            
 <filter-mapping>
   <filter-name>StrutsPrepareAndExecuteFilter</filter-name>
   <url-pattern>/*</url-pattern>
 </filter-mapping>

   4,  创建Action需要实现Action接口  

public class HelloWorldAction  implements Action{
    public String execute() throws Exception {
        System.out.println("HelloWorldAction  execute");
        return "success";
    }
}

   5,创建jsp文件

       在web的 根目录下创建

        /test/success.jsp和/test/test.jsp

   6,  配置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>
   <!-- 请求路径:
     <a href="/test/helloWorldAction.action">helloWorld</a><br> 
   -->
   <!-- 
     package标签:相当于java中的包,规范化管理,struts2包可以继承
       * name:包的名称,主要作用用于继承,唯一的
       * namespace:命名空间,相当于房间号,唯一的,也可以看成包的唯一标识
       * extends:用于继承其他的包,
           * 这里继承了struts-default.xml包.该包存放在struts2-core-2.3.4.jar/struts-default".xml文件
             <package name="struts-default" abstract="true">
           * 为什么要继承呢?
               因为struts-default配置了所有返回的类型,也就是result的type和拦截器,和自带的几个拦截器栈
    -->
   <package name="test" namespace="/test" extends="struts-default">
      <!-- 如果请求的action找不到的情况下,则执行该配置指定的action -->
      <default-action-ref name="helloWorldAction"></default-action-ref>              
      <!-- action:配置请求的路径和action之间的对应关系 
           * name:请求的action的名称,在同一个包中要唯一
           * class:action所在类的完整路径
      -->     
      <action name="helloWorldAction" class="com.yxkong.test.HelloWorldAction">
         <!-- 
             public String execute() throws Exception {
                System.out.println("HelloWorldAction  execute");
                return "success";
             }
             result:返回的结果:
                * name:对应的action中execute方法的值
                * 文本内容:转向的路径.
          -->
         <result name="success">/test/success.jsp</result>
      </action>
       <!--
            * 如果没有为action指定class,则执行默认的class[com.opensymphony.xwork2.ActionSupport] 
              public class ActionSupport implements Action
            * 如果没有为action执行执行的方法,则默认执行execute方法
                public String execute() throws Exception {
                    return SUCCESS;
                }
            * 如果没有为result的name属性执行值,则默认的值为"success"  
       -->
      <action name="actionNoClass">
        <result >/test/success.jsp</result>
      </action>
   </package>
</struts>

这样发布web程序就能简单的实现一个struts2程序

yxkong

这个人很懒,什么都没留下

文章评论