Struts2详解:核心机制与面试重点

需积分: 1 0 下载量 92 浏览量 更新于2024-09-14 收藏 18KB TXT 举报
"struts2面试宝典,涵盖了值栈内容、文件的上传下载,是学习和理解struts2框架的好资料。" 在Java Web开发领域,Struts2是一个非常流行的MVC(Model-View-Controller)框架,它极大地简化了企业级应用的构建。与早期的Struts1框架相比,Struts2在设计和功能上都有显著的提升,提供了更加灵活和强大的控制层解决方案。 1. **Struts2与Struts1的区别** Struts2并不是Struts1的简单升级,而是结合了WebWork框架的核心特性。在Struts1中,Action类负责处理请求并直接返回结果,而Struts2引入了拦截器(Interceptor)的概念,使得业务逻辑与流程控制分离,更符合MVC模式。Struts2的Action不再直接返回视图,而是通过配置<action>元素中的<result>来指定结果页面或跳转动作。 2. **全局结果与结果类型** 在Struts2中,可以定义全局结果(<global-results>),这些结果可以应用于当前包(package)下的所有action,提高了代码的复用性和可维护性。结果类型有多种,如dispatcher用于转发到JSP页面,stream用于处理文件下载,redirect和redirectAction分别实现重定向到不同的URL。 3. **Servlet与Action的关系** Struts2中的Action类似于Servlet,但并不直接处理HTTP请求。请求会先经过StrutsPrepareAndExecuteFilter,然后由ActionProxy创建并执行Action。Action不需继承特定的基类,可以自定义,而Struts1的Action通常需要继承ActionSupport。 4. **模型驱动(ModelDriven)** Struts2支持模型驱动模式,Action类可以实现ModelDriven接口,将模型对象自动绑定到ValueStack。当Action执行时,如果实现了ModelDriven,Struts2会自动从ValueStack中获取或设置模型对象。 5. **参数绑定与转换错误处理** Struts2提供了强大的参数绑定和类型转换机制。请求参数会自动映射到Action的属性,同时处理类型转换错误。如果转换失败,会添加字段错误(addFieldError)并在验证阶段显示错误信息。 6. **验证(Validation)与工作流(Workflow)** 验证是Struts2的一个重要部分,可以通过Action中的validate方法进行业务规则验证。验证失败时,错误信息会存储在fieldErrors中。工作流组件会检查是否有错误,如果有,根据错误类型决定是否跳转到输入页面(input)或其他结果。 7. **配置与Action的执行** `<action>`元素在struts.xml配置文件中定义,包含Action的名称、类、结果等信息。默认情况下,每个Action的execute()方法会被调用。如果execute()返回一个字符串结果,将根据结果字符串决定如何处理后续流程。 Struts2框架通过提供丰富的拦截器、灵活的结果管理和强大的数据绑定及验证机制,为开发者提供了高效的企业级Web应用开发工具。理解和掌握Struts2的这些核心概念,对于从事Java Web开发的程序员来说,无疑能提升开发效率和代码质量。