jsp标记之动作标记介绍

来源:互联网 发布:vasco软件下载 编辑:程序博客网 时间:2024/05/20 10:15

1.JSP的4个动作标记,一个是动作标记include,一个是动作标记param,一个是动作标记forward,还有一个是动作标记useBean。

(1).动作标记include,include动作标记的语法有以下两种:

<jsp:include page=""/>
<jsp:include page=""> </jsp:include>

在我之前的一篇文章中介绍过include指令标记,其中该标记和动作标记的语法格式不一样,include指令标记的格式为:<%@ include file=" " %>,但是该标记与动作标记include的作用都是处理所需文件,处理又有其不同的地方,include指令标记用嵌入方式处理文件,在编译阶段就处理所需文件,执行速度比较快,并且将当前的JSP页面和要嵌入的文件合并成一个新的JSP页面,而动作标记不使用嵌入方式来处理该文件,在JSP页面运行时(Java文件的字节码文件被加载运行)才处理文件,执行速度较慢,但是可以灵活地处理所需文件,其中动作标记处理的文件不是JSP文件,就将文件的内容发送到客户机,由客户机执行显示,如果处理的为JSP文件,就由Tomcat服务器执行这个JSP文件,在发送给客户机,由客户机显示结果。

接下来附上一个例子,首先新建一个Web项目,项目名为Test1,之后在该项目的WebRoot新建三个JSP文件,分别为test1.jsp,one.jsp,two.jsp,都将编码改为utf-8,接着在WebRoot里新建一个image文件夹,里面放一张图片img08.jpg,再新建一个文件夹music,里面放置一首名为wz.mp3的音乐文件,接下分别附上三个文件的代码:

test1.jsp文件代码,里面包含两个文件:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'test1.jsp' starting page</title>    <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">-->  </head>    <body>    <jsp:include page="one.jsp"/><!-- 包含one.jsp文件-->    <jsp:include page="two.jsp"/><!-- 包含two.jsp文件-->  </body></html>

one.jsp文件代码,播放背景音乐和展示图片,背景音乐循环播放:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'one.jsp' starting page</title>    <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">-->  </head>    <body>  <!-- 播放背景音乐和展示图片 -->  <bgsound src="music/wz.mp3" loop="infinite"/><p>请欣赏图片和音乐</p>    <img alt="1" src="image/img08.jpg">  </body></html>

two.jsp文件的代码,显示当前时间:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'two.jsp' starting page</title>    <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">-->  </head>    <body>  <!-- 使用Date类获得当前时间并输出在网页上! -->    <p>当前时间为:    <%    Date date=new Date();    out.print(date.toString());     %>  </body></html>


项目目录如下图所示:


接着部署此项目,开启Tomcat服务器,输入地址 http://localhost:8083/Test1/test1.jsp 后,效果如下:


(2).动作标记param,param动作标记可以作为include、forward动作标记的子标记来使用,语法格式如下:

<jsp:param name="名字" value="指定给name属性的值"/>

使用include动作标记处理所需要的JSP文件时,常用的param子标记,以便向动态加载的JSP页面传递必要的值,可使用Tomcat服务器提供的内置对象request获取param标记中name的属性所提供的value值。

接下来附上一个例子,在上面创建的Test1项目中的WebRoot目录新建两个JSP文件,分别为test2.jsp和three.jsp文件,编码改成utf-8,使用param子标记和include动作标记得到两数相加的结果:

test2.jsp文件的代码:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'test2.jsp' starting page</title>    <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">-->  </head>    <body>  <p>加载一个JSP文件,该文件负责计算两数之和:    <jsp:include page="three.jsp">    <jsp:param value="44" name="number1"/>    <jsp:param value="22" name="number2"/>    </jsp:include>  </body></html>


three.jsp文件的代码:

 

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'three.jsp' starting page</title>    <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">-->  </head>    <body>    <%    //获取param标记中name的属性    String number1=request.getParameter("number1");    String number2=request.getParameter("number2");    //把两个传递过来的字符串转为整型    int n1=Integer.parseInt(number1);    int n2=Integer.parseInt(number2);    int n=n1+n2;//两数相加后的值赋给n    out.println("<br/>"+n1+"和"+n2+"两个数之和为:"+n);//显示输出结果     %>  </body></html>

重新部署Test1项目,开启Tomcat服务器,输入地址 http://localhost:8083/Test1/test2.jsp 后,效果如下:

 

(3).动作标记forward,该标记的作用是,从该标记出现处停止当前JSP页面的继续执行,而转向执行forward动作标记中page属性所指定的JSP页面,即转发到另一个JSP页面,语法格式如下:

<jsp:forward page="要转向的页面"/><jsp:forward page="要转向的页面">param子标记</jsp:forward>

接下来附上一个例子,该例子利用forward动作标记和param子标记实现两数的相减,接着在Test1项目的WebRoot目录新建2个JSP页面,分别为Test3.jsp和four.jsp文件,编码改成utf-8:

Test3.jsp文件的代码:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'test3.jsp' starting page</title>    <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">-->  </head>    <body>  <p>使用forward动作标记和子标记param跳转到four.jsp页面,并计算出两数之差:    <jsp:forward page="four.jsp">    <jsp:param value="88" name="number1"/>    <jsp:param value="22" name="number2"/>    </jsp:forward>  </body></html>

four.jsp文件的代码:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'four.jsp' starting page</title>    <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">-->  </head>    <body>    <%   //分别获取param子标记传过来的值    String number1=request.getParameter("number1");    String number2=request.getParameter("number2");    //分别把获取到的值转换成整型    int n1=Integer.parseInt(number1);    int n2=Integer.parseInt(number2);    //两数相减赋给n    int n=n1-n2;    //输出显示结果    out.println("<br/>"+n1+"和"+n2+"两数的差为:"+n);     %>  </body></html>


重新部署Test1项目,开启Tomcat服务器,输入地址 http://localhost:8083/Test1/test3.jsp 后运行效果如下图所示:

(4).动作标记useBean,该标记用来创建并使用一个JavaBean,它是一个非常重要的动作标记,语法格式为:

<jsp:useBean id="" class="" scope=""/><jsp:useBean id="" class="" scope=""></jsp:useBean>

这个知识点涉及到JavaBean的知识,暂时不讲,等我写一篇JavaBean的再详细说。

2.以上就是全部内容,仅供大家学习参考,写得不好,请见谅,如有错误请指出,谢谢! 



0 0
原创粉丝点击