老杨说话的地方
  • 首页
  • 关于老杨
  • 博客时间
  • 文章分类
    • 人生感悟
    • 信息技术
    • 往事随风
    • 情感随笔
    • 文学创作
    • 生活记录
    • 评论杂谈
    • 人工智能
  • 留言本
我是老杨
张驰有度 宠辱不惊
  1. 首页
  2. 信息技术
  3. 网上办公系统
  4. 正文

动态调用JavaBean的set方法

2008年12月12日 3247点热度 0人点赞 2条评论

在我写的框架中,我用一个中央控制器来控制所有的URL请求,然后将请求转发,这里就有一个问题,就是前台提交的Form表单并没有直接提交给处理的模块,而是先提交给了中央控制器,由中央控制器来转发给相应的模块,所以我的做法是使用中央控制器将所有的Form表单数据存放在一个叫做FormBean的类中封装起来,然后将这个类以对象的形式存放到request范围呢,然后将request对象提交给处理模块,模块通过得到FormBean这个对象来得到From表单的数据。

所以首先需要解决的问题就是如何动态的将Form表单的数据封装到FormBean中,因为中央控制器并不知道Form表单中都有那些数据域,也不知道FormBean中都有哪些属性,所有的这一切,都应该是动态执行的,对所有的FormBean都适用的。

我已经不完美的解决的这个问题,说不完美是因为FormBean的属性需要是public的,否则的话无法成功set进去,还需要进一步解决一下。这里给出代码:

Java语言: 临时自用代码@代码发芽网
public Object setProperty(String ClassPath,HttpServletRequest req)
{
    try{
        Class ClassName=Class.forName(ClassPath);
        Field ClassField[]=ClassName.getDeclaredFields();
        Object ClassInstance=ClassName.newInstance();
        for(int i=0;i<ClassField.length;i++)
        {
            String Property=ClassField[i].getName();
            ClassField[i].set(ClassInstance, req.getParameter(Property));
        }
        return ClassInstance;
    }catch(Exception e)
    {
        e.printStackTrace();
    }
    return null;
}

有些地方需要解释一下:这里是一个函数进行处理,传递进去的参数有FormBean的类名,当然需要包括包名,如"beans.entity.User",还有一个参数是request对象,用来得到form表单的数据,这里要注意,form表单的数据域名字必须和FormBean的属性名字相同,否则set方法将会出错。

其他的没有什么需要解释的了,核心代码只有一句,也比较容易理解,这里我不能理解的是如果调用的是set方法,为什么属性不是public不行呢?还在进一步研究中。

标签: java javabean servlet
最后更新:2008年12月15日

老杨

博士,非博学之士;讲师,讲所学所知。糊涂半生,虚度半世,唯愿平淡快乐,度过此生。

点赞
guest

guest

2 评论
内联反馈
查看所有评论
sunshineyxp
sunshineyxp
游客
2008年12月12日 下午1:41

为什么不在config.xml中设置一个属性对应于要使用的formbean呢?或许我说的与你指的不一致

0
回复
老杨
老杨
作者
回复给  sunshineyxp
2008年12月12日 下午6:14

@sunshineyxp 回复sunshineyxp, 不是一回事,我已经知道是需要使用哪一个FormBean了,但是并不知道这个FormBean都有哪些属性

0
回复

老杨

博士,非博学之士;讲师,讲所学所知。糊涂半生,虚度半世,唯愿平淡快乐,度过此生。

搜索
最新 热点 随机
最新 热点 随机
Git报错error: Your local changes to the following files would be overwritten by merge 可怜的粉丝 自欺欺人 使用Watch命令监控系统资源 在本地服务器上训练Dolly模型 Anaconda卸载方法 为多用户安装Anaconda及其使用方法 Debian 11下升级Cuda与Nvidia显卡驱动 Debian 11解决找不到Add-apt-repository命令 不存在的申请(小说)
晴迷星途15文总的目标 一点点小小改变 我的博客生涯 依赖 MultiPathNet安装方法 Extended Live Archive简明使用教程 伟大的力量 这一坨没用的浏览器 晴迷星途03危机 Linux系统修改用户密码
最新评论
  • 可怜的粉丝上的史涤生哈哈,老杨是怒其不争吧。 他们就是一群捂着耳朵的傻子,恐怕你说了也白说…
  • 在本地服务器上训练Dolly模型上的老杨是一模一样的错误吗?错误代码贴出来看看。
  • 在本地服务器上训练Dolly模型上的mmyin老师你好,第一张图中gcc问题,我使用gcc -v查看是8.3,但是运…
  • Git报错error: Your local changes to the following files would be overwritten by merge上的老杨是的,这个命令也是可以的,谢谢提醒。
  • Git报错error: Your local changes to the following files would be overwritten by merge上的游客git stash一下
  • Debian11终端乱码问题解决上的老杨原因不是很清楚
  • Debian11终端乱码问题解决上的whhlcj@126.com为什么选中文会乱码呢?
  • WordPress主题发布:kratos_Yang上的老杨好的。别客气。
  • WordPress主题发布:kratos_Yang上的sky~_~可以了,感谢老杨指导
  • 在本地服务器上训练Dolly模型上的deemo好的谢谢老师

Google java jsp linux QQ wordpress 中国 习惯 人生 公司 决定 博士 博客 同学 国家 大学 学习 实验室 家 小说 工作 开始 思考 情感 手机 技术 推荐 插件 数据库 文件 晴迷星途 朋友 生活 电影 相声 程序 笔记 网站 网络 置顶 美国 评论 软件 音乐 项目

关注公众号
广告

COPYRIGHT © 2020 老杨说话的地方. ALL RIGHTS RESERVED.

THEME KRATOS YANG Modified BY 老杨

鲁ICP备17014997号-4

鲁公网安备 37021302000754号