ction返回的键值来决定调用什么视图来显示Action类的处理结果。
此外,除了Action类之外,对于业务逻辑的操作还需要由ActionMapping类和ActionForward等组件来协助完成,它们用来指定不同的业务逻辑的运行方向。
4.配置文件Struts.config.xmlt用户的请求是通过ActionServlet来处理转发的。
在Struts中Struts-con_fig.xml这个配置文件就是用来告诉ActionServlet将请求转发给哪个Action来处理的,它描述了用户请求路径和Action映射关系的配置信息。
图2.2显示了Struts框架体系结构响应客户请求时,各个组成部分的工作原理。
第二章系统技术基础介绍 7 一uT个D漕七 ”nIIr峒习、 -一 7 控制器 委派 , 业务逻辑 浏览器 、/叫ts-co到nfig.xml t , r 1 r l_--HTTP响应 视图 一 执行结果 模型 图2.2 Struts工作原理示意图 由图2.2可知,对于从浏览器发出的请求,需要经控制器(ActionServlet)处理。
控制器首先将用户在页面中输入的内容填充到合适的JavaBean(此处为ActionForrn)中去,然后控制器执行相关的Action对象,接着Action将控制转发给JSP,JSP使用模型数据产生对浏览器的应答。
在这整个过程中Struts.config.xml配置文件起到一个调度表的作用。
2.2.2 Struts执行流程 在基于Struts框架的Web应用中,当Web应用启动时会加载并初始化ActionServlet。
ActionServlet从Struts.config.xml配置文件中读取配置信息,并把它们存放在各种配置对象中。
这个初始化过程是在服务器启动时自动完成的,在初始化完成之后,当ActionServlet接收到一个客户请求时,将执行如下流程: 1.检索和用户请求相匹配的ActionMapping实例,如果存在,表示找到ActionMapping所对应的ActionForm对象,如果不存在,则返回用户请求路径无效。
2.如果ActionForm实例不存在,则创建一个ActionForm对象,把客户提交表单数据保存到该ActionForm对象中。
3.根据配置信息决定是否需要表单验证,如果需要验证,就调用ActionForm中的validate0方法。
4.如果validate()方法返回为null或者返回一个不包含ActionMessage的ActionError对象,表示表单验证成功。
如果validate0方法返回一个包含一个或者多个ActionMessage的ActionError对象,则表示表单验证失败,此时ActionServlet将直接把请求转发给包含客户提交表单的JSP组件。
在这种情况下,其后的流程将不再执行。
5.ActionServlet根据ActionMapping实例包含的映射信息决定将请求转发给哪个Action的execute0方法。
6.Action的executeO方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象所指向的JSP组件。
7.ActionForward对象指向的JSP组件生成动态网页,返回给客户端浏览器。
2.3 Spring框架的介绍 Spring的核心是一个轻量级的容器,它是实现IoC(Inversion ofControl,控制反转)容器和非侵入性的框架,并提供了AOP(Aspect.oriented programming,面向切面编程)概念的实现方式:提供对持久层、事务的支持;提供MVC Web框架的实现,并对于一些常用的企业级API提供一致的模型封装,是一个全方位的应用程序框架,除此之外,对于现存的各种框架(Struts、JSF、Hibernate等),Spring也提供了与它们整合的方案【19】。
2