JSP常用标签 

      什么是JSP标签

       JSP标签,有的地方也叫做JSP动作,在JSP中编写大量的java代码会使JSP页面显得杂乱无章,看起来非常不舒服,因此JSP提供了一些类似html的标签,通过这些标签能够替代部分java代码实现功能,使用JSP标签可以大量简化我们的代码增强代码的可读性。

<jsp:标签名称 属性名=属性值 ... />

<jsp:标签名称 属性名=属性值 ... ></jsp:标签名称>

      两个常用的JSP标签

     <jsp:forward>

     该标签的作用是把请求转发给另外一个资源,页面中使用该指令之后,当前页面中的所有要显示的内容都将无法显示,因为会直接转发到了另一个页面。

     首先创建test.jsp页面,在该页面中我们使用JSP内置对象request设置传递参数。

<%@ 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>Insert title here</title>
</head>
<body>
test.jsp页面,因为使用了forward标签,所以该页面中的内容不会显示
<%
request.setAttribute("name", "henu scm");
%>
<jsp:forward page="/forwardPage.jsp"/>
</body>
</html>

       然后创建forwardPage.jsp,同样使用request内置对象接收test.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>Insert title here</title>
</head>
<body>
jsp:forward标签跳转的目标页面<br>
<%=
request.getAttribute("name")
%>
</body>
</html>

      访问test.jsp,页面输出结果:

        jsp:forward标签跳转的目标页面
        henu scm

      注意:

      1、在test.jsp页面中JSP标签要写完整(注意不要忘记写结束标签),否则会抛出org.apache.jasper.JasperException异常。

      2、在JSP标签中没有用于重定向的标签。

      3、从上述实例中看出,在写有<jsp:forward>标签的页面中的内容是不会显示的。

      <jsp:include>

     该标签用于把另外一个文件引入到当前JSP里面,这种引入方式叫做动态引入。
      创建一个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>Insert title here</title>
</head>
<body>
<%
int sum = 100;
%>
<br>
<jsp:include page="/includePage.jsp"/>
<br>
index sum=<%= sum %>
</body>
</html>

      然后创建一个includePage.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>Insert title here</title>
</head>
<body>
<%
int sum = 50;
%>
<br>
includePage sum=<%= sum %>
</body>
</html>

     访问index.jsp页面,输出结果:

        includePage sum=50 
        index sum=100 

     打开生成java文件的目录可以看到,生成了两个jsp文件,分别是index_jsp.java和left_jsp.java

     可以得出结论,该指令的引入是在运行期完成的,而非在编译期。这个引入指令,是在程序运行过程中,由 index.jsp 文件中的_jspService()方法通过 JspRuntimeLibrary 类的 include()方法调用了 includePage.jsp 文件中的_jspService()方法。在运行期所执行的这种引入,称为动态引入。

     注意该处的<jsp:include>标签要与JSP指令中的<%@ include file="/filename" %>区别开来,不要搞混淆。

    动态引入和静态引入的区别

<%@ include file="/xxx.jsp" %><!--静态引入-->

     静态引入会生成一个java文件,两个jsp文件中可以共享同一个变量,但不能定义重名的变量。     

<jsp:include page="/xxx.jsp"/><!--动态引入-->

     动态引入会生成两个java文件,两个jsp文件中不可以共享同一个变量,可以定义重名的变量。

     在静态引入与动态引入均可使用时,一般使用静态引入。因为在程序运行时只存在一个Servlet,对资源的消耗较少,且不存在调用问题,执行效率较高。

     

