关于struts1.3中使用DispatchAction的一个问题

简介:

在action中 不能有execute方法,否则其他的方法则不能执行.

 

 

如下:

 

package com.yanek.mvc.demo;

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 TestAction extends DispatchAction
 {

 public ActionForward execute(ActionMapping mapping, ActionForm actionform,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {

  UserForm form=(UserForm)actionform;
  
  String username=form.getUsername();
  String password=form.getPassword();
  
  System.out.println("parametor..."+mapping.getParameter());

  System.out.println("username..."+username);
  System.out.println("password..."+password);
  
  
  if (username.equals("admin") && password.equals("admin"))
  {
   mapping.findForward("success");
  }
  else
  {
   mapping.findForward("success");
  }
  
  
  
  System.out.println("action execue index...");
  return mapping.findForward("success");

 }
 
 public ActionForward add(ActionMapping mapping, ActionForm actionform,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {

  UserForm form=(UserForm)actionform;
  
  String username=form.getUsername();
  String password=form.getPassword();

  System.out.println("username..."+username);
  System.out.println("password..."+password);
  
  System.out.println("action add ...");
  
  return mapping.findForward("add");

 }
 
 public ActionForward update(ActionMapping mapping, ActionForm actionform,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {

  UserForm form=(UserForm)actionform;
  
  String username=form.getUsername();
  String password=form.getPassword();

  System.out.println("username..."+username);
  System.out.println("password..."+password);
  
  System.out.println("action update ...");
  
  return mapping.findForward("update");

 }
 
 
 public ActionForward delete(ActionMapping mapping, ActionForm actionform,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {

  UserForm form=(UserForm)actionform;
  
  String username=form.getUsername();
  String password=form.getPassword();

  System.out.println("username..."+username);
  System.out.println("password..."+password);
  
  System.out.println("action delete ...");
  
  return mapping.findForward("delete");

 }
 
 public ActionForward list(ActionMapping mapping, ActionForm actionform,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {

  UserForm form=(UserForm)actionform;
  
  String username=form.getUsername();
  String password=form.getPassword();

  System.out.println("username..."+username);
  System.out.println("password..."+password);
  
  System.out.println("action list ...");
  
  return mapping.findForward("list");

 }

}

 

由于 action里有execute方法,所以其他的方法都不能执行,执行其他方法时都会执行execute方法.

 

把execute改名或去掉即可.

 

 

 

配置:

 

        <action path="/test" type="com.yanek.mvc.demo.TestAction" name="userForm" scope="request" parameter="action">
         <forward name="success" path="/test/index.jsp"/>
         <forward name="add" path="/test/add.jsp"/>
         <forward name="update" path="/test/update.jsp"/>
         <forward name="delete" path="/test/delete.jsp"/>
         <forward name="list" path="/test/list.jsp"/>
       
        </action>

 

 

 

访问:

 

 http://127.0.0.1:8080/struts1Demo/test.do?action=list 

http://127.0.0.1:8080/struts1Demo/test.do?action=add

http://127.0.0.1:8080/struts1Demo/test.do?action=update

http://127.0.0.1:8080/struts1Demo/test.do?action=delete

 

执行相应的方法

 

如果有execute方法,则执行如上方法都会进入execute方法.

 

 

 

 

目录
相关文章
|
7月前
|
传感器 API
DIS
DIS
73 2
SpringMVC源码解析DispatcherServlet#doDispatch方法流程(下)
SpringMVC源码解析DispatcherServlet#doDispatch方法流程(下)
314 0
SpringMVC源码解析DispatcherServlet#doDispatch方法流程(下)
|
设计模式 开发框架 前端开发
SpringMVC源码解析DispatcherServlet#doDispatch方法流程(上)
SpringMVC源码解析DispatcherServlet#doDispatch方法流程(上)
259 0
SpringMVC源码解析DispatcherServlet#doDispatch方法流程(上)
|
XML 前端开发 Java
SpringMVC之context-dispatcher.xml,了解基本的控制器
SpringMVC之context-dispatcher.xml,了解基本的控制器
160 0
SpringMVC之context-dispatcher.xml,了解基本的控制器
|
Java 容器 Spring
DispatcherServlet
路径 org.springframework.web.servlet.DispatcherServlet 继承关系 重点关注doService()方法 该方法重写了父类FrameworkServlet的方法 FrameworkServlet在processRequest()方法中调用了...
835 0
|
前端开发 Java Spring
DispatcherServlet源码分析
DispatcherServlet处理request DispatcherServlet是前端控制器, Spring MVC遵循前端控制器模式,前端控制器是MVC 模式中C的一部分, 除此之外,C还包括我们定义的Controller等应用控制器类。
755 0
DispatcherServlet请求流程解析-doDispatch(三)
上篇文章我们主要看了DispatcherServlet在提供服务之间做的初始化工作,大部门工作都在WebApplicationContext中完成,然后WebApplicationContext是DispatcherServlet的一个属性。