JSP自定义标签文档格式.docx
- 文档编号:16678248
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:9
- 大小:17.43KB
JSP自定义标签文档格式.docx
《JSP自定义标签文档格式.docx》由会员分享,可在线阅读,更多相关《JSP自定义标签文档格式.docx(9页珍藏版)》请在冰豆网上搜索。
2―――returnSKIP_BODY则直接执行doEndTag()
――doEndTag()returnEVAL_PAGE执行页面剩余部分
returnSKIP_PAGE跳过页面剩余部分
――release()释放标签实例(由容器决定)
实现步骤:
1.编写标签处理类
这个类实现方式有多种,可以采用实现接口或继承父类的方式一般采用继承的方式
如果你的标签体里有内容并且想处理这些内容则需要继承BodyTagSupport
否则可以继承TagSupport
需要注意:
如果你标签有属性则类里需要有相应的setXXX()
无主体内容且无属性的标签处理类
publicclassDateTagextendsTagSupport{
privatestaticfinallongserialVersionUID=-343055242785573672L;
privateStringdateFormat="
yyyy年MM月dd日HH:
mm:
ssE"
;
publicStringgetDateFormat(){
returndateFormat;
}
publicvoidsetDateFormat(StringdateFormat){
this.dateFormat=dateFormat;
@Override
publicintdoEndTag()throwsJspException{
DateFormatformat=newSimpleDateFormat(dateFormat);
try{
pageContext.getOut().println(format.format(newDate()));
}catch(IOExceptione){
e.printStackTrace();
}
System.out.println(format.format(newDate()));
//返回EVAL_PAGE表示会执行jsp页面的剩余部分
returnEVAL_PAGE;
}
无主体内容有属性的标签处理类
publicclassDeptOptionsTagextendsTagSupport{
privatestaticfinallongserialVersionUID=-4674864242155143002L;
privateintselectValue;
publicintgetSelectValue(){
returnselectValue;
publicvoidsetSelectValue(intselectValue){
this.selectValue=selectValue;
JspWriterout=pageContext.getOut();
EmpDAOdao=newEmpDAO();
List<
Dept>
list=dao.getAllDept();
for(Deptd:
list){
if(selectValue==d.getDeptid()){
out.println("
<
optionselectedvalue="
+d.getDeptid()+"
>
"
+d.getDeptName()+"
/option>
);
}else{
optionvalue="
}
}
有主体内容有属性的标签处理类
publicclassLoopTagextendsBodyTagSupport{
privatestaticfinallongserialVersionUID=6800680657186732025L;
privateintcount;
publicvoidsetCount(intcount){
System.out.println("
setCount"
this.count=count;
publicintdoStartTag()throwsJspException{
doStartTag()"
returnsuper.doStartTag();
publicintdoAfterBody()throwsJspException{
doAfterBody()"
count--;
if(count>
0){
returnBodyTag.EVAL_BODY_AGAIN;
}else{
returnBodyTag.SKIP_BODY;
doEndTag()"
bodyContent.writeOut(bodyContent.getEnclosingWriter());
publicvoidrelease(){
release()"
super.release();
publicvoidsetBodyContent(BodyContentb){
setBodyContent()"
super.setBodyContent(b);
publicvoidsetPageContext(PageContextpageContext){
setPageContext()"
super.setPageContext(pageContext);
嵌套标签
publicclassParentTagextendsBodyTagSupport{
privatestaticfinallongserialVersionUID=2955495958451151992L;
privatebooleanvalue;
publicvoidsetValue(booleanvalue){
this.value=value;
if(value){
returnEVAL_BODY_INCLUDE;
returnSKIP_BODY;
returnsuper.doEndTag();
publicclassSubTagextendsBodyTagSupport{
privatestaticfinallongserialVersionUID=-1791896846943415063L;
privateStringcolor;
publicvoidsetColor(Stringcolor){
this.color=color;
Stringstr=bodyContent.getString();
if(!
.equals(str)){
out.println("
h3style='
color:
+color+"
'
+str+"
/h3>
}else{
h2>
+str+"
/h2>
2.编写tld标签部署文档指定标签名称等信息一般放在WEB-INF目录下
?
xmlversion="
1.0"
encoding="
UTF-8"
?
taglibversion="
2.0"
<
tlib-version>
1.1<
/tlib-version>
!
---标签描述符-->
tag>
<
name>
dateTag<
/name>
--解析类的别名-->
tag-class>
com.px.tag.DateTag<
/tag-class>
--解析类路径-->
body-content>
empty<
/body-content>
--是否有标签主体,JSP表示一定有标签主体,empty为空-->
/tag>
optionsTag<
com.px.tag.DeptOptionsTag<
attribute>
--设置属性-->
<
selectValue<
required>
false<
/required>
--是否一定需给出属性值-->
rtexprvalue>
true<
/rtexprvalue>
--是否运行时动态给值使用表达式为属性赋值-->
/attribute>
loop<
com.px.tag.LoopTag<
JSP<
count<
parent<
com.px.tag.ParentTag<
value<
sub<
com.px.tag.SubTag<
color<
/taglib>
3。
jsp使用标签
1――通过<
%@taglibprefix="
前缀"
uri="
tld路径"
%>
导入
通过前缀:
标签名引用标签
o:
myoptionselectValue="
1"
/>
2―――也可以在web.xml中配置:
--配置自定义标签部署描述符-->
jsp-config>
<
taglib>
taglib-uri>
/MyTag<
/taglib-uri>
taglib-location>
/WEB-INF/tld/mytags.tld<
/taglib-location>
/jsp-config>
然后在页面taglib指令uri只需指定为/MyTag就可以了
标签中的重要对象
bodyContent对象
bodyContent.getString()获取标签体中的内容
bodyContent.getEnclosingWriter()获取javax.servlet.jsp.JspWriter对象
bodyContent.writeOut(javax.servlet.jsp.JspWriter)输出JspWriter中内容
pageContext对象可以获取其他的jsp内置对象
HttpServletRequestreq=(HttpServletRequest)pageContext.getRequest();
HttpSessionsession=pageContext.getSession();
JspWriterout=pageContext.getOut();
返回输出流可用于向jsp页面输出内容
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JSP 自定义 标签