自定义标签
新建maven项目taglib
maven pom.xml
<dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> </dependencies>
web.xml
<?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" xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name></display-name> <servlet> <servlet-name>baseServlet</servlet-name> <servlet-class>com.lyncc.common.base.servlet.BaseServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>baseServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
BaseServlet.java
public class BaseServlet extends HttpServlet{ /** * */ private static final long serialVersionUID = 1L; private List<String> ls = null; private List<User> users = null; @Override public void init() throws ServletException { super.init(); } @Override protected void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException { ls = new ArrayList<String>(); ls.add("Lyncc"); ls.add("Smile"); ls.add("Ted"); ls.add("Moon"); req.setAttribute("ls", ls); users = new ArrayList<User>(); User u1 = new User("Lyncc", "123456", true); User u2 = new User("Smile", "123456", true); User u3 = new User("Ted", "123456", false); User u4 = new User("Moon", "123456", true); User u5 = new User("Th000", "123456", false); User u6 = new User("Infi", "123456", false); users.add(u4); users.add(u3); users.add(u2); users.add(u1); users.add(u5); users.add(u6); req.setAttribute("ls2", users); req.getRequestDispatcher("WEB-INF/view/first.jsp").forward(req,resp); } @Override public void destroy() { super.destroy(); } }
User.java
public class User { private String username; private String password; private boolean isVisible; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public boolean isVisible() { return isVisible; } public void setVisible(boolean isVisible) { this.isVisible = isVisible; } public User(String username, String password, boolean isVisible) { this.username = username; this.password = password; this.isVisible = isVisible; } }
first.jsp
<%@ 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="o" uri="/WEB-INF/tld/original.tld" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>test</title> </head> <body> <c:forEach items="${ls}" var="str"> ${o:formatSpecial(str)}<br> </c:forEach> <c:forEach items="${o:showVisible(ls2)}" var="u"> ${u.username}=====${u.password}=====${u.visible}<br> </c:forEach> </body> </html>
original.tld
<?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/web-jsptaglibrary_2_0.xsd" version="2.0"> <tlib-version>2.0</tlib-version> <function> <name>formatSpecial</name> <function-class>com.lyncc.common.taglib.util.OpenTaglibFunctions</function-class> <function-signature>java.lang.String formatSpecial(java.lang.String)</function-signature> </function> <function> <name>showVisible</name> <function-class>com.lyncc.common.taglib.util.OpenTaglibFunctions</function-class> <function-signature>java.util.List showVisible(java.util.List)</function-signature> </function> </taglib>
OpenTaglibFunctions.java
public class OpenTaglibFunctions { public static final String formatSpecial(String str){ return str+"war3 player"; } public static final List<User> showVisible(List<User> u){ if(null==u||u.size()==0)return u; int size = u.size()-1; for(int i = size;i>=0;i--){ if(!u.get(i).isVisible())u.remove(i); } return u; } }
访问http://localhost:8080/taglib/ 可以看见效果,记录一下,有时候挺方便的~
相关推荐
为了提高代码的可维护性和可重用性,我们可以使用自定义标签(Custom Tags),这正是"jsp页面自定义标签的实现"这一主题的核心。自定义标签允许开发者封装复杂的HTML或者Java代码,使其成为易于复用的组件,进而降低...
**JSP页面自定义标签(Tag)详解** 在Java服务器页面(JSP)技术中,自定义标签(Custom Tag)是提升代码复用性和可维护性的重要手段。它允许开发者创建自己的HTML标签来封装复杂的Java逻辑,使得页面更加清晰、易...
3. **在JSP页面中使用自定义标签**:在JSP页面中,通过`<jsp:taglib>`指令引入TLD文件,然后就可以像使用内置标签一样使用自定义标签了。例如,`<myTag:myTag attribute1="value1" attribute2="value2">`。 在给定...
在JSP页面中,通过`指令`引入自定义标签库,并使用`属性...</tag-name>`的格式调用自定义标签。 **二、自定义标签函数** 自定义标签函数是在JSP 2.0中引入的一种新的特性,它允许开发者像使用EL(Expression ...
使用jsp自定义标签的功能实现权限的控制。(如果用户没有某个模块的删除权限,就不现实这个删除按钮) 在整个项目中所有的页面都可以引入自定义的标签去做到权限的控制。 自定义标签文件 删除 可以控制页面中的每...
自定义标签可以有任意数量的属性,属性值可以在JSP页面上设置,通过`getAttribute()`方法在处理类中获取。 4.2 标签综合示例 一个完整的自定义标签可能包含多个属性,处理类根据属性值进行不同的操作,例如输出定制...
3. **在JSP页面中使用**:在JSP页面中,通过`<%@ taglib %>`指令引入自定义标签库,然后就可以像使用内置标签一样使用自定义标签了。 二、分页封装 分页是网页应用中常见的需求,通过自定义标签可以方便地实现。...
四、在JSP页面中使用自定义标签 在JSP页面中引入自定义标签库后,可以通过`<%@ taglib %>`指令来引用TLD文件,然后像使用HTML标签一样使用自定义标签。 五、自定义标签实例 一个简单的HelloWorld自定义标签可能如下...
3. **使用标签**:在JSP页面中,通过`<%@ taglib %>`指令引入标签库,并使用`<tag-name>`的形式调用自定义标签。 自定义标签的实现有两种方式: - **简单标签(Simple Tag)**:适用于标签处理逻辑相对简单的场景...
自定义标签的实现通常涉及三个主要部分:标签库描述符(TLD)、标签处理类(Tag Handler Class)以及实际的JSP页面中的标签使用。 1. **标签库描述符(TLD)**: TLD是一个XML文件,它定义了自定义标签的元数据,...
3. 使用自定义标签:在JSP页面中,我们可以这样使用`<displayDate>`标签: ```jsp ... ${yourDateObject}" format="MM/dd/yyyy" /> ``` 这里,`yourDateObject`是JSP页面中的一个日期对象,`format`属性可以指定...
当JSP页面解析到自定义标签时,会调用这些类中的方法来执行相应的逻辑。 3. **在JSP页面中使用自定义标签** 在JSP页面中,可以像使用HTML标签一样使用自定义标签,只需在开始和结束位置加上定义好的标签名称,并...
这些自定义标签可以封装复杂的Java代码,使JSP页面更加清晰,易于理解和维护。自定义标签由两部分组成:标签处理类(Tag Handler)和标签库描述文件(TLD, Tag Library Descriptor)。 二、创建自定义分页标签 1. *...
这是因为自定义标签与Web应用程序紧密相关,它们需要部署在服务器环境中,并与JSP页面协同工作。当尝试在Java Project中处理自定义标签时,由于缺少必要的环境和依赖,会导致运行时错误。 异常`Java.lang....
`userlist.jsp` 是使用自定义标签展示数据列表的页面,它通过`<taglib>`指令引用自定义标签库,并在页面中使用自定义标签`<user:displayList>`来展示用户列表。在`<user:displayList>`标签中,可以传递参数,如数据...
3. **在JSP页面中使用**:在JSP页面顶部引入TLD文件,然后在页面中使用自定义标签。 ```jsp ``` 在这个例子中,`Demo1_JspTag`项目包含了一个简单的自定义标签实现,通过`myTag`标签,我们可以看到如何将Java代码...
在JavaServer Pages(JSP)技术中,自定义标签是扩展其功能的一种强大手段。而自定义嵌套标签,则是在此基础上进一步提升灵活性和重用性的机制。本文将深入探讨自定义嵌套标签的定义、创建过程及其在实际开发中的...
最后,标签库是一组自定义标签的集合,它们可以通过JSP页面引用。 在我们的例子中,"分页"自定义标签可以包含以下功能: 1. **参数配置**:提供参数来设置每页显示的记录数、总记录数和当前页码。 2. **计算总页数...
4. **在JSP页面中使用标签**:在JSP页面中,我们可以通过`<%@ taglib %>`指令引入自定义标签库,并使用`<myTableTag:table>`这样的语法来调用自定义的表格标签。 在"JSP自定义Table标签demo"中,我们可能期望看到...
4. **JSP页面引用自定义标签** - 通过`<%@ taglib %>`指令引入TLD文件,可以使用URI或相对路径,并指定前缀。 5. **JAVA程序中定义标签变量的使用范围** - `Nested`:只在当前标签内部有效。 - `At_begin`:从...