三、struts的流程
下面结合图3.7 对Struts 的工作流程作详细的讲解。
Web 应用都是请求一响应的程序结构。程序是由客户端Client 发出Http 请求开始的,客户端请求被ActionServlet 拦截。在ActionServlet 处,有两种情况:
·要求逻辑控制器处理的请求:
·简单转发的请求。
对于第一种的请求, ActionServlet 需要调用对应的Action 。因此ActionServlet 将请求转发到Action ,如果请求还配置了对应的FormBean ,则ActionServlet 还负责用请求参数填充ActionFormo ActionForm 的实质就是JavaBean ,专门用于封装请求参数。
此时的Action 将无须从HTTP Request 中获取请求参数,而是从ActionForm 中获得请求参数。Action 获得请求参数后,调用Model 对象由JavaBean 处理用户请求。Action处理完用户请求之后,将处理结果包装成ActionForward ,回送给ActionServlet 。由于ActionForward 对象封装了JSP 资源的映射。因此, ActionServlet 知道调用合适的JSP 资源表现给客户端。对于第二种请求, HTTP 请求无须Action 处理,只是对普通资源的请求,作为超级链接的替代。因为ActionServlet 直接将该请求转发给JSP 资源,既不会填充ActionForm,也无须调用Action 处理。
JSP 页面在表现之前,还需要调用对应的JavaBean,此处的JavaBean 不再是包含业务逻辑的JavaBean,而是封装了处理结果的普通vo (值对象)。JSP 页面根据vo 的值,可能利用JSTL 或者Struts 的标签库来生成HTTP 响应给客户端。总之JSP 应尽量避免使用Java 脚本。