服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

运用类反射机制简化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>

扫描关注微信公众号