`

如何应用类反射机制简化Struts应用程序的开发

阅读更多


1、 先定义Action FormBean:

    package com.bhsky.webis.system;
import org.apache.struts.action.*;
import javax.servlet.http.*;
   
public class UsersActionForm extends ActionForm {
private String usr_id;
private String usr_name;
public void setUsr_id(String usr_id) {
    this.usr_id = usr_id;
}
public String getUsr_id() {
    return usr_id;
}
public String getUsr_memo() {
    return usr_memo;
}
public void setUsr_name(String usr_name) {
    this.usr_name = usr_name;
}
}




2、 编写通用的为ActionFormBean赋值的方法:

    /////////////////////////////////////////////////////////////////////////////
    //Function: 完成ResultSet对象向ArrayList对象为集合的对象的转化
    //Para:sql,指定的查询Sql
   //Para:className,Sql相对应得JavaBean/FormBean类的名字
   //Return:以类className为一条记录的结果集,完成ResultSet对象向ArrayList对象为集//合的className对象的转化
  //////////////////////////////////////////////////////////////////////////////
  public ArrayList Select(String sql,String className){
    ArrayList paraList=new ArrayList();
    try{
      if (conn == null){
        Connection();
      }
      PreparedStatement stmt = conn.prepareStatement(sql);
      ResultSet rs = stmt.executeQuery();
      String recordValue="";
      Object c1=null;
      paraList=new ArrayList();
      ResultSetMetaData rsmd = rs.getMetaData();
      int columnCount = rsmd.getColumnCount();
      while (rs.next()){
          c1=Class.forName(className).newInstance();
          for (int i=1; i<=columnCount; i++) {
            if(rs.getString(rsmd.getColumnName(i))!=null){
              recordValue=rs.getString(rsmd.getColumnName(i));
            }else{
              recordValue="";
            }
Method
m=c1.getClass().getMethod(getSetMethodName(rsmd.getColumnName(i)),
new Class[]{recordValue.getClass()});
            m.invoke (c1, new Object[]{recordValue});
          }
          paraList.add(c1);
      }
    }catch(SQLException ex){
     
}catch(ClassNotFoundException e){
}catch(NoSuchMethodException e) {
}catch(InvocationTargetException e){
}catch (IllegalAccessException e){
}catch(InstantiationException e){
} finaly{
        closeConnection();
return paraList;
}
  }




3、 在JavaBean封装的商业逻辑中调用Select 方法,然后在JSP页面上显示出来:

   //Function:取得用户列表
  //Para:
  //Return:返回用户列表
  /////////////////////////////////////////////////////////////////////////////
  public ArrayList getUsers(){
      ArrayList ret=null;
      DatabaseManage db=new DatabaseManage();
      String sql=" select usr_id,usr_name "
          +" from users " ;
      ret=db.Select(sql," com.bhsky. webis.system.UsersActionForm");
      return ret;
  }




4、 在Action的execute方法中调用getUsers()方法:

   public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm,
HttpServletRequest request, HttpServletResponse httpServletResponse)
   {
    /**@todo: complete the business logic here, this is just a skeleton.*/
    UsersActionForm uaf=(UsersActionForm)actionForm;
    SystemService ubb=new SystemService();
    ArrayList userList=ubb.getUsers();
    request.setAttribute("userList",userList);
    ActionForward actionForward=actionMapping.findForward(url);
    return actionForward;
  }




5、 在JSP中显示:

   <table width="700" class="1" border="1" cellspacing="1" align="center">
<tr>
  <td class="list" >用户ID</td>
  <td class="list" >姓&#160&#160名</td>
</tr>
<logic:present name="userList" scope="request">
      <logic:iterate name="userList" id="userList"
type="com.bhsky.webis.system.UsersActionForm">
<tr>
  <td class="cell1"  height="22"><bean:write name="userList"
property="usr_id"/></td>
  <td class="cell1"  height="22"><bean:write name="userList"
property="usr_name"/></td>
    </tr>
</logic:iterate>
      </logic:present>
</table>


分享到:
评论

相关推荐

    用Java反射机制简化Struts框架逻辑控制.pdf

    ### 使用Java反射机制简化Struts框架逻辑控制 #### 引言 在当今的软件开发领域,J2EE平台上的Struts框架因其强大的可扩展性和可重用性而受到广泛青睐,尤其是在构建大型企业级应用中。然而,Struts框架的控制层...

    java反射机制应用

    通过上述例子可以看出,反射机制在实际项目开发中有着广泛的应用,包括但不限于表单数据填充、动态工厂模式、大量字段的处理以及结果集映射等。合理利用反射机制,可以极大地提高程序的灵活性和可扩展性。然而,反射...

    利用反射 实现一个自制的struts

    在Java编程中,Struts是一个非常著名的MVC(模型-视图-控制器)框架,它极大地简化了Web应用的开发。然而,这个资源是关于如何利用反射机制来创建一个自制的Struts框架的实践。反射在Java中是一个强大的工具,它允许...

    使用反射自动装填前台数据和struts自动装填很像

    在Java开发中,Struts框架和反射都是常用于处理数据绑定和对象操作的重要工具。本文将深入探讨这两种技术,特别是它们在自动装填前台数据方面的相似性。 首先,让我们了解Struts框架。Struts是一个开源的MVC(Model...

    Java高级应用和Struts的入门笔记

    - **反射**:`DAY03【反射基础】.docx`涵盖了反射机制,它使得程序在运行时能够获取类的信息(如类名、属性、方法)并动态调用。反射在创建动态代理、序列化、框架设计等方面有广泛应用。 - **注解(Annotation)...

    利用java反射模拟struts2工作.doc

    Struts2是一个流行的Java web框架,它通过简化MVC(模型-视图-控制器)模式的应用程序开发,提高了开发效率。在Struts2中,反射是核心机制之一,用于动态地处理请求、调用方法以及处理结果。下面我们将探讨如何利用...

    Java程序设计语言在软件开发中的应用探析.zip

    4. 反射机制:Java反射机制允许在运行时动态地获取类的信息并操作类的对象,为框架和元编程提供了可能。 三、Java的应用领域 1. 企业级应用:Java EE(Java Enterprise Edition)为企业级应用提供了一系列服务,如...

    struts Key Technologies Primer.pdf

    在Web应用程序开发中,MVC框架将应用程序分为三个主要组件,即模型(Model)、视图(View)和控制器(Controller)。模型代表业务数据和业务逻辑,视图负责展示数据,控制器负责处理用户输入,并将命令传递给模型和...

    struts2全部jar包下载

    Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它在Web开发领域具有广泛的应用。这个"struts2全部jar包下载"包含了Struts2框架运行所需的所有核心库和依赖组件,使得开发者可以...

    struts技术开发的动态查询实例(源代码)

    Struts技术是Java Web开发中的一个关键框架,它基于Model-View-Controller(MVC)设计模式,旨在简化企业级应用程序的开发。本实例主要关注如何利用Struts框架实现动态查询功能,这对于处理多样化的用户查询请求至关...

    Spring框架以及与Struts、Mybatis的整合

    它不仅简化了代码的编写,降低了各个框架之间整合的复杂度,还提供了一种更为优雅和高效的方式来管理和维护Java应用程序。而Spring与其他框架的整合,如SSM框架,更是为Web应用开发提供了一个强大的解决方案。

    Struts2框架

    Struts2框架是一种基于Model-View-Controller (MVC)设计模式的Java Web应用程序框架,它的出现是为了简化和优化Web应用的开发流程。Struts2是Struts1的升级版本,吸收了WebWork框架的优点,提供了更为灵活和强大的...

    Struts2源码(xwork|asm|commons|freemark|ognl)

    Struts2是一个非常著名的Java Web框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了构建可维护、高性能的企业级应用程序的工具。Struts2的源码包括了多个关键组件,如xwork、asm、commons、...

    struts2包介绍

    Struts2广泛应用于企业级Web应用程序的开发,特别是在以下场景中: - **复杂的表单处理**:Struts2通过强大的表单标签库和内置的验证机制,大大简化了表单处理的难度。 - **高度可配置的应用程序**:Struts2提供了...

    Struts包的用法

    Struts是一个开源的Java Web应用程序框架,用于构建MVC(模型-视图-控制器)架构的应用程序。在Struts框架中,"包"的概念是用来组织和管理相关控制器、配置和服务的逻辑单元。以下是对给定文件中提到的Struts包及其...

    Struts +json

    Struts和JSON是两种在Web开发中广泛应用的技术。Struts是一种基于MVC(Model-View-Controller)设计模式的Java Web框架,它简化了构建动态、数据驱动的Web应用的过程。而JSON(JavaScript Object Notation)是一种轻...

Global site tag (gtag.js) - Google Analytics