免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1510 | 回复: 0
打印 上一主题 下一主题

JAVA反射机制web中的应用实例 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-19 20:43 |只看该作者 |倒序浏览
   首先 我们建立一个用户输入的页面,有两个字段:UserName和PassWord
form action="./UserServlet">
userName:input type="text" name="userName"/>br>
passWord:input type="text" name="passWord"/>br>
input type="submit" value="login">
/form>
   然后,我们建立字段的Bean类 进行封装  UserBean:
public class UserBean {
    private String userName;
    private String passWord;
    public String getPassWord() {
        return passWord;
    }
    public void setPassWord(String passWord) {
        this.passWord = passWord;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
   
}

  再次建立一个工具类 就是应用到的反射的核心代码 Tools.java
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import javax.servlet.http.HttpServletRequest;
public class Tools {
    public static Object initBean(HttpServletRequest request,Class cls)
    {
        Object obj = null;
        try {
            obj = cls.newInstance();
            
            Field[] fields = cls.getDeclaredFields();
            
            for (Field field : fields) {
                String fieldName = field.getName();
               
                Method method = cls.getDeclaredMethod("set"+fieldName.substring(0,1).toUpperCase()+fieldName.substring(1), new Class[]{String.class});
                String value = request.getParameter(fieldName);   
                method.invoke(obj, new Object[]{value});
            }
            
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return obj;
    }
   
    public static void main(String[] args) throws Exception {
        Class cls = Class.forName("com.accp.UserBean");//根据类名来得到一个Class对象
        Class c = UserBean.class;//根据类来得到一个Class对象
        Object o = cls.newInstance();//通过类得到一个实例对象 UserBean bean = new UserBean();
    }
}
最后 建立页面提交到的Servlet UserServlet:

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        UserBean bean = (UserBean)Tools.initBean(request, UserBean.class);
        System.out.println(bean.getUserName()+" "+bean.getPassWord());
    }

这样就实现了 运用反射 动态获取数据的效果


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/72940/showart_1086512.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP