javax.servlet.jsp
jsp-api
2.2
provided
fns.tld文件内容:
JSTL 1.1 functions library
JSTL functions sys
1.1
fns
http://java.sun.com/jsp/jstl/functionss
测试弹窗
getAlertJs
com.aoro.controller.UserController
java.lang.String getjs2()
${fns:getAlertJs()}
对应jsp页面用法:
<%@ taglib prefix="fns" uri="/WEB-INF/tlds/fns.tld" %>
//上面调用的getjs2方法是${fns:getAlertJs()}获取的,即com.aoro.controller.UserController getjs2()方法返回的东西
该控制层的方法为:
public static String getjs2(){
return "function getjs2(){alert('自定义标签测试')}";
}
所以jsp调用的getjs2()方法即为控制层return内容
test.tag文件内容:
<%@ tag language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
tag文件里面可以添加html元素,可通过jstl循环等各个功能,还可以引入tld文件,并通过tld文件获取数据,可动态设置各种页面按钮,表格,选择框,等元素,上面只记录一个按钮,由于刚才已经引用过fns.tld并获取到了getjs2()方法则jsp页面只需要引用tag文件并用上就行了;
jsp页面引用如下:
<%@ taglib prefix="sys" tagdir="/WEB-INF/tags/sys" %>
将test.tag文件放在/WEB-INF/tags/sys文件夹下即可,引用时如下
bgt.tld文件内容如下:
1.0
2.0
Example TLD with Body
Hello
com.aoro.controller.HasUrlPermissionTag
scriptless
message
jsp页面引用:
<%@ taglib prefix="ex" uri="/WEB-INF/tlds/bgt.tld"%>
用法有两种,一种是直接夹在标签中间;另一种是直接在标签中属性里面给值;如下:
自定义标签,我是标签中间的内容;
由于tld文件调用了java文件,此处贴出java文件代码:
/**
* 创建日期:2018年8月15日上午10:33:22
*/
package com.aoro.controller;
import java.io.IOException;
import java.io.StringWriter;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.SimpleTagSupport;
/**
* @author Administrator
* 创建日期:2018年8月15日上午10:33:22
*/
public class HasUrlPermissionTag extends SimpleTagSupport {
//自定义标签属性,属性的名称是message
private String message;
public void setMessage(String msg) {
this.message = msg;
}
StringWriter sw = new StringWriter();
public void doTag() throws JspException, IOException {
if (message != null) {
/* Use message from attribute */
JspWriter out = getJspContext().getOut();
out.println( message );
} else {
/* use message from the body */
getJspBody().invoke(sw);
getJspContext().getOut().println(sw.toString());
}
}
}
上面方法可变化一下,获取数据表格如下:
table.tld:
1.2
2.0
c
controller
NewTable
com.aoro.controller.testTable
number
true
引用的testTable如下:
/**
* 创建日期:2018年8月15日下午3:52:41
*/
package com.aoro.controller;
import java.util.List;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import com.aoro.model.User;
import com.aoro.service.UserService;
import com.aoro.util.DataUtils;
import com.aoro.common.spring.SpringContextHolder;
/**
* @author Administrator
* 创建日期:2018年8月15日下午3:52:41
*/
public class testTable extends TagSupport{
@Autowired
private UserService userService;
private String number;
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public int doStartTag() throws JspException {
JspWriter out = pageContext.getOut();
try {
// Class.forName("com.mysql.jdbc.Driver");
// Connection con = DriverManager.getConnection("jdbc:mysql://localhost/testdb?useSSL=false&characterEncoding=utf8", "root", "123456");
// PreparedStatement ps = con.prepareStatement("SELECT name,education,age FROM `employees` ORDER BY id DESC limit "+this.number);
//ps.setInt(1, Integer.parseInt(this.number));
// System.out.println("number => "+this.number);
// ResultSet rs = ps.executeQuery();
//此处是获取数据,我这里调用了一个接口,可根据自己项目,调用自己的数据
if(userService == null){
userService = SpringContextHolder.getBean("userService");
}
List userlist = userService.findAll();
if (CollectionUtils.isNotEmpty(userlist)) {
// column name
out.write("");
out.write("");
out.write("userid 姓名 年龄 ");
out.write(" ");
// column value
if(DataUtils.asInt(this.number)<=userlist.size()){
for(int i=0;i");
out.write("" + userlist.get(i).getUserId() + " " + userlist.get(i).getUserName() + " " +userlist.get(i).getAge() + " ");
out.write("");
}
}
out.write("
");
}
// con.close();
} catch (Exception e) {
System.out.println(e);
}
return SKIP_BODY; // return BodyTagSupport.EVAL_BODY_INCLUDE; 返回此则执行标签body中内容,SKIP_BODY则不执行
}
}
jsp页面引用如下:
<%@ taglib prefix="newtable" uri="/WEB-INF/tlds/table.tld"%>
newtable:对应prefix="newtable";
NewTable 对应table.tld文件中的 tag
number 对应 table.tld文件中的 参数