JavaWeb核心技术系列教程(23)——JSP标签


C语言自学完备手册(33篇)

Android多分辨率适配框架

JavaWeb核心技术系列教程

HTML5前端开发实战系列教程

MySQL数据库实操教程(35篇图文版)

推翻自己和过往——自定义View系列教程(10篇)

走出思维困境,踏上精进之路——Android开发进阶精华录

讲给Android程序员看的前端系列教程(40集免费视频教程+源码)


版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl

JSP标签概述

我们常在JSP页面中嵌套Java代码实现某种功能,但是过多的Java代码会使JSP页面繁杂凌乱,非常不利于程序的调试和维护。为了减少JSP页面中的Java代码,Sun公司允许在JSP页面中使用标签实现原由Java代码编写的功能。在本节教程中,我们将介绍JSP常用标签及其用途。

JSP常用标签

在此,介绍三个JSP常用标签。

< jsp:include >

< jsp:include >标签用于把其它Web资源的输出内容插入进当前JSP页面的输出内容之中;换句话说:在当前JSP页面的输出内容中包含其它Web资源的输出内容。这种在JSP页面执行时的引入方式称之为动态引入。

语法如下:

<jsp:include page="relativeURL | <%=expression%>" flush="true|false" />

page属性用于指定被引入资源的相对路径,它也可以通过执行一个表达式来获得。
flush属性指定在插入其它资源的输出内容时,是否先将当前JSP页面的已输出的内容刷新至客户端。

请看如下示例。

项目结构
JavaWeb核心技术系列教程(23)——JSP标签_第1张图片
footer.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!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>JSP</title>
	</head>
	<body>
		<h1 style="color:blue;">网页尾部内容</h1>
	</body>
</html>

header.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!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>JSP</title>
	</head>
	<body>
		<h1 style="color:red;">网页头部内容</h1>
	</body>
</html>

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!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>JSP标签</title>
	</head>
	<body>
		<%--使用include标签引入其它JSP页面--%>
		<jsp:include page="/jsps/header.jsp"/>
		<h1>网页主体内容</h1>
		<%--使用include标签引入其它JSP页面--%>
		<jsp:include page="/jsps/footer.jsp"/>
	</body>
</html>

JavaWeb核心技术系列教程(23)——JSP标签_第2张图片

< jsp:forward >

< jsp:forward >标签用于把请求转发给另外一个资源,即跳转至其它页面。

语法如下:

<jsp:forward page="relativeURL | <%=expression%>" /> 

page属性用于指定请求转发到的资源的相对路径,它也可以通过执行一个表达式来获得。

请看如下示例。

项目结构
JavaWeb核心技术系列教程(23)——JSP标签_第3张图片
index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!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>JSP标签</title>
	</head>
	<body>
		<h2 align="left" style="color: red;">本文作者:谷哥的小弟</h2>
		<h2 align="left" style="color: red;">博客地址:http://blog.csdn.net/lfdfhl</h2>
		<%--使用forward标签跳转至其它页面--%>
		<jsp:forward page="/forward.jsp"/>
	</body>
</html>

forward.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!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>forward</title>
	</head>
	<body>
		<h2 align="left" style="color: red;">本文作者:谷哥的小弟</h2>
		<h2 align="left" style="color: red;">博客地址:http://blog.csdn.net/lfdfhl</h2>
		<h2>这是跳转后页面</h2>
	</body>
</html>

JavaWeb核心技术系列教程(23)——JSP标签_第4张图片

< jsp:param >

当使用< jsp:include >标签包含其它资源和使用< jsp:forward >标签将请求转发给其它资源时,可以使用一个或者多个< jsp:param >标签向其它资源传递参数。

语法如下:

<jsp:include page="relativeURL | <%=expression%>">
      <jsp:param name="parameterName" value="parameterValue|<%= expression %>" />
</jsp:include>
<jsp:forward page="relativeURL | <%=expression%>">
     <jsp:param name="parameterName" value="parameterValue|<%= expression %>" />
</jsp:forward>

< jsp:param >标签的name属性用于指定参数名,value属性用于指定参数值。

请看如下示例。

项目结构
JavaWeb核心技术系列教程(23)——JSP标签_第5张图片
include.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!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>include</title>
	</head>
	<body>
		<h2>接收从index.jsp页面中传递过来的参数</h2>
        <h2>name=<%=request.getParameter("name")%></h2>
        <h2>city=<%=request.getParameter("city")%></h2>
	</body>
</html>

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!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>JSP标签</title>
	</head>
	<body>
		<h2 align="left" style="color: red;">本文作者:谷哥的小弟</h2>
		<h2 align="left" style="color: red;">博客地址:http://blog.csdn.net/lfdfhl</h2>
		<%--使用include标签包含其它资源并传递参数--%>
		<jsp:include page="/include.jsp">
            <jsp:param name="name" value="lucy" />
            <jsp:param name="city" value="beijing" />
        </jsp:include>
	</body>
</html>

JavaWeb核心技术系列教程(23)——JSP标签_第6张图片
请看如下示例。

