Struts2学习之struts框架概述

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

Struts2 =Struts1 + WebWork    struts1和struts2没有本质的关系

Struts封装好的一些功能:

页面导航活动进行管理

对来自用户的输入数据进行合法性验证

统一的布局

可扩展性

国际化和本地化

支持Ajax

表单的重复提交

 

Struts中,用action取代了servlet。

 

Struts2API中,com包为webwork的,org开头的为struts1的。

Struts2下载:http://struts.apache.org   下载 struts-2.x.x-all.zip

Struts2解压app目录中struts2-blank-2.1.8.1.war查看struts项目的最小引入jar包

 

   struts2-core-2.1.8.1.jar        Struts2框架的核心类库

   xwork-core-2.1.6.jar              XWork类库,Struts 2在其上构建

   ognl-2.7.3.jar                  (ObjectGraph Navigation Language), 通过其读写对象的属性

   freemarker-2.3.15.jar :  Struts 2的UI标签的模板使用FreeMarker编写

   commons-logging-1.1.x.jar  ASF出品的日志包,Struts2框架使用这个日志

   commons-fileupload-1.2.1.jar       文件上传组件,2.1.6版本后需要加入此文件

commons-io-1.3.2.jar      上传文件依赖的jar


软件中的框架:是一种半成品;项目的开发需要在框架的基础上进行。

项目中使用什么样的框架,应该根据软件的需求和规模来决定。

在软件开发中,必须要同时使用到的框架的版本。

 

Tomcat启动时的加载项

Tomcat启动à加载自身的web.xml文件à加载所有项目的web.xml文件

在项目的web.xml文件中引入过滤器,加载和初始化框架。

                  Struts的核心功能的初始化,是通过过滤器完成的。

                  Servlet的初始化在第一次访问时完成

                  Filter的初始化在服务器启动时完成。doFilter()方法在访问的时候执行。

 

<!--引入Struts2核心过滤器 -->

 <filter>

 <filter-name>struts2</filter-name>

     <!-- Struts2核心过滤器 -->

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

 </filter>

 <filter-mapping>

 <filter-name>struts2</filter-name>

  <!—配置Struts2核心过滤器的拦截项-->

 <url-pattern>/*</url-pattern>

 </filter-mapping>

Struts的版本不同,核心过滤器类是不一样的。

struts的核心功能是通过过滤器完成的。

struts中,action类,也叫动作类一般继承ActionSupport

主要用来处理具体的请求和业务逻辑  struts中的action类取代了servlet类。Action中的业务逻辑方法用来处理具体的请求,业务逻辑方法必须返回一个String类型的结果,方法不能有参数。

Action类的实例在调用service方法之后创建。每访问一次,就创建一个实例。

 

Struts2执行流程

服务器启动:

         1.加载项目web.xml

         2.创建Struts核心过滤器对象,执行filterà init()

                  struts-default.xml,   核心功能的初始化

            struts-plugin.xml,    struts相关插件

           struts.xml                      用户编写的配置文件

 

访问:

         3.用户访问Action,服务器根据访问路径名称,找对应的aciton配置,创建action对象

         4.执行默认拦截器栈中定义的18个拦截器

         5.执行action的业务处理方法

 


拦截器只拦截action,过滤器可以在所有的web项目中使用。Struts每一个核心功能都是一个拦截器,一个拦截器就是一个Java类。

struts-default.xml,详解

 目录:struts2-core-2.3.4.1.jar/struts-default.xml

 内容:

         1.bean节点指定struts在运行的时候创建的对象类型

         2.指定struts-default包 【用户写的package(struts.xml)一样要继承此包 】

               package struts-default  包中定义了:

                         a. 跳转的结果类型

                                  dispatcher   转发,不指定默认为转发

                                  redirect      重定向

                                  redirectAction 重定向到action资源

                                  stream       (文件下载的时候用)

                         b.定义了所有的拦截器

                                   定义了32个拦截器!

                                   为了拦截器引用方便,可以通过定义栈的方式引用拦截器,

                            此时如果引用了栈,栈中的拦截器都会被引用!       

                                  defaultStack

                                           默认的栈,其中定义默认要执行的18个拦截器!

                         c.默认执行的拦截器栈、默认执行的action

                                  <default-interceptor-refname="defaultStack"/>

                                  <default-class-refclass="com.opensymphony.xwork2.ActionSupport" />

 定义拦截器栈

 <interceptor

name="prepare"class="com.opensymphony.xwork2.interceptor.PrepareInterceptor"/>

<interceptor

name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>

 

struts会把从页面获取的数据自动封装起来,前提是属性名和页面中标签的name属性的值是一样的。

通过对象获取页面中的属性时,在页面中对应标签的name的值中使用 对象.属性 作为标签中name属性的值。 必须为该对象提供set()与get()方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值