java 开发jsp 自定义标签
此文目的,纠正网上一些不正确的文章!
开发步骤:
首先建立一个类:
继承BodyTagSupport
然后设置字段 生成set方法
类:
[java] package org.pan.tags;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class SessionProperty extends BodyTagSupport{
private static final long serialVersionUID = 1L;
private String value; //需要获取的属性
public void setValue(String value) {
this.value = value;
}
public String getValue() {
return value;
}
@Override
public int doEndTag() throws JspException {
// TODO Auto-generated method stub
return super.doEndTag();
}
@Override
public int doStartTag() throws JspException {
System.out.println("ok");
HttpServletRequest request=(HttpServletRequest)pageContext.getRequest();
HttpSession session=request.getSession();
Object object=session.getAttribute(value);
if(object==null)return EVAL_PAGE;
if(object instanceof String){
try {
pageContext.getOut().write(object.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return super.doStartTag();
}
}
package org.pan.tags;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class SessionProperty extends BodyTagSupport{
private static final long serialVersionUID = 1L;
private String value; //需要获取的属性
public void setValue(String value) {
this.value = value;
}
public String getValue() {
return value;
}
@Override
public int doEndTag() throws JspException {
// TODO Auto-generated method stub
return super.doEndTag();
}
@Override
public int doStartTag() throws JspException {
System.out.println("ok");
HttpServletRequest request=(HttpServletRequest)pageContext.getRequest();
HttpSession session=request.getSession();
Object object=session.getAttribute(value);
if(object==null)return EVAL_PAGE;
if(object instanceof String){
try {
pageContext.getOut().write(object.toString());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return super.doStartTag();
}
}
特别注意:
输出内容需要用:
[java] pageContext.getOut().write(object.toString());
pageContext.getOut().write(object.toString());
tld配置:
建立一个tld文件,tld文件需要放在WEB-INF 中
[html] <?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>JSTL 1.1 core library</description>
<display-name>JSTL core</display-name>
<tlib-version>1.1</tlib-version>
<short-name>w</short-name>
<uri>http:/winter.baletu.com/</uri>
<tag>
<description>Obtained from the session attribute</description>
<name>property</name>
<tag-class>org.pan.tags.SessionProperty</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>value</name>
<required>true</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
</taglib>
补充:Web开发 , Jsp ,