1)FilterDispatcher前端
Struts2的前端控制器,也是Struts2的MVC中的控制器部分。在实际开发中,只须要在web.xml中配置一次便可,以下所示:web
<filter> <filter-name>Struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>Struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
可是必定要注意,若是还有其余的过滤器,那么FilterDispatcher的配置一般要出如今最后。apache
2)Action数组
动做类,做为MVC中的模型部分,既封装业务数据,也负责处理用户的请求,execute方法就是默认的动做处理方法。服务器
3)Resultsession
结果,表明Action运行以后要转向的下一个页面。Struts2自己支持多种结果类型,如jsp、velocity、freemarker、jasperreports等,在同一个web应用中,各类结果类型还能混用。app
4)Interceptor框架
拦截器是Struts2中一个重要的概念。每个Struts2工程都使用了拦截器,只是使用了Struts2自带的内建拦截器与默认拦截器配置而已。jsp
Struts2的许多功能都是由拦截器完成的,好比:url
5)ActionContext、值栈与OGNL
Struts2在每一个Action刚开始运行的时候,都会单独为它创建一个ActionContext,把全部能访问的数据,包括请求参数(request的parameter)、请求的属性(request的Attribute)、会话(session)信息等等,都放到ActionContext中。这样一来,在之后取值、赋值的时候,就只须要访问ActionContext就能够了,因此说ActionContext能够被认为是每一个Action拥有的一个独立的内存数据中心。
对象图导航语言OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL)。它经过简单一致的表达式语法,能够存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。
值栈能够用来容纳多个对象,主要用来存放一些临时对象。当使用OGNL访问值栈中对象的属性的时候,指定属性的引用会引用更靠近值栈栈顶方向对象,晚进栈的对象会覆盖早进栈的对象。简单点说,Struts2用值栈为咱们使用Struts2作了不少引用上的简化,主要是缩短了OGNL表达式的长度。另外,值栈也能够做为一个内存数据中心,来存放一些Struts2标签临时定义的数据。
6)Struts2标签
Struts2的标签库功能强大,使用简单,大大简化了视图开发的工做。并且,它与框架的其余部分也很是天然的结合,如国际化、验证等等。
7)自动类型转换
在Action中能够有多种方式来对应页面的数据,从而自动获取页面的值。可是,从request里面接收的值都是String类型的,而Action的属性能够是各类类型的。这就须要Struts2的类型转换机制来支持,它节省了咱们大量的手工进行类型转换的开发时间。
Struts2已经内置了大量的类型转换方式:
Struts2提供的这些就已经够用了,还能够本身实现特殊的类型转换器,以知足特殊的功能须要。
8)国际化
i18n一般做为“国际化”的简称,其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数。
web应用一般应该支持多国语言,能够根据客户端请求所来自的国家和语言显示不一样语种的用户界面。这样,当须要在应用程序中添加对一种新语言的支持时,就无需修改应用程序的代码了。
Struts2很是天然的实现了国际化,咱们不须要考虑更多的事情,只是按照Struts2的要求,把不一样语言的信息,放到对应的位置便可。
9)验证框架
做为一个成熟、稳定的web应用,不管如何服务器端验证是少不了的。一般状况下,咱们不会彻底相信客户端传递过来的数据,应该在真正调用业务逻辑以前对数据进行校验,若是用户提交的数据不符合要求,就不会去调用业务逻辑。
Struts2为咱们提供了一套完整、严密,可扩展的验证框架,保证在Action运行以前会判断用户提交的信息是否完整、符合条件。