Struts学习笔记
一、Controller(控制器) Struts中的控制器包括三个组件:ActionServlet类、Action类、Plugins以及RequestProcesser。 1.ActionServlet类: ◆ 处理过程: org.apache.struts.action.ActionServlet类是Struts应用程序的核心。它是处理客户端请求和决定哪一个Action类来处理每个接收到的请求的最主要的控制器组件。它担当着Action工厂类的角色去创建一个指定的Action类。事实上,它也就是继承于HttpServlet类的一个Servlet类。它实现了HttpServlet生命周期中的所有方法,如:init(),doGet(),doPost(),destroy()。当ActionServlet接收到请求之后,它的执行步骤如下: ① doGet()或者doPost()方法接收请求,然后调用ActionServlet类的process()方法。Process()方法会返回一个当前的RequestProcessor类的实例对象。然后调用RequestProcessor类的process()方法。而实际为当前请求提供处理服务的就是这个process()方法。所有的一切都是在这里完成的。 ② RequestProcessor.process()方法会从struts-config.xml文件中将<form-bean>的name属性与<action>中的name属性对应起来,从而找到相关的ActionForm类的类名称 ③ 到实例池中找一个ActionForm类的实例。将它的数据成员与请求的值对应起来。 ④ 调用ActionForm类的validate()方法,检查提交数据的有效性。 ⑤ 从<action>中接收到Action类的类名称。创建一个Action类,然后调用Action类的execute()方法。当Action类返回一个ActionForward类的实例之后,控制权再次交给ActionServlet。 ⑥ ActionServlet则forward到指定的target进行处理。至此ActionServlet对request的处理完毕。 ◆ 扩展ActionServlet类: 如果想写自己的ActionServlet类,则一定要继承自org.apache.struts.action.ActionServlet类,并且按下面的四个步骤进行: ① 创建一个继承自org.apache.struts.action.ActionServlet类的类。 ② 实现自定义的商业逻辑方法。 ③ 编译这个类,并且将它放到Web 应用程序的类路径中 ④ 修改web.xml文件中的<servlet>元素中的相关设置。 ◆ 配置ActionServlet:见“web.xml配置文件”一文。 2.Action类: 这是Struts控制器的第二个组件,Action类在每一个应用系统中都必须被扩展。下面看一看Action中重要的方法: ① execute()方法:这个方法是必须要重写的方法。Action类中实现了两个execute()方法,一个接受Http请求,一个不是。 ◆扩展Action类 ① 创建一个继承于Action的类 ② 实现execute()方法和自己的商业逻辑 ③ 在struts-config.xml文件中配置<Action-mappings />元素 在struts-config.xml中配置Action类的参数,请参考“struts-config配置文件讲解”。
|