Struts2框架解析:Action的多实例特性与工作原理

需积分: 9 0 下载量 26 浏览量 更新于2024-08-17 收藏 1.58MB PPT 举报
"Action类在JavaEE的Struts2框架中是多实例的,与Servlet的单实例多线程模式不同。每次客户端发起对Action的访问,系统会创建一个新的Action对象来处理请求。Struts2是一个基于MVC设计模式的开源框架,它起源于WebWork,并非Struts1的直接继承者。" 在JavaEE的主流开源框架中,Struts2占据重要地位,它是用于构建企业级Web应用程序的MVC框架。Struts2的工作原理涉及到多个组件,包括控制器、拦截器和Action等。Action类是Struts2的核心组件之一,负责处理业务逻辑。与Servlet不同,Action不是单例的,每次请求都会生成一个新的实例,这样设计有利于线程安全,使得每个请求可以拥有独立的Action对象,避免了多线程环境下的数据共享问题。 Struts2框架的快速入门通常包括以下几个步骤: 1. 首先,需要下载并导入Struts2所需的jar包。 2. 开发Model层,定义业务逻辑。 3. 创建视图文件,如JSP,用于展示数据。 4. 编写Action类,这是业务逻辑的入口,实现处理用户请求的方法,通常是`execute()`方法。 5. 在`struts.xml`配置文件中配置Action,定义其行为和结果。 6. 在JSP页面中通过标签调用Action。 7. 最后,在`web.xml`中配置FilterDispatcher过滤器,它是Struts2的前端控制器。 Struts2框架的运行过程如下: - 用户发送请求到达服务器。 - 请求经过FilterDispatcher过滤器,这个过滤器是Struts2的入口点。 - FilterDispatcher调用ActionMapper来解析请求,确定要执行哪个Action。 - ActionProxy通过ConfigurationManager读取`struts.xml`配置,找到对应的Action类。 - ActionProxy实例化ActionInvocation,ActionInvocation会按照配置的拦截器链执行Action。 - 拦截器在Action执行前后进行预处理和后处理,提供了一些通用功能,如日志记录、权限检查等。 - 当execute方法执行完毕后,根据配置的result,ActionInvocation会导航到指定的视图进行页面展示。 Struts2框架的特点还包括: - Action类的`execute`方法不接受参数,便于在非容器环境中进行单元测试。 - 拦截器使得获取请求参数更加方便,减少了代码重复。 - 页面导航可以在配置文件中动态设置,避免硬编码。 - 支持多种视图技术,如JSP、FreeMarker等。 - 提供丰富的JSP标签库,简化视图层的开发。 在学习Struts2时,通常会从简单的案例开始,例如一个不含业务逻辑的Hello World程序,随着学习的深入,逐渐完善案例,添加更多的功能和复杂性。拦截器和过滤器作为控制器的两个关键层次,它们在处理请求和响应的过程中起到承上启下的作用,提供了灵活和可扩展的架构。