public class ShowIp extends SimpleTagSupport {
/**
* 以下屏蔽的代码在SimpleTagSupport代码中已经做了!这里不需要重复再做!
*/
/*private JspContext context;
*//**
* 传入pageContext
*//*
@Override
public void setJspContext(JspContext pc) {
this.context = pc;
}*/
@Override
public void doTag() throws JspException, IOException {
PageContext pageContext=(PageContext)this.getJspContext();
ServletRequest request = pageContext.getRequest();
String ip=request.getRemoteHost();
JspWriter out = pageContext.getOut();
out.write("使用自定义标签展示客户ip地址"+ip);
List<String> a=null;
}
}
<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1"> <description>A tag library exercising SimpleTag handlers.</description> <!-- 标签库的版本 --> <tlib-version>1.0</tlib-version> <!-- 标签库前缀 --> <short-name>rlovep</short-name> <!-- tld文件的唯一标记 --> <uri>http://rlovep.com</uri> <!-- 定义标签,标签要放在方法前面 --> <tag> <!-- 标签名 --> <name>showIp</name> <!-- 标签处理类 --> <tag-class>com.rlovep.tags.ShowIp</tag-class> <body-content>empty</body-content> </tag> <tag> </taglib>
<%@ taglib uri="http://rlovep.com" prefix="rlovep" %>
<%-- 测试简单的自定义标签,标签体(我是你)不显示 --%> <rlovep:showIp>我是你 </rlovep:showIp>
<rlovep:showIp>我是你 </rlovep:showIp>
JspContext jspContext2 = this.getJspContext(); //显示标签体的两种方法 //方法1直接调用 //jspBody.invoke(null); //方法2通过输出到out //jspBody.invoke(jspContext2.getOut());
<tag> <!-- 标签名 --> <name>showIp</name> <!-- 标签处理类 --> <tag-class>com.rlovep.tags.ShowIp</tag-class> <!-- 输出标签体的内容格式标签体不可以写jsp的java代码 --> <body-content>scriptless</body-content> </tag>
<%-- 标签提会显示 --%> <rlovep:showIp>我是你 </rlovep:showIp>
<!-- 测试带属性的标签,标签体显示通过类处理 --> <rlovep:AttributeTags name="peace" value="12345
添加俩个属性: //声明属性的成员变量 private Integer value; private String name; 并为两个成员属性写setter方法; public void setValue(Integer value) public void setName(String name)
<!-- 标签名 --> <name>AttributeTags</name> <!-- 标签处理类 --> <tag-class>com.rlovep.tags.AttributeTags</tag-class> <!-- 输出标签体的内容格式标签体不可以写jsp的java代码 --> <body-content>scriptless</body-content> <!-- 配置属性name --> <attribute> <name>name</name> <!-- 是否必填 --> <required>true</required> <!-- 是否支持EL表达式 --> <rtexprvalue>true</rtexprvalue> </attribute> <!-- 配置属性value --> <attribute> <name>value</name> <!-- 是否必填 --> <required>true</required> <!-- 是否支持EL表达式 --> <rtexprvalue>true</rtexprvalue> </attribute> </tag>
//ChooseTag类:
public class ChooseTag extends SimpleTagSupport{
//此去时变量不是标签属性,由when标签更改;othewise获得;
private boolean flag;
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
@Override
public void doTag() throws JspException, IOException {
// Choose标签作用显示标签体,以及作为其他两个标签的父标签;
getJspBody().invoke(null);
}
}
//whenTag类
public class whenTag extends SimpleTagSupport{
//增加test属性
private boolean test;
public boolean isTest() {
return test;
}
public void setTest(boolean test) {
this.test = test;
}
@Override
public void doTag() throws JspException, IOException {
//如果标签属性为true,显示标签体
if(test){
getJspBody().invoke(null);
}
//设置父标签给otherwise用
ChooseTag parent=null;
if(getParent() instanceof ChooseTag){
parent=(ChooseTag)getParent();
parent.setFlag(test);
}
}
}
//OtherWiseTag类:
public class OtherWiseTag extends SimpleTagSupport {
@Override
public void doTag() throws JspException, IOException {
boolean test=true;
//获取父标签的test,由他的上一个when设置
if(getParent() instanceof ChooseTag)
{
//获取父标签的test,由他的上一个when设置
ChooseTag parent=(ChooseTag)getParent();
test=parent.isFlag();
}
if(!test){
getJspBody().invoke(null);
}
}
}
<!-- 定义标签,choose--> <tag> <!-- 标签名 --> <name>choose</name> <!-- 标签处理类 --> <tag-class>com.rlovep.tags.ChooseTag</tag-class> <!-- 输出标签体的内容格式标签体不可以写jsp的java代码 --> <body-content>scriptless</body-content> </tag> <!-- 定义标签,when--> <tag> <!-- 标签名 when --> <name>When</name> <!-- 标签处理类 --> <tag-class>com.rlovep.tags.whenTag</tag-class> <!-- 输出标签体的内容格式标签体不可以写jsp的java代码 --> <body-content>scriptless</body-content> <!-- 配置属性name --> <attribute> <name>test</name> <!-- 是否必填 --> <required>true</required> <!-- 是否支持EL表达式 --> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <!-- 定义标签,Otherwise--> <tag> <!-- 标签名 --> <name>otherwise</name> <!-- 标签处理类 --> <tag-class>com.rlovep.tags.OtherWiseTag</tag-class> <!-- 输出标签体的内容格式标签体不可以写jsp的java代码 --> <body-content>scriptless</body-content> </tag>
<!-- 测试choose -->
<rlovep:choose>
<rlovep:When test="${10<5 }">
条件成立执行when
</rlovep:When>
<rlovep:otherwise>
条件不成立执行otherwise
</rlovep:otherwise>
</rlovep:choose>
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <!-- 配置空指针异常 --> <error-page> <exception-type>java.lang.NullPointerException</exception-type> <location>/error.jsp</location> </error-page> <!-- 配置505错误页面 --> <error-page> <error-code>500</error-code> <location>/common/500.jsp</location> </error-page> <!-- 配置404错误页面 --> <error-page> <error-code>404</error-code> <location>/common/404.html</location> </error-page> </web-app>
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有