Struts2究竟干了什么

在javaWeb的世界中jsp+servlet构成了web层,而今天我要分享的内容就是struts2究竟干了什么。

Struts2框架——web层

Sping框架——业务层

Hibernate框架——数据层

你可以简单的这么理解,用一句很流行的话讲:没茅台!

第一个请求总是来自浏览器的的url中,它要请求我们服务器上某个项目的首页!

然后我们从首页上的超链接或者表单等继续发送请求,来完成用户的某项需求!

Struts2中最重要的一个组件进而被引出,过滤器!作用:简单说过滤请求!

Struts2中的过滤器异常强大,里面的init方法主要加载配置文件,通过配置文件信息来完成

action类对象创建、方法调用以及后面讲的拦截器配置文件的加载。

不明白过滤器是什么的可以查看我以前的javaweb文章,有详细介绍。

Struts2中使用action替代了servlet,注意action跟servlet有一个重要区别:action是多实例对象!

在Struts2中提供了一系列的获取表单数据的方法,以及封装表单数据到对象、list集合的方式!(一看就会)

同时Struts2还提供了一系列在jsp中获取域对象内容以及Struts2专属的值栈中数据的标签!(Struts2标签需要OGNL表达式联合使用=EL表达式)

这里引出了Struts2第二大组件值栈!

概念:栈是一种数据结构,堆栈是java程序员常常用的,栈区的特点就是后进先出或者说先进后出!(自己尝试写一个堆栈队列的数据结构容器)

作用:存储数据

结构:主要分为两大部分Root和Context

  Root为List集合,默认存储一个action引用(我们主要使用它来存储数据到Jsp页面中)

  Context为Map集合,里面存储Servlet三大域对象引用以及ServletCongfig引用等

注意:每个action都有且只有一个值栈

Struts2另一个大组件——拦截器

拦截器:Struts2在设计拦截器的时候,采用了Aop思想以及责任链设计模式!

那么拦截器什么时候出生,出生后干了什么呢?

拦截器在action对象创建后,调用方法之前,被加载,Struts2中有很多默认拦截器,这些拦截器都会被加载,但不会被调用,只有我们在配置文件中

进行配置以后才会被调用,其实每个拦截器都是一个方法的封装,也就是一个函数!一个功能!只不过这种对action扩展功能的方式不是通过创建对象调用方法

来实现的,而是通过修改配置文件完成——这个就是AOP思想!

至于什么是责任链,简单说跟过滤链很相似,都采用了放行机制!

真实项目中我们往往需要自定义拦截器,来实现功能扩展!(所以这部分还是很重要的)

注意:拦截器只拦截action,而过滤器什么都拦截比如jsp、servlet、action、图片路径等

原文地址:https://www.cnblogs.com/wangyinxu/p/8708238.html