初学者的struts之struts.xml小结

struts.xml struts2配置文件、web开发、struts2.xml 立即下载

初学struts,还没入门,看了一点,然后理理自己的思绪。不对之处,还请见告,也请原谅。最后附上权威的执行流程

考虑一下MVC模型,

在struts中,

C:FilterDispatcher

V:page

M:action

回想一下这个流程

1、首先是当tomcat收到一个HttpServletReques之后,根据web.xml是否通知struts2

因此自然要看一下web.xml配置文件了,

如果想要struts拦截

那么就需要添加过滤器Filter

[html]  view plain copy print ?
  1. <span style="font-size:18px;"><filter>  
  2.         <filter-name>  
  3.                 struts  
  4.         </filter-name>  
  5.         <filter-class>  
  6.                 org.apache.struts.dispatcher.FilterDispatcher  
  7.         <fileter-class>  
  8. </filter>  
  9. <filter-mapping>  
  10.         <filter-name>  
  11.                 struts  
  12.         </filter-name>  
  13.         <url-parttern>  
  14.                 /*.action  
  15.         </url-parttern>  
  16. </filter-mapping>  
  17. </span>  

如果添加了上述代码,就会根据设定拦截url

2、struts2拦截到url之后,就会根据struts.xml文件采取相应的action。所以有必要了解struts.xml

      关于struts.xml的配置:

     1、首先是得写action,让struts2知道怎么采取措施,因此也就有了<action>标签

     2、在action之前或之后想要做一些事情,比如检查是否登录客户,是否记录action动作等等,因此就有了<interceptor>

     3、action和interceptor都操作完了,我们得返回数据,因此<result>诞生了

     struts就像一个控制器一样,决定了系统采取的action和返回给用户的page。

3、了解下struts中的各个标签。

    1、<package>

         为了更好的管理action,不同的package里可以存在相同名字的action

        属性:

        name ,比选

        namespace:可选,默认是""(空字符串)可与url有关联,比如请求/test/*.action,可以将namespace设置为“/test”

        exteds:可选,继承的包,可以写上extends = “struts-default”

        abstract:可选,表示该包必须被继承

    2、package规划好了之后,各种标签就可以往里面放了,比如<action>

          action决定了采用何种动作。

          属性:

          name   和url中请求的*.action是同名,

          class    这个action要调用的类

          method      执行class定义的action动作,默认是execute()

     3、执行动作之前或之后需要验证一些信息或需要进行一些后续处理,使用拦截器

        

[html]  view plain copy print ?
  1. <span style="font-size:18px;"><intercepters>  
  2.         <interceptor name="security" class="com.mycompany.security.SecurityInterceptor" />  
  3.         <interceptor-stack name="defaultComponentStatck">  
  4.                 <interceptor-ref name="component" />  
  5.                 <interceptor-ref name="deaultStack" />  
  6.         </interceptor-stack>  
  7. </intercepters></span>  

     4、action完成之后,所做的改动怎么通知struts2呢?

           那就是result的功能了

         

[html]  view plain copy print ?
  1. <span style="font-size:18px;"><action name="VelocityCounter" class="com.opensymphony.webwork.example.counter.SimpleCounter">  
  2.         <result name="success">...</result>  
  3.         <interceptor-ref name="defaultComponentStack" />  
  4. </action></span>  

 这个流程大致就是这样的了,由于初学,流程总结也只能是自己理解层面的了,是为了方便记忆。

权威的执行流程:

        

一个请求在Struts2框架中的处理大概分为以下几个步骤:

1、 客户端发送请求;
2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMeshPlugin)
3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action。FilterDispatcher的功能如下:

       (1)执行Actions
       (2)清除ActionContext
       (3)维护静态内容
       (4)清除request生命周期内的XWorkinterceptors


4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy
5、ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的Action类
6、ActionProxy创建一个ActionInvocation的实例。
7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2框架中继承的标签。在这个过程中需要涉及到ActionMapper

拦截器与过滤器:

 

1、拦截器是基于java反射机制的,而过滤器是基于函数回调的。

2、过滤器依赖于servlet容器,而拦截器不依赖于servlet容器。
3、拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用。
4、拦截器可以访问Action上下文、值栈里的对象,而过滤器不能。
5、在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。


在上述过程中所有的对象(Action,Results,Interceptors,等)都是通过ObjectFactory来创建的。

Struts2的目标很简单--使Web开发变得更加容易。为了达成这一目标,Struts2中提供了很多新特性,比如智能的默认设置、annotation的使用以及"惯例重于配置"原则的应用,而这一切都大大减少了XML配置。Struts2中的Action都是POJO,这一方面增强了Action本身的可测试性,另一方面也减小了框架内部的耦合度,而HTML表单中的输入项都被转换成了恰当的类型以供action使用。开发人员还可以通过拦截器(可以自定义拦截器或者使用Struts2提供的拦截器)来对请求进行预处理和后处理,这样一来,处理请求就变得更加模块化,从而进一步减小耦合度。模块化是一个通用的主题--可以通过插件机制来对框架进行扩展;开发人员可以使用自定义的实现来替换掉框架的关键类,从而获得框架本身所不具备的功能;可以用标签来渲染多种主题(包括自定义的主题);Action执行完毕以后,可以有多种结果类型--包括渲染JSP页面,Velocity和Freemarker模板,但并不仅限于这些。

IDEA2020.3 下 struts.xml 中 extends=“struts-default“ 报的解决方案 配置其实并无错误 按下 ctrl+alt+shift+s打开项目结构(Project Structure) 点击模块 如果没有struts 2,那就点击加号 如图 把structs.xml和structs-default.xml加入即可 阅读详情

相关推荐

深入Struts2

深入Struts2                                                 ++YONG原创,转载请注明1.    深入Struts2的配置文件本部分主要介绍struts.xml的常用配置。1.1.    包配置:Struts2框架中核心组件就是Action、拦截器等,Struts2框架使用包来管理Action和拦截器等。每个包就是多个A

Java之道 7823

struts.xml配置文件入门小结

struts2配置文件入门小结

飞翔的心 585

在Eclipse中添加struts.xml为什么会出现错误?

No1:你struts2的jar包导入齐全没有 ,在仓库里面找/在libraries找 No2:好像是struts2上面的配置有问题,应该是 &lt;?xml version="1.0" encoding="UTF-8" ?&gt; &lt;!DOCTYPE struts PUBLIC     "-//Apache Software Foundation//DTD Struts Configura...

盖世小可爱的博客 1238

Struts框架中struts-config.xml文件配置小结

弄清楚struts-config.xml中各项元素的作用,对于我们构建web项目有莫大的好处。<struts-config>是struts的根元素,它主要有8个子元素,DTD定义 如下: <!ELEMENT struts-config (data-sources?,form-beans?,global-exceptions?,global-forwards?...

baijian1976的博客 155

struts.xml配置文件小结

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"         "http://struts.apache.org/dtds/struts-2.0.dtd">     -->

chinasoftosg的专栏 883

Struts学习小结

很久以来都感觉只有善于总结才会有所进步,而我又是一个不善于总结的人,每次只是想到了就对当天学习的东西回想一下,并没有形成书面的东西,所以对学习也没起多大的作用,Java课程学习到现在感觉前边的只是很多都已经忘记了,今天一天课很实用也没有多难,但用起来感觉很容易忽视一些细节出现错误,而struts调错又不是很容易,想想索性从今天起将每个阶段所学的知识进行总结。一来与各位网友交流一下,二来便于日后复习巩固,以下为struts学习第一天的大体内容:(初次总结有些粗略)一、struts应用学习(通过一个登陆验证) 

f526503770的专栏 439

有关struts中DispatchAction的用法小结

        今天刚刚看了DispatchAction觉得这个东西有点意思,所以就写点东西,通过它的名字我想应该可以明白它的作用了,用于分发的Action,主要的好处是把一些功能类似的Action放到一个Action中,通过传入的不同参数来觉得执行哪个操作.     DispatchAction类是一个抽象类,它实现了父类(Action)的execute()方法,所以它的子类就不用来实现这个方法

xrt95050的专栏 1527

Struts2 学习小结

struts2配置步骤   在web.xml文件中添加web监听spring容器上下文对象 <!-- web监听 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-cl...

Chen117519的博客 120

struts小结

我们现在学习的是Struts2,其实Struts1和Struts2在技术上是没有很大的关联的。因此,学习Struts2的时候,不了解Struts1是没有任何关系的。 引入Struts框架,其实就是为了提高开发效率… Struts2框架预先实现了一些功能: 请求数据自动封装 文件上传的功能 对国际化功能的简化 数据效验功能…….等等 Struts2开发步骤 配置环境搭好! 引入jar文件 完整的st

W2014200746的博客 344

Struts2框架代码开发流程小结

因为工作临时需要,自己接触并学习使用了Struts框架。下面记录下自己在Struts2框架下的代码开发流程 1、配置web.xml文件 web.xml配置文件是一种J2EE配置文件,决定servlet容器的HTTP元素需求如何进行处理。它严格来说不是一个Struts2 配置文件,但它是Struts2 运作所需要进行配置的文件。 <?xml version="1.0" encoding...

乐点的博客 371

简单了解StrutsStruts2

一、概念           Struts通过采用JavaServlet/JSP技术,实现了基于JavaEEWeb应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。           对于Struts1框架而言,由于与JSP/Servlet耦合非常紧密,因而导致了一些严重的问题。首先,Struts1支持的表现层技术单一。由于Struts1出现的年代比较早,那个时候

程序媛~ 1150

Struts中ActionForm小结

要想明白struts的控制流程以及它核心API的实现原理(比如 Action/DispatchAction/ActionForm的实现原理),玩转struts1.2的关键就是能够玩转 ActionForm。 ActionForm的应用 1、——ActionForm的特性 1.创建一个form类必须继承于四个父类中的一个,比如ActionForm、ValidatorForm。 2.一个fo

Woody891的专栏 1157

Struts2-初学小结

Struts2-初学小结 前言:        我们学J2EE一定要学习框架。那框架设计从web层开始,首先要读取浏览器的请求,然后根据请求去处理业务逻辑,查询数据库,最终将数据渲染到前台展示页面。        流程知道了我们再来认识Struts2,一款优秀的web层框架。前身是webwork2,而并非是Struts...

Mr-Bean的博客 285

Struts2小结

Struts框架是流行广泛的一个MVC开源实现,而Struts2是Struts框架的新一代产品,是将Struts1和WebWork两种技术进行兼容、合并的全新的 MVC框架。Struts2框架充分发挥了Struts1和WebWork这两种技术的优势,抛弃原来Struts1的缺点,使得Web开发更加容易。 工作流程:  (1)客户端浏览器发送HTTP请求到Web应用  (2)Web容器将

书笙的博客 382
上一篇: jsp编程第一课
下一篇: Struts2_ValueStack,OGNL详解
csdnfirst2
博客等级 码龄11年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值