jsp标签(out,if,set,select,forEach)
一、自定义标签源码
1、导包
2、有些改变的out,if,set自定义标签
out标签:
package com.tang.tag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class OutTag extends BodyTagSupport {
private static final long serialVersionUID = 1L;
private Object value;
public OutTag() {
super();
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
@Override
public int doStartTag() throws JspException {
JspWriter out = pageContext.getOut();
try {
out.println(value==null?"":value);
} catch (Exception e) {
// TODO Auto-generated catch block
throw new RuntimeException(e);
}
return super.doStartTag();
}
}
if标签:
package com.tang.tag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class IfTag extends BodyTagSupport {
private Boolean test;
public IfTag() {
super();
}
public Boolean getTest() {
return test;
}
public void setTest(Boolean test) {
this.test = test;
}
@Override
public int doStartTag() throws JspException {
if(test) {
return EVAL_BODY_INCLUDE;
}
return SKIP_BODY;
}
}
set标签:
package com.tang.tag;
import java.util.List;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
import com.tang.dao.DeptDao;
import com.tang.entity.Dept;
public class SetTag extends BodyTagSupport {
private String value;//保存数据库的key
private DeptDao deptDao = new DeptDao();
public SetTag() {
super();
// TODO Auto-generated constructor stub
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public DeptDao getDeptDao() {
return deptDao;
}
public void setDeptDao(DeptDao deptDao) {
this.deptDao = deptDao;
}
@Override
public int doStartTag() throws JspException {
List list = deptDao.list();
pageContext.setAttribute(value, list);
return super.doStartTag();
}
}
set标签中用到的entity包,dao包
entity包:
package com.tang.entity;
import java.io.Serializable;
public class Dept implements Serializable {
private static final long serialVersionUID = 1L;
private Integer DeptId;
private String DeptName;
public Dept() {
super();
}
public Dept(Integer deptId, String deptName) {
super();
DeptId = deptId;
DeptName = deptName;
}
public Integer getDeptId() {
return DeptId;
}
public void setDeptId(Integer deptId) {
DeptId = deptId;
}
public String getDeptName() {
return DeptName;
}
public void setDeptName(String deptName) {
DeptName = deptName;
}
@Override
public String toString() {
return "Dept [DeptId=" + DeptId + ", DeptName=" + DeptName + "]";
}
}
dao包:
package com.tang.dao;
import java.util.ArrayList;
import java.util.List;
import com.tang.entity.Dept;
public class DeptDao {
public List list(){
//访问数据库
List list = new ArrayList();
list.add(new Dept(1, "教质部"));
list.add(new Dept(2, "教学部"));
list.add(new Dept(3, "财务部"));
list.add(new Dept(4, "就业部"));
return list;
}
}
forEach标签:
package com.tang.tag;
import java.util.Iterator;
import java.util.List;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class ForEachTag extends BodyTagSupport {
private List
select标签:
package com.tang.tag;
import java.util.List;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;
import org.apache.commons.beanutils.PropertyUtils;
public class SelectTag extends BodyTagSupport {
private List items;
private String name;
private String valueKey;//保存option中的value的key
private String textKey;//保存option中的text文本的key
private String cssStyle;
private String headKey;
private String headValue;
private String selectedOptionValue;//默认选中
public SelectTag() {
super();
// TODO Auto-generated constructor stub
}
public List getItems() {
return items;
}
public void setItems(List items) {
this.items = items;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValueKey() {
return valueKey;
}
public void setValueKey(String valueKey) {
this.valueKey = valueKey;
}
public String getTextKey() {
return textKey;
}
public void setTextKey(String textKey) {
this.textKey = textKey;
}
public String getCssStyle() {
return cssStyle;
}
public void setCssStyle(String cssStyle) {
this.cssStyle = cssStyle;
}
public String getHeadKey() {
return headKey;
}
public void setHeadKey(String headKey) {
this.headKey = headKey;
}
public String getHeadValue() {
return headValue;
}
public void setHeadValue(String headValue) {
this.headValue = headValue;
}
public String getSelectedOptionValue() {
return selectedOptionValue;
}
public void setSelectedOptionValue(String selectedOptionValue) {
this.selectedOptionValue = selectedOptionValue;
}
@Override
public int doStartTag() throws JspException {
JspWriter out = pageContext.getOut();
try {
String html = toHtml();
out.println(html);
} catch (Exception e) {
throw new RuntimeException(e);
}
return super.doStartTag();
}
private String toHtml() throws Exception{
StringBuffer sb = new StringBuffer();
//
二、自定义标签的描写文件(助手文件)
zking 1.1 core library
zking core
1.1
z
/zking
out
com.tang.tag.OutTag
empty
value
true
true
if
com.tang.tag.IfTag
JSP
test
true
true
forEach
com.tang.tag.ForEachTag
JSP
items
true
true
var
true
false
varStatus
false
false
set
com.tang.tag.SetTag
empty
value
true
false
select
com.tang.tag.SelectTag
JSP
items
true
true
name
false
false
valueKey
true
false
textKey
true
false
cssStyle
false
false
headKey
false
false
headValue
false
false
selectedOptionValue
false
false
三、jsp界面运行代码
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="x" uri="/xzking" %>
首页
标签
<%
List list = new ArrayList();
list.add("zs");
list.add("ls");
list.add("ww");
String name = "zs";
pageContext.setAttribute("name", name);
request.setAttribute("names", list);
%>
自定义out标签
自定义if标签
是你的好时机看上你
自定义set标签
自定义foreach标签
- ${n },${s.index },${s.count }
自定义select标签