"Struts 2 第三章的内容主要围绕如何在Web应用程序中接收和处理用户输入数据展开,重点讲解了Struts 2框架中的多种数据接收方式,包括使用领域对象、ModelDriven action以及直接操作Action的属性。同时,还提到了ActionContext和ServletActionContext在获取Web层数据中的作用,以及如何访问request、session和application对象。"
在Struts 2框架中,接收用户输入数据的方式比传统Web应用程序更为灵活和高效。传统的Web应用通常依赖于HttpServletRequest的getParameter()方法来获取请求参数,但在Struts 2中,框架提供了数据绑定机制,可以自动将请求参数绑定到JavaBean对象,减少了手动处理数据的繁琐工作。
**3.1 使用领域对象接收用户输入**
Struts 1中,ActionForm是接收用户输入的主要手段,但这种方式会导致业务逻辑层与框架耦合。Struts 2对此进行了改进,支持直接使用领域对象(Domain Object)来接收数据。例如,对于一个用户登录场景,我们可以创建一个User类作为领域对象,包含用户名和密码属性,然后在Action中直接使用这个User对象,框架会自动将请求参数绑定到对象的相应属性上,简化了数据处理流程。
**ModelDriven action**
另一种接收用户输入的方法是使用ModelDriven action。这种模式下,Action类只需要实现ModelDriven接口,并声明一个model属性,框架会自动将请求参数绑定到model对象。这进一步降低了Action类的复杂性,使得Action更专注于业务逻辑而不是数据绑定。
**直接使用Action的属性**
除了ModelDriven,Struts 2也允许直接在Action类中定义属性,这些属性会被自动映射到请求参数。例如,如果请求中有名为username和password的参数,Action类可以直接包含这两个属性,框架会自动填充它们的值。
**ActionContext和ServletActionContext**
在Struts 2中,ActionContext和ServletActionContext是获取和设置请求、session及application范围内的数据的关键。ActionContext提供了与当前请求关联的环境信息,而ServletActionContext是ActionContext的一个子类,增加了对Servlet API的访问,如request、session和application对象的访问。
**访问request、session和application对象**
在处理用户输入时,可能需要存储或共享数据。通过ActionContext或ServletActionContext,开发者可以直接操作这些范围的对象,如将数据放入request中在一次请求内传递,存入session中跨多个请求保持状态,或者放入application中在整个应用范围内共享。
Struts 2第三章的内容深入讲解了如何在Struts 2框架下有效地处理用户输入,强调了解耦合的设计原则和方便的数据绑定机制,这对于开发高效、可维护的Web应用至关重要。通过实例展示了从创建项目、编写登录页面到实现数据接收的完整过程,为学习者提供了清晰的实践指导。