项目结构
JavaWeb核心技术系列教程(23)——JSP标签_第7张图片
index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!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>JSP标签</title>
	</head>
	<body>
		<%--使用forward标签跳转至其它页面并传递参数--%>
		<jsp:forward page="/forward.jsp">
            <jsp:param name="user" value="jake" />
            <jsp:param name="city" value="shanghai" />
        </jsp:forward>
	</body>
</html>

forward.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!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>forward</title>
	</head>
	<body>
	    <h2 align="left" style="color: red;">本文作者:谷哥的小弟</h2>
		<h2 align="left" style="color: red;">博客地址:http://blog.csdn.net/lfdfhl</h2>
		<h2>接收从index.jsp页面中传递过来的参数</h2>
        <h2>user=<%=request.getParameter("user")%></h2>
        <h2>city=<%=request.getParameter("city")%></h2>
	</body>
</html>

JavaWeb核心技术系列教程(23)——JSP标签_第8张图片

与JavaBean相关的JSP标签

为了在JSP页面中简单快捷地访问JavaBean,JSP中定义了三个与JavaBean相关的JSP 标签:< jsp:useBean >、< jsp:setProperty > 和 < jsp:getProperty >;在此,对这三个标签分别进行详细讲解。

< jsp:useBean >

< jsp:useBean >标签用于在指定的域范围内查找指定名称的JavaBean对象,如果存在则直接返回该JavaBean对象的引用,如果不存在则实例化一个新的JavaBean对象并将它以指定的名称存储到指定的域范围中。

语法如下:

<jsp:useBean id="beanName" class="package.class" scope="page|request|session|application"/>

id属性用于指定JavaBean对象的引用名称和其存储在域范围中的名称。
class属性用于指定JavaBean对象的完整类名。
scope属性用于指定JavaBean对象所存储的域范围,其取值为page、request、session和application中的一个,其默认值是page

< jsp:setProperty >

< jsp:setProperty >标签用于设置和访问JavaBean对象的属性。

语法如下:

<jsp:setProperty name="beanName" property="propertyName" value="stringvalue"/>
<jsp:setProperty name="beanName" property="propertyName" value="<%= expression %>" />
<jsp:setProperty name="beanName" property="propertyName" param="parameterName"/>
<jsp:setProperty name="beanName" property= "*" />

name属性用于指定JavaBean对象的名称。
property属性用于指定JavaBean对象的属性名。
value属性用于指定JavaBean对象的某个属性的值,value的值可以是字符串,也可以是表达式。如果value的值为字符串时,该值会自动转化为JavaBean属性相应的类型;如果value的值是一个表达式,那么该表达式的计算结果必须与所要设置的JavaBean属性的类型一致。
param属性用于将JavaBean对象的属性值设置为请求参数的值,该属性值同样会自动转换成要设置的JavaBean属性的类型。当property属性的值为*通配符时,JSP容器会在请求消息中査找所有的请求参数,如果参数的名字和JavaBean对象的属性名相同,JSP容器会将参数的值设置为JavaBean对象对应属性的值。

< jsp:getProperty >

< jsp:getProperty >标签用于获取JavaBean对象的属性,并将获取的属性值转换成字符串后插入进输出的响应正文中。

语法如下:

<jsp:getProperty name="beanName" property="PropertyName" />

name属性用于指定JavaBean对象的名称,其值应与< jsp:useBean >标签的id属性值相同。
property属性用于指定JavaBean对象的属性名。

综合示例

在此,通过示例形式介绍< jsp:useBean >、< jsp:setProperty > 和 < jsp:getProperty >的应用。

项目结构

JavaWeb核心技术系列教程(23)——JSP标签_第9张图片

Person

package cn.com;

