JSP标签介绍(02)

目录

  • 1.JSP标签介绍
    • 1.1 指令标签
    • 1.2 声明标签
    • 1.3 表达式标签
    • 1.4 注释标签
    • 1.5 动作标签
  • 2.JSP标签语言特点
    • 2.1 形式:
    • 2.2 灵活性
    • 2.3 代码可重用性
    • 2.4 可维护性
    • 2.5 交互性强
  • 3.foreach标签的底层使用
  • 4.select标签的底层使用
  • 5.总结

在这里插入图片描述

1.JSP标签介绍

1.1 指令标签

指令标签用于通知JSP引擎如何处理JSP页面或应包含哪些资源。通常包含page、include、taglib等标签。

  • page指令可以设置页面的属性,如编码方式、session的属性等。

  • include指令可以将其他JSP页面或HTML文档嵌入到当前JSP页面中。

  • taglib指令用于从标签库中导入标签。

1.2 声明标签

声明标签用于定义全局变量或方法。

  • <%= %>标签可以用于输出变量的值。

  • <%! %>标签可用于定义全局变量或方法。

1.3 表达式标签

表达式标签用于在JSP页面中嵌入表达式。
<%= %>标签可用于输出表达式的值。

1.4 注释标签

注释标签用于对JSP页面的部分进行注释说明。
<%-- --%>标签可以用于多行注释。

1.5 动作标签

动作标签用于JSP页面中的业务处理。

  • jsp:forward标签用于将请求转发到其他页面。

  • jsp:include标签用于在当前页面中包含其他页面。

  • jsp:useBean标签用于在JSP页面中创建JavaBean对象。

  • jsp:setProperty和jsp:getProperty标签分别用于设置和获取JavaBean对象的属性。

  • jsp:scriptlet标签用于在JSP页面中嵌入Java代码。

  • jsp:expression标签用于在JSP页面中嵌入 Java 表达式。

除了以上标签,JSP还支持自定义标签,开发者可以基于Java类和API的扩展,创建自己的标签库。自定义标签的好处是可以达到更好的模块化和抽象化,提高代码重用性和可维护性。同时,JSP也支持标签文件,可以把标签的定义和标签处理逻辑进行分离和聚合。

2.JSP标签语言特点

JSP标签语言的特点如下:

2.1 形式:

<开始标签 属性=“属性值”>标签体

2.2 灵活性

JSP标签语言能够让开发者使用基本的HTML标签和表达式标签,同时也可以灵活地添加其它标签,以满足各种程序的需要。

2.3 代码可重用性

JSP标签语言支持自定义标签,可以将复杂的业务逻辑封装到标签中,实现代码的重用性。

2.4 可维护性

JSP标签语言的模块化结构便于维护和扩展,标签的定义和标签处理逻辑进行分离和聚合,更容易复用和修改,提高了代码的可维护性。

2.5 交互性强

JSP标签语言内置动作标签,可以方便地与服务器进行交互,实现了服务器与客户端之间的数据交互。

动态性:JSP标签语言的表达式标签和动态脚本语言可以让开发者根据需要在页面中动态地生成html代码。这样可以根据页面的不同动态生成不同的HTML代码,给大家带来更好的用户体验。

3.foreach标签的底层使用

<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 librarydescription><display-name>JSTL coredisplay-name><tlib-version>1.1tlib-version><short-name>yshort-name><uri>http://java.yuan2.tlduri><validator><description>Provides core validation features for JSTL tags.description><validator-class>org.apache.taglibs.standard.tlv.JstlCoreTLVvalidator-class>validator><tag><name>forEachname><tag-class>com.yuan.jsp2.ForeEachTagtag-class><body-content>JSPbody-content><attribute><name>itemsname><required>truerequired><rtexprvalue>truertexprvalue>attribute><attribute><name>varname><required>truerequired><rtexprvalue>falsertexprvalue>attribute>tag><tag><name>deptname><tag-class>com.yuan.jsp2.DeptTagtag-class><body-content>JSPbody-content><attribute><name>varname><required>truerequired><rtexprvalue>falsertexprvalue>attribute>tag><tag><name>selectname><tag-class>com.yuan.jsp2.SelectTagtag-class><body-content>JSPbody-content><attribute><name>itemsname><required>truerequired><rtexprvalue>truertexprvalue>attribute><attribute><name>optionValuename><required>truerequired><rtexprvalue>falsertexprvalue>attribute><attribute><name>optionTextname><required>truerequired><rtexprvalue>falsertexprvalue>attribute><attribute><name>selectedname><required>falserequired><rtexprvalue>falsertexprvalue>attribute>tag>taglib>

JSP页面

