你在<action-mapping>中配置啊!
解决方案 »
- 基于SSH的项目的连接oracle数据库报Cannot create PoolableConnectionFactory 错误,请大神帮看看
- 如何从数据库中取图片并展示到Label中
- cas····,会的进来说说,不要百度···
- Ext的问题
- servlet
- 谁有log4j.jar包?
- (急)java.io.IOException: Server returned HTTP response code: 500 for URL
- tomcat自带的sendMail例子问题, 急!!!救救我!!!
- tomcat一闪而过,不可用,但是用startup-using-launcher.bat可以执行jsp,如何解决?
- 我用 ajax提交到后台action并在action中给session重新赋值,后返回页面success,session中的值不改变,为什么?
- tomcat安装好了,但http://127.0.0.1:8080/admin为空白页!
- HelloWorld not bound
LookupDispatchAction 是 DispatchAction的子类。 The LookupDispatchAction 类提供了一种机制,将一系列相关功能模块化到一个操作中,而无需为每个功能创建单独的操作。以用于添加用户、更新用户和删除用户的一系列相关功能为例。无需创建AddUserAction类,UpdateUserAction类和RemoveUserAction类,您可以通过扩展LookupDispatchAction,创建具有以下三个方法的UserAction 类:add( ),、update( )和remove( )。 运行时, LookupDispatchAction将请求传进给其子类中的相应方法。 根据由传入的请求发送给LookupDispatchAction 类的请求参数的值,该类决定调用哪个方法。LookupDispatchAction 使用请求参数的值来逆向映射到Struts 资源文件 ApplicationResources.properties中的属性。 就是说,将请求参数的值与资源文件中的属性值相比较,直到找到匹配值为止。然后,相匹配的属性的关键字将用作另一映射的关键字,该关键字将映射到LookupDispatchAction子类中将要执行的方法。要使用LookupDispatchAction,您必须创建它的一个予类,并提供处理请求时要调用的一系列方法。该子类还必须包含getKeyMethodMap( )方法,此方法可以将类中的方法与Struts资源文件中的关键字形成映射关系。另外,您必须为操作设置一个指定请求参数名称的操作映射,此参数将用来选择各个请求将要调用的方法。下面的示例给出了从DispatchAction派生的UserAction类: package com.jamesholmes.example;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;public class UserAction extends LookupDispatchAction
{
protected Map getKeyMethodMap()
{
HashMap map = new HashMap();
map.put("button.add", "add");
map.put("button.update", "update");
map.put("button.remove", "remove"); return map;
} public ActionForward add(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception
{
// Add user.
… return new ActionForward("success");
} public ActionForward update(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception
{
// Update user.
… return new ActionForward("success");
} public ActionForward remove(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception
{
// Remove user.
… return new ActionForward("success");
}
}
注意 该类没有像其它Action的子类那样实现execute( )方法。这是因为DispatchAction提供了该方法的(负责委托给各个方法)的实现。还要注意getKeyMethodMap( )方法的实现。该方法是 LookupDispatchAction的子类所需的,用来将Struts资源文件中的关键字名称映射到类中的方法。资源文件中的关键字的值用于与传入的请求参数的值(由Struts配置文件中的action标记的parameter属性指定)相匹配 。为了使LookupDispatchAction子类工作,你必须在Struts 配置文件中创建一个可以指定请求参数名称的操作映射,该请求参数用于选择特定请求将要调用的方法。以下是介绍如何操作的示例代码: <action-mappings>
<action path="/User"
type="com.jamesholmes.example.UserAction"
parameter="function"/>
</action-mappings>
由action标记的parameter 属性指定的值将用作请求参数的名称,其中包含Struts资源文件中的关键字的值,如下所示: button.add=Add User
button.update=Update User
button.remove=Remove User
LookupDispatchAction将使用传入的请求参数值在资源文件中逆向查找某个关键字。根据由getKeyMethodMap( )方法指定的“关键字-方法”映射,像匹配的关键字将映射到要执行的相应方法。
你的这几个页面应该属于同一个业务逻辑整体,因此所有页面都指向同一个Action,在Action中用一个static变量pageIndex表示第几个页面,同时将每个页面的表单Form对象做为Acion的private成员,在每个页面的jsp中用一个hidden元素表示前进还是后退,点击“下一步”时将其置为"forward",点击“上一步”时将其置为"back",如果是“forward",在Action中将上一页面的form表单数据存入对应的form成员,同时pageIndex++并且request.setAtrribute("flag","forward"),如果是“back”,在Action中将之前已保存的上一页面的form成员并request.setAttribute("formValue",PageNForm);request.setAttribute("flag","back"),同时pageIndex--;每个jsp页面中先request.getAttribute("flag");如果是“back”,则PageNFrom form = (PageNForm)request.getAttribute("formValue");然后将表单元素值设为取得的form中的值即可