jsp内省EL
来源:互联网 发布:ubuntu on windows 编辑:程序博客网 时间:2024/06/10 22:29
内省
为什么要使用内省
开发框架时,经常需要使用Java对象属性来封装数据,如果使用反射来操作太麻烦,所以SUN公司开发了一套API,专门用来操作Java对象的属性。
访问JavaBean属性的两种方式:
直接调用bean的setXXX或getXXX方法。
通过内省技术访问(java.beans包提供了内省的API),内省技术访问也提供了两种方式。
通过PropertyDescriptor类操作Bean的属性
通过Introspector类获得Bean对象的 BeanInfo,然后通过 BeanInfo 来获取属性的描述器( PropertyDescriptor ),通过这个属性描述器就可以获取某个属性对应的 getter/setter 方法,然后通过反射机制来调用这些方法。
核心代码:
//1.创建对象Class<?> class1=Class.forName("com.qf.day42.Student");Object obj=class1.newInstance();//2属性赋值PropertyDescriptor pd=new PropertyDescriptor("name",class1);Method method=pd.getWriteMethod();method.invoke(obj, "张三");//3属性获取Method method2=pd.getReadMethod();System.out.println(method2.invoke(obj, null));
BeanInfo beanInfo=Introspector.getBeanInfo(Class.forName("com.qf.day42.Student"));PropertyDescriptor[] pds=beanInfo.getPropertyDescriptors();for (PropertyDescriptor pd : pds) {System.out.println(pd.getName());}
因为每次使用也都不太方便,所以Apache公司开发了一个工具包BeanUtils
通过这个工具包可以简化我们程序代码的编写。
Beanutils工具包的常用类:
- BeanUtils
- PropertyUtils
- ConvertUtils.regsiter(Converter convert, Class clazz)
自定义转换器
String name="张明";String age="20";String borndate="1990-1-1";Student stu=new Student();BeanUtils.setProperty(stu, "name", name);BeanUtils.setProperty(stu, "age", age);ConvertUtils.register(new DateLocaleConverter(), Date.class);BeanUtils.setProperty(stu, "bornDate",borndate);System.out.println(stu.toString());ConvertUtils.register(new Converter() {@Overridepublic <T> T convert(Class<T> arg0, Object arg1) {// TODO Auto-generated method stubif(arg1==null){ return null;}SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");try { return (T)sdf.parse((String)arg1);} catch (ParseException e) { throw new RuntimeException(e);} }}, Date.class);BeanUtils.setProperty(stu, "bornDate",borndate);
JSP标签
jsp标签一共13个常用的如下:
<jsp:include>
标签
动态包含另外一个文件 <jsp:forward>
标签
转发到另一个页面 <jsp:param>
标签
添加参数 <jsp:useBean>
标签
用于在JSP页面中查找或实例化一个JavaBean组件。 <jsp:setProperty>
标签
用于在JSP页面中设置一个JavaBean组件的属性。 <jsp:getProperty>
标签
用于在JSP页面中获取一个JavaBean组件的属性。
这几个标签估计都需要在整理一篇。
EL
EL也就是Expression Language(表达式语言)
它是为了代替jsp中输出数据的复杂编码,例如获得数据类型转换等。
特点:
- 自动转换类型
- 语法简单
在jsp中使用EL只需要
${EL表达式}
在EL语法中,我们通过变量名取值,而且,它取值会直接输出,如果没有值则不会输出,值为null则输出null,这里的变量名指的是,我们将数据传给session,request,page,application中的name的值,El查找变量的顺序为
page->request->session->addlication
同样我们也可以指定在某个域中寻找,下面会讲到。
El中有两个操作符,“ . ”和“ [] ”我们可以使用这两种,涉及到数字的都需要用后一种,举例来看:
${name}取出名字为name的值${name.id}取出name的值中的名为id的属性值等价于${name["id"]}存取list元素可以通过数字下标来实现${list[0]}得到list的值的第一个对于map类型,我们也能通过key来得到${map.one}${map[one]}两者等价
在EL中也有算数运算符,关系运算符,逻辑运算符。
算数运算符不在多说
关系运算符返回的是false
或者true
逻辑运算符包括与或非,分别为
&&/and,||/or,!/not返回false
或者true
。
同样也存在三目运算符 ${user!=null?user.name:”没有登录”}
EL的隐式对象
作用域访问对象
- pageScope
- requestScope
- sessionScope
- applicationScope
上面四个分别对应四个作用域,要指定访问的作用域,直接将名称加载前面。
另外还有两个参数访问对象
- param
- paramValues
分别是返回按照参数名称返回单一值的Map对象
和返回String数组的Map对象
最后一个是pageContext提供对页面信息和jsp内置对象的访问。
- jsp内省EL
- web day12 JSP三大指令,九个内置对象,动作标签,JavaBean(包含内省),EL表达式,函数库
- JSP EL
- JSP EL
- JSP && EL
- jsp el
- JSP EL
- jsp - EL
- JSP EL
- jsp&el
- el.jsp
- EL、JSP
- JSP EL
- JSP:JSP中的EL表达式
- JSP表达式语言(EL)
- el jsp表达式
- jsp不支持EL表达式
- el jsp表达式
- 【Python】正则表达式-判断输入字符串为字母、数字、长度大于8
- JSP内置对象
- H5~标签、选择器
- nuttx文件说明
- myeclips上无法在servlet上无法断点
- jsp内省EL
- bzoj1095 线段树括号序列
- ImageIcon & Image
- linux--sudo su命令
- 冒泡排序法
- SPOJ 839 Optimal Marks
- 02-线性结构2 一元多项式的乘法与加法运算(20 分)
- SpringMVC开发一:SpringMVC的maven搭建及配置
- Python List