<%@ page import="java.util.List" %>
<%@ page import="com.yuan.jsp2.Dept" %>
<%@ page import="java.util.ArrayList" %><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
DOCTYPE html PUBLIC >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
head>
<%@ taglib uri="http://java.yuan2.tld" prefix="y" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>
<% 
List<Dept> list = new ArrayList();
list.add(new Dept(1,"张三"));
list.add(new Dept(2,"李四"));
list.add(new Dept(3,"王五"));
request.setAttribute("list", list);%>
<body>
<y:forEach items="${list }" var="lis">
${lis.id }:${lis.name }
y:forEach> body>
html>
package com.yuan.jsp2;import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;public class ForeEachTag extends BodyTagSupport {private List<Object> items = new ArrayList<Object>();private String var;public ForeEachTag() {// TODO Auto-generated constructor stub}public ForeEachTag(List<Object> items, String var) {super();this.items = items;this.var = var;}public List<Object> getItems() {return items;}public void setItems(List<Object> items) {this.items = items;}public String getVar() {return var;}public void setVar(String var) {this.var = var;}@Overridepublic int doStartTag() throws JspException {if (items == null || items.size() == 0)return SKIP_BODY;// 遍历第一次Iterator<Object> it = items.iterator();pageContext.setAttribute(var, it.next());pageContext.setAttribute("it", it);return EVAL_BODY_INCLUDE;}@Overridepublic int doAfterBody() throws JspException {Iterator<Object> it = (Iterator<Object>) pageContext.getAttribute("it");if (it.hasNext()) {// 取得的二条 以及第二条之后的pageContext.setAttribute(var, it.next());pageContext.setAttribute("it", it);return EVAL_BODY_AGAIN;}return SKIP_BODY;}}

网页输出:
在这里插入图片描述

4.select标签的底层使用

<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 librarydescription><display-name>JSTL coredisplay-name><tlib-version>1.1tlib-version><short-name>yshort-name><uri>http://java.yuan2.tlduri><validator><description>Provides core validation features for JSTL tags.description><validator-class>org.apache.taglibs.standard.tlv.JstlCoreTLVvalidator-class>validator><tag><name>forEachname><tag-class>com.yuan.jsp2.ForeEachTagtag-class><body-content>JSPbody-content><attribute><name>itemsname><required>truerequired><rtexprvalue>truertexprvalue>attribute><attribute><name>varname><required>truerequired><rtexprvalue>falsertexprvalue>attribute>tag><tag><name>deptname><tag-class>com.yuan.jsp2.DeptTagtag-class><body-content>JSPbody-content><attribute><name>varname><required>truerequired><rtexprvalue>falsertexprvalue>attribute>tag><tag><name>selectname><tag-class>com.yuan.jsp2.SelectTagtag-class><body-content>JSPbody-content><attribute><name>itemsname><required>truerequired><rtexprvalue>truertexprvalue>attribute><attribute><name>optionValuename><required>truerequired><rtexprvalue>falsertexprvalue>attribute><attribute><name>optionTextname><required>truerequired><rtexprvalue>falsertexprvalue>attribute><attribute><name>selectedname><required>falserequired><rtexprvalue>falsertexprvalue>attribute>tag>taglib>
<%@ page import="java.util.List" %>
<%@ page import="com.yuan.jsp2.Dept" %>
<%@ page import="java.util.ArrayList" %><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<%@ taglib uri="http://java.yuan2.tld" prefix="y" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c"%>
<% 
List<Dept> list = new ArrayList();
list.add(new Dept(1,"张三"));
list.add(new Dept(2,"李四"));
list.add(new Dept(3,"王五"));
request.setAttribute("list", list);%>
<body>
<y:select items="${list }" optionText="name" optionValue="id" selected="2"></y:select>
</body>
</html>
package com.yuan.jsp2;import java.io.IOException;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;public class SelectTag extends BodyTagSupport{
private List<Object> items = new ArrayList();
private String optionValue;
private String optionText;
private String selected;public SelectTag() {// TODO Auto-generated constructor stub
}public List<Object> getitems() {return items;
}public void setitems(List<Object> items) {this.items = items;
}public String getoptionValue() {return optionValue;
}public void setoptionValue(String optionValue) {this.optionValue = optionValue;
}public String getOptionText() {return optionText;
}public void setOptionText(String optionText) {this.optionText = optionText;
}public String getSelected() {return selected;
}public void setSelected(String selected) {this.selected = selected;
}@Override
public String toString() {return "SelectTag [items=" + items + ", optionValue=" + optionValue + ", optionText=" + optionText + ", selected="+ selected + "]";
}@Overridepublic int doStartTag() throws JspException {JspWriter out = pageContext.getOut();try {out.print(toHTML());} catch (Exception e) {e.printStackTrace();}return SKIP_BODY;}
/*** 字符串拼接* @return* @throws Exception */
private String toHTML() throws Exception {StringBuffer sb = new StringBuffer("");return sb.toString();
}/*** 获得某个对象的某个属性值* @param object* @param optionValue2* @return* @throws Exception * @throws NoSuchFieldException */
private String getObjAttrValue(Object object, String attr) throws Exception {Class class1 = object.getClass();Field field = class1.getDeclaredField(attr);field.setAccessible(true);String string = field.get(object).toString();	return string;
}}

5.总结

JSP标签是JSP中的一种扩展功能,可以帮助用户将动态数据插入到JSP页面中。JSP标签分为内置标签和自定义标签两种类型。

内置标签是JSP提供的标准标签库,包括核心标签库、格式化标签库、SQL标签库、XML标签库等。它们提供了丰富的功能,如控制页面流程、格式化数据、操作数据库和生成XML文档等。

自定义标签是用户自己定义的标签,可以根据实际需要实现特定的功能。自定义标签分为标签文件和标签类两种形式。标签文件是一种基于XML的标记语言,类似于HTML,可以通过标签文件定义标签的属性、主体内容和处理逻辑。标签类则是一种Java类,实现了标签处理器的接口,并提供了标签的执行逻辑,可以通过Java代码编写标签的执行过程。

JSP标签可以帮助用户解决复杂的业务需求,并提高Web应用程序的灵活性和可维护性。使用内置标签可以方便地完成通用的操作,而自定义标签可以将业务逻辑集成到标签中,实现更高层次的抽象和封装。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部