jsp jsp标签

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

jsp常用标签

jsp:include
jsp:forward
jsp:param

jsp:include标签

该标签用于把另外一个资源的输出内容插入当前JSP页面的输出内容之中,这种在Jsp页面中执行的时候引入的方式成为动态引入
<jsp:include page="relativeURL|<%= expression%>" flush="true|false" />
page属性用于指定被引入资源的相对路径,它也可以通过执行一个表达式来获取。
flush属性指定在插入其他资源的输出内容时,是否先将当前jsp页面的已输出的内容刷新到客户端


*************include1.jsp******************
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<h1> 这是页面的开头</h1>
​
*************include2.jsp*****************
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<h1>这是页面的结尾</h1>
​
************include.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:include page="/WEB-INF/tag/include1.jsp"></jsp:include>
<h1>这里是页面的内容</h1>
<jsp:include page="/WEB-INF/tag/include2.jsp"></jsp:include>
</body>
</html>
<jsp:include>和include的区别
<jsp:include>标签是动态引入,jsp:include标签设置到的2个JSP页面会翻译成2个Servlet,这2个Servlet执行时合并。
而include指令是静态引入,涉及到的2个jsp页面会被翻译成一个Servlet,其内容时在源文件级别进行合并。
​
*****被包含的页面 **********
<%@ 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 i=10; %>
    <h1> DEMO页面 i:<%= i %></h1>
</body>
</html>
​
结果正常输出:
INCLUDE页面中i的值为:100
DEMO页面 i:10
​
**********使用jsp:include的指令进行动态引入,页面可以正常输出
​
<%@ 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 i=100; %>
<h1>INCLUDE页面中i的值为:<%= i %></h1>
<jsp:include page="/WEB-INF/tag/demo.jsp"></jsp:include>
</body>
</html>
​

使用@include指令进行引入

<%@ 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 i=100; %>
<h1>INCLUDE页面中i的值为:<%= i %></h1>
<%@ include file="/WEB-INF/tag/demo.jsp" %>
    <!-- 提示错误:Duplicate field __2F_JavaWeb_2F_WebContent_2F_WEB_2D_INF_2F_tag_2F_include_2E_jsp.i -->
</body>
</html>
*.jspf扩展文件名在jsp:include @include和c:import中的区别
JSP规范建议使用.jspf作为静态引入文件的扩展名。
jspf扩展的文件名在include到另外一个jsp文件中,发现只有用@include指令的时候,jspf文件的内容才会被解析,并执行其中的jsp指令
和tag,而使用jsp:include和JSTL的c:import都没有用,jspf文件被当做纯文本文件处理了。
******开始页面***********
<%@ 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">
<h1>HEAD 页面</h1>
******结尾页面***********
<%@ 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">
<h1>结尾 页面</h1>
​
***********使用@include可以正常输出
<%@ 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>
<%@ include file="/WEB-INF/tag/head.jspf" %>
<h1>INCLUDE页面</h1>
<%@ include file="/WEB-INF/tag/tail.jspf" %>
</body>
</html>
输出结果:
HEAD 页面
INCLUDE页面
结尾 页面
 <!-- 使用jsp:include 标签 -->
<%@ 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:include page="/WEB-INF/tag/head.jspf"></jsp:include>
<h1>INCLUDE页面</h1>
<jsp:include page="/WEB-INF/tag/tail.jspf"></jsp:include>
</body>
</html>
输出结果;
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
HEAD 椤甸潰
INCLUDE页面
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
缁撳熬 椤甸潰
​
转换后网页代码:spf文件Tomcat服务器被当作纯文本文件处理了,没有当作jsp页面来解析执行
<!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>
<%@ 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">
<h1>HEAD 椤甸潰</h1>
<h1>INCLUDE页面</h1>
<%@ 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">
<h1>缁撳熬 椤甸潰</h1>
</body>
</html>

使用表达式进行引入

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
ps: 这里在引入的时候需要注意这里的不用使用表达式来代替,想下为什么
<jsp:include page="/WEB-INF/demo/zero.jsp" flush="false"/>
<!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">
ps:使用表达式来获取资源路径信息 css/js/image等静态文件
<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/css/first.css"/>
</head>
<body>
    <% int i=0; %>
    <p>输出jsp中定义的变量i=<%=i %></p>
    <p><%=request.getServletPath() %></p>
    <p><%=request.getContextPath()%></p>
    <%-- <jsp:include page="<%=(request.getServletPath()+"/../zero.jsp") %>" /> --%>
</body>
</html>

jsp:forward标签

 该标签用于把请求转发给另外一个资源
 <jsp:forward page="relativeURL|<%=exception%%>" />
page属性用于指定请求转发到的资源的相对路径,它可以通过执行一个表达式来获得。
<@ page language="java" import="java.util.*" pageEncoding="utf-8">
<%--使用<jsp:forward>标签跳转到forwarddemo2.jsp--%>
<jsp:forward page="/forward.jsp" />

jsp:param标签

当使用<jsp:include>和<jsp:forward>标签引入或将请求转发给其他资源时,可以使用<jsp:param>标签向这个资源传递参数
语法1:
<jsp:include page="relativeURL|<%=expression%>">
    <jsp:param name="paramterName" value="parameterValue|<%=expression%>" />
</jsp:include>
语法2:
<jsp:forward page="relativeURL|<%= expression%>" >
    <jsp:param name="parameterName" value="parameterValue|<%=expression%>" />
</jsp:foreard>

<jsp:param>标签的那么属性用于指定参数名,value属性用于指定参数值。在<jsp:include>和
<jsp:forward>标签中可以使用多个<jsp:param>标签来传递多个参数。
​
<!-- include*jsp:param -->
<%@ 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">
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 <h1>JspIncludeTagDemo03.jsp</h1>
 <hr/>
 <jsp:include page="/jspfragments/Inc.jsp">
     <jsp:param name="parm1" value="hello" />
     <jsp:param name="parm2" value="gacl" />
 </jsp:include>
​
<!-- forward*jsp:param -->
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 <%--使用<jsp:forward>标签跳转到forwarddemo04.jsp--%>
 <%--使用<jsp:param>标签向forwarddemo04.jsp传递参数--%>
 <jsp:forward page="/forwarddemo04.jsp">
     <jsp:param name="ref1" value="hello" />
     <jsp:param name="ref2" value="gacl" />
 </jsp:forward>
原文地址:https://www.cnblogs.com/ssgao/p/8866652.html