GetProperty_java(cusTag).txt
根据提供的文件信息,我们可以分析出该Java类是一个与JSP(JavaServer Pages)相关的自定义标签处理类。接下来,我们将详细解析此文件的关键知识点。 ### 1. 类的基本信息 - **包名**:`com.lin.tag` - **类名**:`GetProperty` - **继承**:`BodyTagSupport`,这表明`GetProperty`类是一个JSP标签库中的一个自定义标签,并且它继承了`BodyTagSupport`类。 - **功能**:此标签用于获取对象的属性值并将其输出到JSP页面上。 ### 2. 成员变量及方法 #### 2.1 成员变量 - `private String name;`:表示需要查找的对象名称。 - `private String property;`:表示需要获取的对象属性名称。 #### 2.2 方法 - **setName 和 setProperty**: - 这两个方法都是设置成员变量的方法。 - `setName(String name)`:设置需要查找的对象名称。 - `setProperty(String property)`:设置需要获取的对象属性名称。 - **doStartTag**: - 此方法是`BodyTagSupport`接口中的抽象方法,必须被重写。 - 功能:查找对象并获取指定属性的值,然后将该值输出到JSP页面上。 - 实现细节: - 使用`pageContext.findAttribute(name)`来查找名为`name`的对象。 - 如果找到的对象为`null`,则返回`SKIP_BODY`,表示跳过此标签体。 - 获取对象的类`Class c = obj.getClass()`。 - 构造获取属性的方法名,格式为`get + 属性首字母大写 + 属性剩余部分`,如`getName`。 - 使用反射`c.getMethod(getMethodName, new Class[]{})`来获取对应的getter方法。 - 调用`getMethod.invoke(obj)`来执行该getter方法并获取属性值。 - 将属性值通过`pageContext.getOut().print()`输出到JSP页面上。 - **doEndTag**: - 此方法也是`BodyTagSupport`接口中的抽象方法,必须被重写。 - 功能:表示结束标签的处理逻辑,在这里返回`EVAL_PAGE`,意味着继续处理当前页面的后续部分。 ### 3. 反射机制的应用 在`doStartTag`方法中,使用了Java反射机制来动态地调用对象的getter方法获取属性值。具体步骤如下: 1. 根据`property`变量构建getter方法名。 2. 使用`c.getMethod(getMethodName, new Class[]{})`获取对应的方法对象。 3. 调用`getMethod.invoke(obj)`执行该方法并获取返回值。 这种方法的优点是可以动态地获取任何对象的任何属性值,提高了代码的灵活性和复用性。 ### 4. 异常处理 在`doStartTag`方法中,对可能出现的各种异常进行了捕获处理,例如对象不存在、方法不存在等异常,确保程序运行时的稳定性。 `GetProperty`类是一个功能完整的自定义JSP标签,能够实现获取对象属性并输出的功能。通过使用反射机制,使得此标签具有很强的灵活性和可扩展性。




















import java.lang.reflect.Method;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class GetProperty extends BodyTagSupport {
private String name;
private String property;
public void setName(String name)
{
this.name = name;
}
public void setProperty(String property)
{
this.property = property;
}
@SuppressWarnings("unchecked")
public int doStartTag() throws JspException
{
try
{
Object obj = pageContext.findAttribute(name);
if (obj == null) return SKIP_BODY;

- #完美解决问题
- #运行顺畅
- #内容详尽
- #全网独家
- #注释完整

- 粉丝: 4
- 资源: 53
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 华为手机助手11.0.0.530
- 大物知识点:电磁学总结
- 2019创新创业国家级项目 “声入人心”--基于大数据与信号转换的方言翻译系统.zip
- “华为云杯”2020深圳开放数据应用创新大赛·生活垃圾图片分类-分享.zip
- 大创项目-基于知识图谱的个人资源管理软件.zip
- 模拟大学生活,个人大创项目,文字模拟游戏.zip
- 国家大创项目.zip
- 创元大仓多语言.zip
- 大创项目_28.zip
- 大学生创新创业项目_1.zip
- 大学生创新创业平台设计(SSM).zip
- 第一届高校云计算创新应用大赛.zip
- 智慧停车小程序项目--大学生创新创业,使用HTML+css+JavaScript实现,用于学习,开发.zip
- 2020江苏省某创新创业大赛项目.zip
- 大创项目:中医药知识图谱构建.zip
- 大创——twitter政要分析.zip