public class Person {
	private String name;
	private String gender;
	private int age;
	private boolean married;
	public Person() {
		
	}
	public Person(String name, String gender, int age, boolean married) {
		this.name = name;
		this.gender = gender;
		this.age = age;
		this.married = married;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public boolean isMarried() {
		return married;
	}
	public void setMarried(boolean married) {
		this.married = married;
	}
	
}

getProperty1

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%-- 使用jsp:useBean标签实例化JavaBean --%>
<jsp:useBean id="person" class="cn.com.Person" scope="page" />

<%-- 使用jsp:setProperty标签为JavaBean属性赋值 --%>
<%-- 将vaule对应的值赋值给property指定的属性 --%>
<jsp:setProperty name="person" property="name"  value="tom"/>
<jsp:setProperty name="person" property="gender" value="male"/>
<jsp:setProperty name="person" property="age" value="24"/>
<jsp:setProperty name="person" property="married" value="true"/>

<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>JSP标签</title>
	</head>
	<body>
		<h2 align="left" style="color: red;">本文作者:谷哥的小弟</h2>
		<h2 align="left" style="color: red;">博客地址:http://blog.csdn.net/lfdfhl</h2>
		<%--利用jsp:getProperty标签获取JavaBean属性值 --%>
		<h2>姓名:<jsp:getProperty name="person" property="name"/></h2>
        <h2>性别:<jsp:getProperty name="person" property="gender"/></h2>
        <h2>年龄:<jsp:getProperty name="person" property="age"/></h2>
        <h2>婚否:<jsp:getProperty name="person" property="married"/></h2>
	</body>
</html>

访问地址:http://localhost:8080/Jsp16/getProperty1.jsp
JavaWeb核心技术系列教程(23)——JSP标签_第10张图片

getProperty2

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%-- 使用jsp:useBean标签实例化JavaBean --%>
<jsp:useBean id="person" class="cn.com.Person" scope="page" />

<%-- 使用jsp:setProperty标签并结合请求参数为JavaBean属性赋值 --%>
<%-- 将url中请求参数param对应的值赋值给property指定的属性 --%>
<%-- 测试url及其请求参数如下 --%>
<%-- http://localhost:8080/Jsp16/getProperty2.jsp?username=jake&usergender=male&userage=21&usermarried=false --%>

<jsp:setProperty name="person" property="name"  param="username"/>
<jsp:setProperty name="person" property="gender" param="usergender"/>
<jsp:setProperty name="person" property="age" param="userage"/>
<jsp:setProperty name="person" property="married" param="usermarried"/>

<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>JSP标签</title>
	</head>
	<body>
		<h2 align="left" style="color: red;">本文作者:谷哥的小弟</h2>
		<h2 align="left" style="color: red;">博客地址:http://blog.csdn.net/lfdfhl</h2>
        <%--利用jsp:getProperty标签获取JavaBean属性值 --%>
		<h2>姓名:<jsp:getProperty name="person" property="name"/></h2>
        <h2>性别:<jsp:getProperty name="person" property="gender"/></h2>
        <h2>年龄:<jsp:getProperty name="person" property="age"/></h2>
        <h2>婚否:<jsp:getProperty name="person" property="married"/></h2>
	</body>
</html>

访问地址:http://localhost:8080/Jsp16/getProperty2.jsp?username=jake&usergender=male&userage=21&usermarried=false
JavaWeb核心技术系列教程(23)——JSP标签_第11张图片

getProperty3

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%-- 使用jsp:useBean标签实例化JavaBean --%>
<jsp:useBean id="person" class="cn.com.Person" scope="page" />

<%-- 使用jsp:setProperty标签并结合请求参数为JavaBean属性赋值 --%>
<%-- 将url中各请求参数的值赋值给JavaBean的属性 --%>
<%-- 请注意:url中各参数名与JavaBean的属性名保持一致 --%>
<%-- 测试url及其请求参数如下 --%>
<%-- http://localhost:8080/Jsp16/getProperty3.jsp?name=lili&gender=female&age=20&married=false --%>

<jsp:setProperty name="person" property="*"/>
<jsp:setProperty name="person" property="*"/>
<jsp:setProperty name="person" property="*"/>
<jsp:setProperty name="person" property="*"/>

<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>JSP标签</title>
	</head>
	<body>
		<h2 align="left" style="color: red;">本文作者:谷哥的小弟</h2>
		<h2 align="left" style="color: red;">博客地址:http://blog.csdn.net/lfdfhl</h2>
        <%--利用jsp:getProperty标签获取JavaBean属性值 --%>
		<h2>姓名:<jsp:getProperty name="person" property="name"/></h2>
        <h2>性别:<jsp:getProperty name="person" property="gender"/></h2>
        <h2>年龄:<jsp:getProperty name="person" property="age"/></h2>
        <h2>婚否:<jsp:getProperty name="person" property="married"/></h2>
	</body>
</html>

访问地址:http://localhost:8080/Jsp16/getProperty3.jsp?name=lili&gender=female&age=20&married=false
JavaWeb核心技术系列教程(23)——JSP标签_第12张图片

JSP自定义标签

除了使用JSP自带标签外,开发人员亦可根据自身需求自定义JSP标签。JSP规范中定义了多个用于开发自定义标签的接口和类,它们都位于javax.servlet.jsp.tagext包中,这些接口和类的继承关系如下图所示:
JavaWeb核心技术系列教程(23)——JSP标签_第13张图片
在此,介绍自定义标签的主要流程:

  • 1、编写标签处理器
    开发自定义标签的核心工作就是编写作为标签处理器的Java类。
    (1) 开发传统标签开发需要实现 javax.servlet.jsp.tagext.Tag 接口。
    (2) 开发简单标签开发需要实现 javax.servlet.jsp.tagext.SimpleTag 接口。

  • 2、编写标签库描述符文件
    为使得JSP引擎能正常解析并调用与之对应的标签处理器,还必须编写标签库描述符(Tag Library Descriptor)文件,简称TLD文件。TLD文件与标签处理器之间的关系就如同web. xml文件与Servlet之间的关系,一个标签处理器类要想被JSP容器找到并调用就必须在TLD文件中进行注册。

  • 3、在JSP页面导入和使用自定义标签
    通过taglib指令导入TLD文件,语法如下:

    <%@ taglib prefix=“前缀” uri=“uri地址”%>

你可能感兴趣的:(JavaWeb核心技术系列教程)