概述
Struts 为 Web 应用提供了通用的框架,让开发人员可以把主要精力集中在如何解决实际业务问题上,与此同时 Struts 框架也允许开发人员根据实际需要进行扩展和定制,从而可以更好的适应用户的需求。采用 Struts 可以简化遵循 MVC 设计模式的 Web 应用的开发工作,很好地实现代码重用,使开发人员从一些繁琐的工作中解脱出来,快速开发能够充分发挥 JSP/Servlet 优点、并具有强可扩展性的 Web 应用。总之, Struts 的出现使得 Web 应用的开发过程大大简化,从而能够缩短开发周期、提高开发效率。
提供服务:
- 作为控制器的Servlet
- 提供大量的标签库
- 提供了用于国际化的框架,利用不同的配置文件,可以帮助用户选择合适自己的语言
- 提供了JDBC的实现,来定义数据源和数据库连接池
- XML语法分析工具
- 文件下载机制
工作流程
ActionServlet是struts的核心控制器,所有的用户请求都必须通过ActionServlet的处理,而struts-config.xml是struts的核心配置文件,在这个文件中配置了用户请求URL和控制器Action的映射关系,ActionServlet通过这个配置文件把用户的请求发送到对应的控制器中。
当web应用程序启动的时候,就会加载加载struts-config.xml初始化ActionServlet,在加载成功后会把这些URL和控制器映射关系存放在ActionMapping对象或者其他对象中。
ActionServlet处理用户请求流程如下:
- ActionServlet接收到用户的请求后,会根据请求URL寻找匹配的ActionMapping对象。(如果匹配失败,说明用户请求的URL路径信息有误,所以返回请求路径无效的信息)
- 根据ActionMapping中的映射信息找到对应的ActionForm对象,并把用户提交的表单信息保存到这个ActionForm对象中。(若ActionForm对象不存在,则创建一个ActionForm对象)
- 根据struts-config.xml中这个配置文件的配置信息,判断表单是否需要验证。如果需要验证,就调用ActionForm对象中的validate()方法对用户输入的表单进行验证。返回ActionErrors对象,则表明验证失败,返回null则表示验证通过。
- ActionServlet可以根据ActionMapping对象转发到对应的控制器Action,并调用这个Action的excute()方法。(如果对应的Action对象不存在,就创建这个对象)
- Action的execute()方法返回一个ActionForward对象,ActionServlet再把用户请求转发给ActionForward对象指向的JSP组件。
- ActionForward对象指向的JSP组件生成动态网页,返回给用户。