[摘要]Struts学习笔记一、Controller(控制器)Struts中的控制器包括三个组件:ActionServlet类、Action类、Plugins以及RequestProcesser。1.ActionServlet类:◆ 处理过程:org.apache.struts.action.Action...
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配置文件讲解”。
……