JSP九大内置对象&javabean&内省

JSP九大内置对象

1.什么是JSP九大内置对象

在JSP中无需创建就可以使用的9个对象,它们是:
1. out(JspWriter):等同与response.getWriter(),用来向客户端发送文本数据;
2. config(ServletConfig):对应“真身”中的ServletConfig;
3. page(当前JSP的真身类型):当前JSP页面的“this”,即当前对象;
4. pageContext(PageContext):页面上下文对象,它是最后一个没讲的域对象;
5. exception(Throwable):只有在错误页面中可以使用这个对象;
6. request(HttpServletRequest):即HttpServletRequest类的对象;
7. response(HttpServletResponse):即HttpServletResponse类的对象;
8. application(ServletContext):即ServletContext类的对象;
9. session(HttpSession):即HttpSession类的对象,不是每个JSP页面中都可以使用,如果在某个JSP页面中设置<%@page session=”false”%>,说明这个页面不能使用session。

在这9个对象中有很多是极少会被使用的,例如:config、page、exception基本不会使用。
在这9个对象中有两个对象不是每个JSP页面都可以使用的:exception、session。

3.JavaBean

JavaBean是一种规范,也就是对类的要求。它要求Java类的成员变量提供getter/setter方法,这样的成员变量被称之为JavaBean属性。
JavaBean还要求类必须提供仅有的无参构造器
它是用来封装实体的

4.内省

内省的目标是得到JavaBean属性的读、写方法的反射对象,通过反射对JavaBean属性进行操作的一组API。例如User类有名为username的JavaBean属性,通过两个Method对象(一个是getUsenrmae(),一个是setUsername())来操作User对象。

5.把map封装到javabean

Map<String,String> map = new HashMap<String,String>();
        map.put("username", "admin");
        map.put("password", "123456");

        BeanInfo beanInfo = Introspector.getBeanInfo(User.class);//获取User类型的BeanInfo实例

        PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();//获取User类型的所有JavaBean属性的属性描述符对象

        User user = new User();//创建User实例
        for(PropertyDescriptor pd : pds)//循环遍历每个属性描述符对象 
        {
            String name = pd.getName();//获取JavaBean属性名
            String value = map.get(name);//获取Map中对应属性的值
            if(value != null)//如果在Map中存在这个属性的值
             {
                Method writeMethod = pd.getWriteMethod();//获取该属性的写方法
                writeMethod.invoke(user, value);//把Map中的值写入到user对象的对应属性中
            }
        }

        System.out.println(user);

还可以使用commons-beanutils来进行封装

使用beanutils需要的jar包:
commons-beanutils.jar;
commons-logging.jar;

你可能感兴趣的:(javaweb)