一、org.apache.struts.actions.ForwardAction
许多情况下,你只需要从一个jsp页面转发到另一个页面,不用实际完成一个action类的逻辑.在url中指定parameter属性中指定。
例如:
<span style="font-size:18px;"><action
input="/index.jsp"
name="loginForm"
path="/viewsignin"
parameter="/security/signin.jsp"
scope="request"
type="org.apache.struts.actions.ForwardAction" validate="true"/>
</action></span>
二、org.apache.stuts.actions.DispatchAction
让多种通常会散布在多个action类中的操作全部都放在同一个类里。例如:
action:
<span style="font-size:18px;">package com.oreilly.struts.storefront.order;
import java.io.IOException;
import java.text.Format;
import java.text.NumberFormat;
import java.util.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import org.apache.struts.actions.DispatchAction;
public class ShoppingCartActions extends DispatchAction{
public ActionForward view(ActionMapping mapping,ActionForm form,HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) throws Exception{
//查询操作
return mapping.findForward("");//转向配置的页面A
}
public ActionForward update(ActionMapping mapping,ActionForm form,HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) throws Exception{
//更新操作
rutrn mapping.findForward("");//转向配置的页面B
}
}
struts-config.xml指定parameter属性
<action
path="/cart"
input="/order/shoppingcart.jsp"
parameter="method"
scope="reuqest"
type="com.oreilly.struts.storefront.order.ShoppingCartActions"
validate="false">
<forward name="success" path="/order/shoppingcart.jsp" redirect="ture"/>
</action>
上面的/cart动作映射指定了parameter属性,并将其值设置为字面字符串method.此时,不仅会调用/cart动作映射,而且还会传递一个额外的请求参数(键/值对).其"键"就是此映射中parameter属性所指定的值.而这个请求参数的"值"必须是所调用方法的名.如果要调用action的update()方法,那必须如此调用:
http://localhost:8080/storefront/action/cart?method=update
名为method的请求参数现在的值为update,而dispatchaction会以此来决定要调用哪个方法.你的DispatchAction子类中必须有一个方法与这个参数的值匹配。