指令
前言
- JSP中3个编译指令
- JSP中7个动作指令
- JSP中9个内置对象
JSP的三个编译指令
- JSP的编译指令是通知JSP引擎的消息,它不是直接生成输出。
编译指令都有默认值,因此开发人员无须为每个指令设置值。 - page:该指令定义当前页面的属性
- include:用于指定包含另一个页面
- taglib:用于定义和访问自定义标签
page指令
- page 指令用于设置JSP页面的属性
<%@ page
[ language="java" ]
[ contentType=“mimeType [ ;charset=characterSet ]”
[ pageEncoding=“characterSet" ]
[ import="{package.class | package.*}, ..." ]
[ errorPage="relativeURL" ]
[ isErrorPage="true | false" ]
[ extends="package.class" ]
[ session="true | false" ]
[ buffer="none | 8kb | sizekb" ]
[ autoFlush="true | false" ]
[ isThreadSafe="true | false" ]
[ info="text" ]
%>
例子
<%@ page language = "java" import ="java.util.*" buffer = "8kb"
pageEncoding= "UTF-8" isErrorPage="false" %>
<html>
<head>
<title> 测试 page 指令</title>
</head>
<body>
<h1> 这是一个测试页面</h1>
</body>
</html>
include指令
-
include 指令用于在运行时将 HTML文件或 JSP页面嵌入到另一个 JSP页面
-
include 指令语法
<%@ include file = “文件名” %> -
使用include指令,可以将一个外部文件嵌入到当前jsp文件中,同时解析这个页面的jsp语句。
-
include既可以包含静态文件,也可以包含jsp页面。会将包含的页面加入页面,融合成一个页面。因此,被包含的页面不需要是一个完整的页面。
例子
<html>
<head> include 指令测试页面
</head>
<body>
这个是Head文件。将要被包含在test.jsp页面中。
</body>
</html>
<html>
<head> include 指令测试页面
</head>
<body>
<%@ include file = "head.jsp" %>
</body>
</html>
使用include指令进行JSP编程
<%@page language="java"%>
<%@include file=“test.jsp"%>
<html>
<head>
<title></title>
</head>
<body>
<br>
<h4 align=“center”>你好,欢迎来到东华大学计算机学院!</h4>
</body>
</html>
taglib指令
-
taglib 指令的作用是在JSP页面中,将标签库描述符文件引入到该页面中,并设置前缀。从而,利用标签前缀去使用标签库表述文件中的标签。
-
taglib指令语法格式如下:
<%@ taglib uri=“tagLibraryURI” prefix=“tagPrefix” %>其中,uri=“tagLibraryURI”指明标签库文件存放位置。prefix="tagPrefix"则表示该标签使用时的前缀。 -
例如,在Struts 2中用到标签:
<%@ taglib uri=“/struts-tags” prefix=“s”%>
JSP中7个动作指令
- 动作指令是运行时的脚本动作,通常可替换为JSP脚本;
- JSP的7个动作指令:
- jsp:forward
- jsp:include
- jsp:param
- jsp:useBean
- jsp:setProperty
- jsp:getProperty
- jsp:plugin
jsp:param
- jsp:param 用于传递参数,必须与其他支持参数的标签一起使用
<jsp:param>的语法规则如下:
<jsp:param name="paramName" value="paramValue"/>
例如:
<jsp:param name= "username" value ="liu"/>
<jsp:param>通常与<jsp:include>、<jsp:forward>或<jsp:plugin>等一起使用。在独立于其他操作使用时,<jsp:param>动作没有作用。
jsp:include
- jsp:include用于动态引入一个jsp页面
- 也可以在标签内向引用页面传递param
<jsp:include>的语法规则如下:
<jsp:include page=" { relativeurl | <%= expression %> } " flush="true" />
或者为:
<jsp:include page=" { relativeurl | <%= expression %> } " flush="true" >
<jsp:param name="paramName" value="{ paramValue | <%= expression %>}" />
</jsp:include>
<jsp:include>向一个对象提出请求,并将结果包含在一个JSP文件中。将静态的HTML、服务器程序的输出结果及来自其他JSP的输出结果包括到当前页面中。
- 创建一个HTML页面,welcome.html
- 该页面将被嵌入到下一个页面中
<html>
<head>
<title>欢迎您来 到汽车专柜</title>
</head>
<body>
<h1 align="center">欢迎您来到汽车专柜</h1>
</body>
</html>
- 创建一个JSP页面
- 使用include动作嵌入HTML页面(welcome.html)
<html>
<head>
<title>使用 include 动作</title>
</head>
<body>
<jsp:include page="welcome.html"
flush="true"/>
此文本将在显示完
<b>welcome.html</b>的内容后显示
</body>
</html>
jsp:useBean
-
jsp:useBean创建一个JavaBean实例
-
<jsp:useBean id=“name” class=“classname” scope=“page | request | session | application” />
-
id:设置JavaBean的名称,利用此id,可以识别在同一个JSP程序中使用不同的JavaBean组件实例。
-
class:指定JavaBean对应的Java类名,查找该JavaBean路径。
-
scope属性值:
-
page:仅在本页面有效
-
request:仅本次请求有效session:在本次session有效application:在本应用内一直有效
举例:useBean动作元素的应用。
- 创建Web项目,命名为“ExampleJsp”,在根文件夹下创建JSP文件,命名为bean.jsp,其代码如下:
<%@ page contentType="text/html;charset=GB2312" %>
<html>
<head>
<title>useBean动作元素的应用</title>
</head>
<body>
<jsp:useBean id="test" class="test.TestBean" scope="page" />
<%
test.setStrValue (“东华大学企业Java课程");
String str=test.getStrValue();
out.print(str);
%>
</body>
</html>
-
- 举例:useBean动作元素的应用
-
在项目src文件夹下创建包test,在包test下创建TestBean.java,其代码如下:
package test;
public class TestBean {
private String strValue=null;
public TestBean() {
}
public void setStrValue(String value) {
str=value;
}
public String getStrValue () {
return str;
}
}
- 部署运行项目,输入“http://localhost:8080/ ExampleJsp /bean.jsp”,页面就会输出“东华大学企业Java课程”。
jsp:setProperty
-
jsp:setProperty设置JavaBean实例的属性值
-
jsp:setProperty的语法规则如下:
<jsp:setProperty name= "BeanName”
property= “propertyName” value= “propertyValue” />
<head>
<jsp:useBean id=“test" class=“Test.TestBean" scope="session"/>
<jsp:setProperty name=“test” property=“strValue” value=“企业java技术课程"/>
</head>
jsp:getProperty
-
jsp:getProperty取得JavaBean实例的属性值
-
jsp:getProperty的语法规则如下:
<jsp:getProperty name= “BeanName” property= “PropertyName” />
其中,name是JavaBean实例的名称,property是要属性的名称。 -
举例:jsp:getProperty:
<jsp:useBean id="test" class="test.TestBean“ scope="page" />
<h1>Get of string :<jsp:getProperty name= "test" property= “strValue" /></h1>
...
<head>
<jsp:useBean id=“test" class=“test.TestBean"
scope="page"/>
<jsp:setProperty name=“test"
property=“strValue” value=“示例"/>
</head>
<body>
<jsp:getProperty name=“test"
property=“strValue"/>
</body>
...
JavaBean综合举例
- 在JavaBean中使用get()和set()方法
public class simpleBean{
private String name = null;
private int age = 0;
public simpleBean() { }
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setName(String username) {
name = username;
}
public void setAge(int userAge) {
age= userAge;
}
}
<html>
<head>
<title> 在 JSP 中使用 JavaBean </title>
<jsp:useBean id="BeanId"
class=“org.dhu.javabean.simpleBean" scope="application"/>
<jsp:setProperty name="BeanId" property="name"
value="Andrew"/>
<jsp:setProperty name="BeanId" property="age"
value="25"/>
</head>
<body>
姓名:<jsp:getProperty name="BeanId"
property="name"/> <br/>
年龄:<jsp:getProperty name="BeanId"
property="age"/>
</body>
</html>
jsp:forward
-
jsp:forward执行页面转向,将请求的处理交给下一个页面
-
jsp:forward的语法规则如下:
-
<jsp:forward page=" { relativeurl | <%= expression %> } " />
或者为: -
<jsp:forward page=" { relativeurl | <%= expression %> } " >
-
<jsp:param name=“paramName” value=“{ paramValue | <%= expression %>}” />
-
</jsp:forward>
-
jsp:forward标记只有一个属性page。page属性指定要转发资源的相对URL。page的值既可以直接给出,也可以在请求时动态计算
-
创建一个JSP页面
-
使用forward动作转发用户的请求
<html>
<head>
<title> 转发此页面 </title>
</head>
<body>
<jsp:forward
page="requestedpage.jsp"/>
</body>
</html>
- 创建一个JSP页面
- 用户将被转至此页面
<html>
<head>
<title>将请求转发到此处</title>
</head>
<body>
此页面从
<br />
<b>forward.jsp</b>中收到一个转发的请求,
<br>此页面是
<b>requestedpage.jsp</b>中的输出结果,
<br>但 URL 用于
<b>forward.jsp</b>
</body>
</html>