`

struts extends 继承 (在抽象类中调用抽象方法,具体由其子类实现)

阅读更多

public abstract class SecurityAction extends BaseAction {

 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {
  /*User u=new User();
  u.setName("zw");
  request.getSession().setAttribute("user", u);//这个是为了执行下面的doExcetion()而加的
  */User user=(User)request.getSession().getAttribute("user");//获取session中的对象
  if(user==null||user.getName()==null){
   String url=request.getServletPath();
   String query=request.getQueryString();//request传的参数
   if(query!=null){
    request.setAttribute("signonAction", url+"?"+query);
   }
   else{
    request.setAttribute("signonAction", url);
   }
   System.out.println("url: "+url+"--query: "+query);
   return mapping.findForward("loginfail");
  }
  else{
   return doExecute(mapping,form,request,response);//由一个execute()跳转到另一个execute()
  }
 }

 protected abstract ActionForward doExecute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
 throws Exception ;//由子类来实现方法,这个父类调用子类的方法
}

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionServlet;

public class BaseAction extends Action {

 private String base="base";//通常这里是一个所有对象需要用到的 对象

 protected String getBase() {
  return base;
 }

 public void setServlet(ActionServlet servlet) {
  super.setServlet(servlet);
  this.base=servlet.toString();
  /*if (actionServlet != null) {
   ServletContext servletContext = actionServlet.getServletContext();
   WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
   this.petStore = (PetStoreFacade) wac.getBean("petStore");
  }*/ //从spring中获取对象
 }
}

public class SecurityActionImpl extends SecurityAction {

 protected ActionForward doExecute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {
  System.out.println("SecurityActionImpl: doExecute()");
  return mapping.findForward("success");
 }
}

分享到:
评论

相关推荐

    虚拟数据层 Struts2、Hibernate、Spring整合的泛型DAO Version 2010.9.27

    dao接口 : PersonDAO extends GenericDao, Integer> 可以不写代码,方法已经在父类泛型dao里了,这里为了说明:可扩展添加 findByNameExact()方法 子类的附加方法。 泛型daoimpl :GenericDaoImpl, ID extends ...

    远光软件股份有限公司 最新复试题

    | 实现方式 | 子类使用`extends`关键字继承抽象类 | 子类使用`implements`关键字实现接口 | | 构造器 | 抽象类可以有构造器 | 接口不能有构造器 | | 实例化 | 抽象类不能被实例化 | 接口是完全不同的类型 | | 访问...

    java 面试宝典 免费提供

    - 抽象类不能继承具体的类(除非使用`extends`关键字)。 #### 三十五、Java接口与C++虚类 - Java接口只能包含抽象方法,不能有状态。 - C++的虚类可以有虚函数和数据成员。 - Java接口更倾向于功能的组合,而C++虚...

    超级有影响力霸气的Java面试题大全文档

    然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中...

    DispatchAction实例

    在Struts框架中,`DispatchAction`是一个非常重要的组件,它是Struts提供的一个扩展自`Action`类的抽象类,主要用于处理多个请求方法的情况。在实际的Web应用程序开发中,通常一个URL对应一个Action,而`...

    Struts原理、开发及项目实施

    做相应数据库操作,略 */ } } FormBean的产生是为了提供数据给ActionBean,在ActionBean中可以取得FormBean中封装的数据,经相应的逻辑处理后,调用业务方法完成相应业务要求。...

    泛型dao 泛型dao 泛型dao

    dao接口 : PersonDAO extends GenericDao, Integer> 可以不写代码,方法已经在父类泛型dao里了,这里为了说明:可扩展添加 findByNameExact()方法 子类的附加方法。 泛型daoimpl :GenericDaoImpl, ID extends ...

    java最经典面试题.doc

    在此例中,子类构造器没有显式调用父类构造器,因此默认调用父类无参构造器。 #### 五、内部类的实现方式 - **内部类实现方式**: - **成员内部类**:作为外部类的一个成员,可以在类的任何位置定义。 - **局部...

    74个java面试题,只有题目没有答案

    public 修饰符可以在任何位置访问,private 修饰符只能在当前类中访问,protected 修饰符可以在当前类和子类中访问。 7. Java 静态变量和实例变量 * Java 中什么是静态变量和实例变量?静态变量是属于类的,实例...

    SSH框架网上商城项目第2战之基本增删查改、Service和Action的抽取

    在这个项目中,虽然没有详细列出Action的代码,但通常我们会为每个业务功能创建一个Action类,比如`CategoryAction`,该类会调用`CategoryService`的方法来执行操作,并设置模型数据以供视图展示。 在Action中,...

    经典面试题

    2. **Action**:在 Struts2 中,Action 类负责处理具体的业务逻辑,通常由拦截器调用。 ### 六、JSP 页面处理 1. **JSP 包含**:有两种方式包含其他 JSP 文件,即 `<%@ include file="..." %>` 和 `...

    Java知识体系精解

    抽象类和接口用于定义抽象类型,它们都包含抽象方法,但接口中的方法默认都是public,而抽象类则可以包含具体的方法和属性。匿名类、内部类和匿名内部类提供了一种便捷的定义类的方式。反射是Java中极为重要的一个...

    ssh(structs,spring,hibernate)框架中的上传下载

     文件数据存储在Blob类型的FILE_CONTENT表字段上,在Spring中采用OracleLobHandler来处理Lob字段(包括Clob和Blob),由于在程序中不需要引用到oracle数据驱动程序的具体类且屏蔽了不同数据库处理Lob字段方法上的...

    java面试点

    - 子类使用`extends`关键字继承抽象类。 - **接口**: - 接口中的所有方法默认为抽象方法。 - Java 8之后支持默认方法和静态方法的实现。 - 不允许声明实例变量,但可以有静态常量。 - 类可以实现多个接口,...

    spring 理解文件HibernateDaoSupport

    当使用这个抽象类时,子类可以通过调用`getHibernateTemplate()`方法获得`HibernateTemplate`实例,进而执行数据库操作。 **示例代码**: ```java public class UserDaoHibernateImpl extends HibernateDaoSupport ...

    最新Java面试宝典pdf版

    抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法? 15 21、写clone()方法时,通常都有一行代码,是什么? 15 22、面向对象的特征有哪些方面 15 23、java中实现多态的机制是什么? 17 24...

    Java面试宝典2012版

    抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法? 15 21、写clone()方法时,通常都有一行代码,是什么? 15 22、面向对象的特征有哪些方面 15 23、java中实现多态的机制是什么? 17...

    Java面试宝典-经典

    抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法? 15 21、写clone()方法时,通常都有一行代码,是什么? 15 22、面向对象的特征有哪些方面 15 23、java中实现多态的机制是什么? 17 24...

Global site tag (gtag.js) - Google Analytics