JSP动作标签 和include 静态包含和jsp include 动态包含的区别

JSP动作标签
这些jsp的动作标签,与html提供的标签有本质的区别。
* 动作标签是由tomcat(服务器)来解释执行!它与java代码一样,都是在服务器端执行的!
* html由浏览器来执行!
    * <jsp:forward>:转发!它与RequestDispatcher的forward方法是一样的,一个是在Servlet中使用,一个是在jsp中使用!
    * <jsp:include>:包含:它与RequestDispatcher的include方法是一样的,一个是在Servlet中使用,一个是在jsp中使用!

<%@include>和<jsp:include>有什么不同!

2. include --> 静态包含
  * 与RequestDispatcher的include()方法的功能相似!
  * <%@include%> 它是在jsp编译成java文件时完成的!他们共同生成一个java(就是一个servlet)文件,然后再生成一个class!
  * RequestDispatcher的include()是一个方法,包含和被包含的是两个servlet,即两个.class!他们只是把响应的内容在运行时合并了!
  * 作用:把页面分解了,使用包含的方式组合在一起,这样一个页面中不变的部分,就是一个独立jsp,而我们只需要处理变化的

页面。

例如:

hel.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 'hel.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>
<%
	String name="zhangSan";
	String pagepath = "lo.jsp";
%>
<%@include file="lo.jsp" %>
  </body>
</html>

lo.jsp

<%
	out.print(name);
%>

<jsp:include>

<jsp:include>标签的作用是用来包含其它JSP页面的!你可能会说,前面已经学习了include指令了,它们是否相同呢?虽然它们都是用来包含其它JSP页面的,但它们的实现的级别是不同的!

include指令是在编译级别完成的包含,即把当前JSP和被包含的JSP合并成一个JSP,然后再编译成一个Servlet。

include动作标签是在运行级别完成的包含,即当前JSP和被包含的JSP都会各自生成Servlet,然后在执行当前JSP的Servlet时完成包含另一个JSP的Servlet。它与RequestDispatcher的include()方法是相同的!

hel.jsp

  <body>

    <h1>hel.jsp</h1>

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

  </body>

 

lo.jsp

<%

    out.println("<h1>lo.jsp</h1>");

%>

 

 

  其实<jsp:include>在“真身”中不过是一句方法调用,即调用另一个Servlet而已。

最终会形成两个java 文件和两个class 文件


    * <jsp:param>:它用来作为forward和include的子标签!用来给转发或包含的页面传递参数!

<%--动态包含 --%>
<jsp:forward page="b.jsp" >
  <jsp:param value="zhangSan" name="username"/>
  <jsp:param value="123" name="password"/>
</jsp:forward>
<h1>b.jsp</h1>

<%
	String username = request.getParameter("username");
	String password = request.getParameter("password");
	
	out.print(username + ", " + password);
%>

猜你喜欢

转载自blog.csdn.net/qq_20610631/article/details/81334391