C语言自学完备手册(33篇)
Android多分辨率适配框架
JavaWeb核心技术系列教程
HTML5前端开发实战系列教程
MySQL数据库实操教程(35篇图文版)
推翻自己和过往——自定义View系列教程(10篇)
走出思维困境,踏上精进之路——Android开发进阶精华录
讲给Android程序员看的前端系列教程(40集免费视频教程+源码)
我们常在JSP页面中嵌套Java代码实现某种功能,但是过多的Java代码会使JSP页面繁杂凌乱,非常不利于程序的调试和维护。为了减少JSP页面中的Java代码,Sun公司允许在JSP页面中使用标签实现原由Java代码编写的功能。在本节教程中,我们将介绍JSP常用标签及其用途。
在此,介绍三个JSP常用标签。
< jsp:include >标签用于把其它Web资源的输出内容插入进当前JSP页面的输出内容之中;换句话说:在当前JSP页面的输出内容中包含其它Web资源的输出内容。这种在JSP页面执行时的引入方式称之为动态引入。
语法如下:
<jsp:include page="relativeURL | <%=expression%>" flush="true|false" />
page属性用于指定被引入资源的相对路径,它也可以通过执行一个表达式来获得。
flush属性指定在插入其它资源的输出内容时,是否先将当前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>
< jsp:forward >标签用于把请求转发给另外一个资源,即跳转至其它页面。
语法如下:
<jsp:forward page="relativeURL | <%=expression%>" />
page属性用于指定请求转发到的资源的相对路径,它也可以通过执行一个表达式来获得。
请看如下示例。
<%@ 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>
当使用< 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属性用于指定参数值。
请看如下示例。
<%@ 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>
<%@ 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>
为了在JSP页面中简单快捷地访问JavaBean,JSP中定义了三个与JavaBean相关的JSP 标签:< jsp:useBean >、< jsp:setProperty > 和 < jsp:getProperty >;在此,对这三个标签分别进行详细讲解。
< 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 >标签用于设置和访问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 >标签用于获取JavaBean对象的属性,并将获取的属性值转换成字符串后插入进输出的响应正文中。
语法如下:
<jsp:getProperty name="beanName" property="PropertyName" />
name属性用于指定JavaBean对象的名称,其值应与< jsp:useBean >标签的id属性值相同。
property属性用于指定JavaBean对象的属性名。
在此,通过示例形式介绍< jsp:useBean >、< jsp:setProperty > 和 < jsp:getProperty >的应用。
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;
}
}
<%@ 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
<%@ 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
<%@ 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
除了使用JSP自带标签外,开发人员亦可根据自身需求自定义JSP标签。JSP规范中定义了多个用于开发自定义标签的接口和类,它们都位于javax.servlet.jsp.tagext包中,这些接口和类的继承关系如下图所示:
在此,介绍自定义标签的主要流程:
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地址”%>