Struts 2 简介
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,在用户请求和模块化处理方面以及页面展示,Struts2 表现明显
Strus 2 与用户交互
Strus 2 的架构图
关于图中的Key:
- Servlet Filters:过滤器链,客户端的所有请求都要经过Filter链的处理。
- Struts Core:Struts2的核心部分,但是Struts2已经帮我们做好了,我们不需要去做这个
- Interceptors,Struts2的拦截器。Struts2提供了很多默认的拦截器,可以完成日常开发的绝大部分工作;而我们自定义的拦截器,用来实现实际的客户业务需要的功能。
- User Created,由开发人员创建的,包括struts.xml、Action、Template,这些是每个使用Struts2来进行开发的人员都必须会的。
名称解释:
- 1.FilterDispatcher是整个Struts2的调度中心,也就是MVC中的C(控制中心),根据ActionMapper的结果来决定是否处理请求,如果ActionMapper指出该URL应该被Struts2处理,那么它将会执行Action处理,并停止过滤器链上还没有执行的过滤器。
- 2.ActionMapper 会判断这个请求是否应该被Struts2处理,如果需要Struts2处理,ActionMapper会返回一个对象来描述请求对应的ActionInvocation的信息。
- 3.ActionProxy,它会创建一个ActionInvocation实例,位于Action和xwork之间,使得我们在将来有机会引入更多的实现方式,比如通过WebService来实现等。
- 4.ConfigurationManager是xwork配置的管理中心,可以把它看做struts.xml这个配置文件在内存中的对应。
- 5.struts.xml,是开发人员必须光顾的地方。是Stuts2的应用配置文件,负责诸如URL与Action之间映射关系的配置、以及执行后页面跳转的Result配置等。
- 6.ActionInvocation:真正调用并执行Action,它拥有一个Action实例和这个Action所依赖的拦截器实例。ActionInvocation会按照指定的顺序去执行这些拦截器、Action以及相应的Result。
- Interceptor(拦截器):是Struts2的基石,类似于JavaWeb的Filter,拦截器是一些无状态的类,拦截器可以自动拦截Action,它们给开发者提供了在Action运行之前或Result运行之后来执行一些功能代码的机会。
- 7.Action:用来处理请求,封装数据。
Strus 2 第一个框架程序helloword
1.新建Dynameic web projec,模块版本选择2.5,因为会默认创建web.xml
2.将struts2的核心jar包添加到项目中
3.需要拦截用户请求,所有在web.xml文件中添加过滤
<filter> <filter-name>Struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class> </filter> <filter-mapping> <filter-name>Struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
4.项目添加struts.xml文件,一般添加到src文件夹中
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="helloword" extends="struts-default"> <action name="hello" class="com.lin.action.HelloStuts2Action2"> <result name="success">helloword.jsp</result> </action> </package> </struts>
action
name:路径名,比如http://localhost:8080/Strust2Chap1/hello 带参数的http://localhost:8080/Strust2Chap2/hello?name=av
calss
负责处理action的自定义类,自定义的必须是实现Action接口
public class HelloStuts2Action implements Action{ @Override public String execute() throws Exception { System.out.println("执行了 action默认方法"); return Action.SUCCESS; } }
result可以有多个
name指定结果success,none,error,input,login
5.完事,挂载项目