4. JSP常用标签 | 常用标签 常用 常用 常用!

什么是JSP标签

JSP标签,有的地方也叫做JSP动作,在JSP中编写大量的java代码会使JSP页面显得杂乱无章,看起来非常不舒服,因此JSP提供了一些类似html的标签,通过这些标签能够替代部分java代码实现功能。
语法格式如下:

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

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

那么常用的JSP标签有哪儿些:

在JSP中有很多JSP标签,但是常用的主要有下面两个:

< jsp:forward>

forward 是前进的意思  我们转发的时候已经见过了啊!
该标签的作用是把请求转发给另外一个资源,页面中使用该指令之后,当前页面中的所有要显示的内容都将无法显示,因为会直接转发到了另一个页面。

创建一个index.jsp文件

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<%-- 普通P标签 不会显示! 因为下面又转发语句 只转发请求头哟~~ --%>
<p>我是index中的p标签~~</p>

<%-- 请求头设置属性 --%>
<% request.setAttribute("name", "Bi-Hu"); %>

    
    <%-- 实现转发功能! --%>
<jsp:forward page="/jsp2.jsp"></jsp:forward>
        
</body>
</html>

jsp2.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>


    <p>
    我是 j s p 2 的 p 标 签 ! 是的 这里没有index页面的内容 除了我获取的请求头的name:
    </p>

    
    

        <%-- 获取请求头的Attribute 和 打印出来 ~~ --%>
     <% String attribute = (String)request.getAttribute("name"); %>
     <%= attribute %>


</body>
</html>

在代码可以看到! 其实和转发差不多没两样~~~ JSP 听说只有 转发 没有 重定向~

接下来看第二个:

< jsp:include>

这就是动态包含了! 之前学了静态的 静态会何为一个java文件 而!动态不会! 所以他会有这些特性:

该标签用于把另外一个文件引入到当前JSP里面,这种引入方式叫做动态引入:

我们写一个s1.jsp  和  s2.jsp ,然后都在里面写:

s1.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<%-- 我们在这里动态包含s2.jsp: 然后分别打印s1 和 s2 中的 打印sum:
     还是那句话 ,引入和调用的内个顺序别弄混 最好就在头部就包含好!【动态无关紧要 静态包含就要注意!】
 --%>
    
    <jsp:include page="/s2.jsp"></jsp:include>
    
    <%-- 打印sum --%>
    
    <% int sum = 100; %>
    
    <%= "第一次打印 s1 的 SUM: " + sum %>
    <br>
    <%= "第二次打印 s1 的 SUM:" + sum %>
</body>
</html>

s2.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    
    <% int sum = 200; %>
    <br>
    <%="s2的sum:" +  sum %>
    <br>
</body>
</html>

所以呢: 总结出: 动态应用 他的文件是分开的 不合体了 ,即就是说 变量是独立的了 自己文件的变量只能自己文件使用!

打开生成java文件的目录可以看到,生成了两个jsp文件,分别是s1.java和s2.java
可以得出结论,该指令的引入是在运行期完成的,而非在编译期。这个引入指令,是在程序运行过程中,由 index_jsp 文件中的_jspService()方法通过 JspRuntimeLibrary 类的 include()方法调用了 left_jsp 文件中的_jspService()方法。在运行期所执行的这种引入,称为动态引入。

     org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "/s2.jsp", out, false);

就是这句了 ↑

动态引用和静态引用的区别:

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

静态引入:

<%@ include file="/xxx.jsp" %>

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

动态引入:

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值