jsp自定义标签库引用java属性值
来源:互联网 发布:淘宝整点秒杀优惠券 编辑:程序博客网 时间:2024/05/22 03:23
1、使用之前需要先导入2个jar包
servlet-api.jarjsp-api.jar如果找不到可以去tomcat的lib目录找!
2、在WEB-INF下新建一个后缀名为 .tld 的文件,名称随便起,
在tld文件中写入以下内容
<?xml version="1.0" encoding="UTF-8"?><taglib><tlib-version>1.0</tlib-version><jsp-version>1.2</jsp-version><tag><!--前缀 <xxxx:url fileName="">--> <name>url</name> <!--映射类的全局限定名--> <tag-class>com.xinpin.front.web.tag.xpo</tag-class> <body-content>empty</body-content> <!--定义自定义标签的属性,可以有多个--> <attribute> <description>命名空间,也是自定义标签的属性--</description> <!--属性名称--> <name>fileName</name> <!--此属性是否是必须的,true表示是,false表示否--> <required>true</required> <!--表示这个属性是否可以用JSP的程序段的结果输出,一般为true就好--> <rtexprvalue>true</rtexprvalue> </attribute></tag></taglib>3、定义一个常量的接口类(接口中的属性默认都是public static final),用来定义输出指定属性的值
package com.xinpin.front.web.constantsUrl;//接口中的属性默认都是Public static final 类型的,(公共静态常量)public interface Url {String LOGIN_URL = "login.view";}
package com.xinpin.front.web.tag;import java.io.IOException;import java.lang.reflect.Field;import java.util.Date; import javax.servlet.http.HttpServletRequest;import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.tagext.TagSupport;import com.xinpin.front.web.constantsUrl.Url; /** * jsp自定义标签 * 先导入servlet-api和jsp-api的jar包, * @author xindong * */public class xpo extends TagSupport { private static final long serialVersionUID = -8855151786721428161L; private String fileName; /* // 反射获取当前类和父类的某个公有属性 Field gradeField = student.getClass().getDeclaredField("mGrade"); // 获取属性值 System.out.println(" my grade is : " + gradeField.getInt(student)); // 设置属性值 gradeField.set(student, 10); System.out.println(" my grade is : " + gradeField.getInt(student));*/ public String getFileName() {return fileName;}public void setFileName(String fileName) {this.fileName = fileName;} public int doStartTag() throws JspException { try { // 反射获取接口或者类的对象,这里使用全类名获取, final Class<?> cls = Class.forName("com.xinpin.front.web.constantsUrl.Url"); //获取指定属性的对象,这个Field对象代表着一个属性, Field urlField = cls.getField(fileName); // 获取属性值 System.out.println(" my field is : " + urlField.get(Url.class)); // 设置属性值 /* urlField.set(cls, "123"); System.out.println(" my grade is : " + urlField.getInt(cls));*/ HttpServletRequest request = (HttpServletRequest)pageContext.getRequest(); JspWriter out = pageContext.getOut(); //在jsp上面打印出这个属性的值 out.println(urlField.get(Url.class)); } catch (IOException e) { e.printStackTrace(); } catch (IllegalArgumentException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (NoSuchFieldException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (SecurityException e) {// TODO Auto-generated catch blocke.printStackTrace();} //这里固定这样写,不知道为啥 return SKIP_BODY; }}
5、编写一个jsp页面:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><%@taglib uri="/WEB-INF/solid-tags.tld" prefix="xpo"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title></head><body> File : <xpo:url fileName="LOGIN_URL" /> </body></html>
7、运行后的页面时这样的:
0 0
- jsp自定义标签库引用java属性值
- JSP自定义标签rtexprvalue属性
- JSP自定义标签rtexprvalue属性
- JSP自定义标签rtexprvalue属性
- JSP自定义标签rtexprvalue属性
- jsp页面自定义标签属性
- Java jsp 自定义标签
- Java jsp 自定义标签
- Java jsp 自定义标签
- JSP 自定义标签库
- Jsp 自定义标签库
- JSP自定义标签库
- JSP自定义标签库
- JSP自定义标签库
- JSP自定义标签库
- jsp 自定义标签库
- 自定义标签库jsp
- JSP自定义标签(2):带属性的自定义标签
- tomcat 8 远程调试java
- Android/JAVA 笔记 同步操作/synchronized / wait()/ notify()
- Cartographer—ROS中的安装
- Leetcode Valid Parentheses
- Leetcode Merge Two Sorted Lists
- jsp自定义标签库引用java属性值
- Leetcode 279. Perfect Squares
- IP地址与MAC地址
- AWS EC2/S3命令记录
- ffmpeg 学习记录
- 扩展Elasticsearch Azure Plugin支持读/写snapshot到多个Azure存储账号
- 页面改变的监听
- 做一个缓存,记录是否进入过此页面
- Leetcode Generate Parentheses