Struts Action深入

来源:互联网 发布:朗伽病理软件 编辑:程序博客网 时间:2024/06/03 19:44

ForwardAction

在Struts中通过org.apache.struts.actions.ForwardAction类可以将一个JSP页面作为一个Action进行映射,通过配置struts-config.xml文件即可

定义一个跳转页----hello.jsp

<%@ page language="java" pageEncoding="GBK"%><%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%><%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%><%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%><%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%><html:html lang="true"><head><html:base /><title>hello.jsp</title></head><body><h2>HELLO MLDN !!!</h2></body></html:html>
配置struts-config.xml

<action-mappings><action path="/hello"type="org.apache.struts.actions.ForwardAction"parameter="/hello.jsp" /></action-mappings>
通过超链接访问hello.do----forindex.jsp

<%@ page language="java" pageEncoding="GBK"%><html><head>       <title></title></head><body>       <h2><a href="hello.do">连接到hello.do页面</a></h2></body></html>

在标准的MVC设计模式中,所有的JSP都应该通过Servlet(Struts中为Action)跳转到另外一个JSP页面,所以在Struts中为了提倡这种概念,而引入了ForwardAction做一个中间跳转的Action。


IncludeAction

在Struts中也为引入资源提供了一个org.apache.struts.actions.IncludeAction类,通过此Action的配置,可以将一个页面进行导入。此Action也需要通过配置完成,配置如下:

将hello.jsp配置到IncludeAction中----修改struts-config.xml

<action-mappings><action path="/inc" type="org.apache.struts.actions.IncludeAction"parameter="/hello.jsp" /></action-mappings>
包含配置的IncludeAction----incindex.jsp

<%@ page language="java" pageEncoding="GBK"%><html><head>       <title></title></head><body><span style="white-space:pre"></span></span><h2>你好,小明</h2><span style="white-space:pre"></span></span><jsp:include page="inc.do" /></body></html>



DispatchAction

在原始的Struts开发中,一个Action中只包含一个execute()方法,但是如果此时的项目很大,则会有多个业务类似的Action出现,会造成后期的维护困难,所以在Struts中为了解决这样的问题,专门增加了一个DispatchAction类,此类集成Action类,并且完成分发的处理操作。

分发Action的使用与普通的Action类似,仍然要被一个类所继承,并且根据要求覆写方法,唯一不同的是,此时的方法可以有多个,而且着多个方法分别表示着不同的操作。

定义一个分发Action----EmpAction.java

package org.lxh.struts.action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction;import org.lxh.struts.form.EmpForm;public class EmpAction extends DispatchAction {public ActionForward insert(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {EmpForm empForm = (EmpForm) form;// TODO Auto-generated method stubSystem.out.println("*** 增加操作") ;return null;} public ActionForward update(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {EmpForm empForm = (EmpForm) form;// TODO Auto-generated method stubSystem.out.println("*** 更新操作") ;return null;}}

配置分发Action----修改struts-config.xml

<action-mappings>  <action      attribute="empForm"      input="/form/emp.jsp"      name="empForm"      <strong>parameter="status"</strong>      path="/emp"      scope="request"      type="org.lxh.struts.action.EmpAction" /></action-mappings>
在分发Action操作中一个决定性的参数就是parameter,以后再传递是根据status的内容会调用EmpAction中的指定方法,

例如:
调用insert()方法:status=insert

调用update()方法:status=update

分发Action不能编写exectue()方法。

如果一个类集成了DispatchAction类,则在此类中一定不能编写execute()方法,否则像insert()和update()方法都将无法正确调用。




0 0
原创粉丝点击