JavaWeb学习之JSP(二) JSP标签的更多相关文章

  1. javaweb学习总结(十九)——JSP标签

    一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...

  2. JavaWeb学习记录(二十)——Model1模式(javaBean+jsp)实现简单计算器案例

    ¨JSP技术提供了三个关于JavaBean组件的动作元素,即JSP标签,它们分别为: ¨<jsp:useBean>标签:用于在JSP页面中查找或实例化一个JavaBean组件. ¨< ...

  3. javaweb学习总结(十八)——JSP属性范围(转)

    所谓的属性范围就是一个属性设置之后,可以经过多少个其他页面后仍然可以访问的保存范围. 一.JSP属性范围 JSP中提供了四种属性范围,四种属性范围分别指以下四种: 当前页:一个属性只能在一个页面中取得 ...

  4. JavaWeb学习 (六)————Servlet(二)

    一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...

  5. JAVAWeb学习总结(二)

    JavaWeb学习总结(二)——Tomcat服务器学习和使用(一) 一.Tomcat服务器端口的配置 Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件. ...

  6. javaweb学习笔记(二)

    一.javaweb学习是所需要的细节 1.Cookie的注意点 ① Cookie一旦创建,它的名称就不能更改,Cookie的值可以为任意值,创建后允许被修改. ② 关于Cookie中的setMaxAg ...

  7. Javaweb学习笔记——(二十)——————Javaweb监听器、国际化

    Javaweb监听器     三大组件         *Servlet         *Listener         *Filter Listener:监听器         1.初次相见:A ...

  8. javaweb学习总结(十八)——JSP属性范围

    所谓的属性范围就是一个属性设置之后,可以经过多少个其他页面后仍然可以访问的保存范围. 一.JSP属性范围 JSP中提供了四种属性范围,四种属性范围分别指以下四种: 当前页:一个属性只能在一个页面中取得 ...

  9. javaweb学习总结(十六)——JSP指令

    一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...

随机推荐

  1. SpringBoot+Netty+WebSocket实现实时通信

    这篇随笔暂时不讲原理,首先搭建起一个简单的可以实现通信的Demo.之后的一系列随笔会进行一些原理上的分享. 不过在这之前大家最好了解一下Netty的线程模型和NIO编程模型,会对它的整体逻辑有所了解. ...

  2. 单线程下实现IO切换

    1.Greenlet greenlet可以实现两个任务之间的来回切换,但遇到IO会阻塞,不会切(使用这个模块之前需要在电脑命令提示符中输入 pip3 install greenlet 进行安装) 例如 ...

  3. 十分钟通过一个实际问题,真正教会大家如何解决Bug

    前言 这篇文章从实际问题 -> 问题解决步骤 -> 问题解决思路,帮助大家能够明白如何在程序中发现问题,定位问题,解决问题.并真正理解那些问题解决思路. 首先说说这个实际问题是什么,又是怎 ...

  4. Linux下jdk的安装和环境变量的配置

    Linux下jdk的安装和环境变量的配置 一.jdk的下载 方式一:在官网下载 http://www.oracle.com/technetwork/java/javase/downloads/inde ...

  5. PHP的yield是个什么玩意

    来源:https://segmentfault.com/a/1190000018457194 其实,我并不是因为迭代或者生成器或者研究PHP手册才认识的yield,要不是协程,我到现在也不知道PHP中 ...

  6. Ubuntu syslog 太多的 named[1195]: error (network unreachable) resolving './DNSKEY/IN': 2001:7fd::1#53

    Edit file /etc/default/bind9: # run resolvconf? RESOLVCONF=yes # startup options for the server OPTI ...

  7. python的sqlalchemy框架

    先看一下sqlalchemy框架中的映射,sqlalchemy一共有三种映射方式:传统映射(classic).现代化映射(modern).自定义映射.在这里,只为大家讲一下classic映射和mode ...

  8. .html文件转换成.txt

    @ 思路 @-@ 简要 根据尖括号将文件分隔成字符串,建立一套判断字符串是否为标签的标准,若不为标签则为文本内容,存入结果文件中:   @-@ 详述 0. 建立两个哈希表: 哈希表1 unordere ...

  9. Clickhouse 字符串拆分 OR 一行转多行

    Clickhouse 字符串拆分 OR 一行转多行 我想把 '123_456_142354_23543' 通过'_' 下划线进行拆分成

  10. Win10美吱er吱er,Win10修改默认字体的方法

    请参考以下步骤(需要修改注册表,修改前请先备份,以便在出现问题时能够及时恢复): 例:将系统字体改为宋体 1.Windows+r,输入:regedit 2.定位以下路径:HKEY_LOCAL_MACH ...