JSP-静态,动态包含
@3-1 静态包含
TestBar.jsp TitleBar.jsp 两个合在一起生成一个servlet class,
但是 TitleBar.jsp(被包含页面)这样无法传参数,因为编译之前传参数无意义。
@3-2 动态包含
被包含的 request 对象比包含的 request 对象能取出的东西还要多点。分别产生两个class可以传参数,怎么传,怎么取都可以。
包含页面 : date.jsp 源码如下 :
<%@ page import="java.util.*" %> <%= (new Date()).toLocaleString() %> <%= request.getParameter("user") %>(1), 被包含页面 可以取得 包含页面(主页面)传递的参数 http://127.0.0.1:8888/my/include/include.jsp?user=456789
(2), 包含页面与被包含页面的 request 是不同的。不是同一对象。虽然不是一个对象,但是可以看成是。设计成这样,是因为为了Action可以传递参数.
(3), include.jsp 中 <jsp:include page="date.jsp?dept=80" flush="true"/>在 date.jsp 中可以把 dept 取出来。
在包含页面传递的参数,被包含页面也可以将其取出。静态包含则不允许。
总结 : 只要当前页面能取到的参数,date.jsp页面也可以取到。包含页面传的参数下一页面(date.jsp)还能取到。
被包含的页面,request对象要大一些。
include.jsp
<html> <head> <title> include test</title> </head> <body bgcolor="white"> <font color="red"> The current date and time are <jsp:include page="date.jsp?dept=80" flush="true"/> </font> </body> </html>
Compute.html
<html> <head> <title>Compute</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body bgcolor="#FFFFFF"> <div align="center"> <form method="post" action="Compute.jsp"> <p>选择要做的运算 <input type="radio" name="compute" value="division" checked> 除法 <input type="radio" name="compute" value="multiplication"> 乘法</p> <p>被除数(被乘数) <input type="text" name="value1"> 除数(乘数) <input type="text" name="value2"> </p> <p> <input type="submit" name="Submit" value="计算结果"> </p> </form> </div> </body> </html>Compute.jsp
<%@ page language="java" %> <% String value1 = request.getParameter("value1"); String value2 = request.getParameter("value2"); %> <% if( request.getParameter("compute").equals("division") ) { %> <jsp:include page="divide.jsp" flush="true"> <jsp:param name="v1" value="<%=value1%>"/> <jsp:param name="v2" value="<%=value2%>"/> </jsp:include> <% } else { %> <%@ include file="multiply.jsp"%> <% } %>divide.jsp
<html> <head> <title>Divide</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body bgcolor="#FFFFFF"> <center> <h1> <% try{ float dividend = Float.parseFloat( request.getParameter( "value1" ) ); float divisor = Float.parseFloat( request.getParameter( "value2" ) ); double result=dividend/divisor; %> <%= result%> <% //out.println( dividend + " / " + divisor + " = " + result ); } catch( Exception ex ){ out.println( "不合法的被乘数或除数!" ); } %> </h1> </center> </body> </html>multiply.jsp
<html> <head> <title>Devide</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head> <body bgcolor="#FFFFFF"> <center> <h1> <% try{ //System.out.println(request.getParameter("v1")); float multiplicand = Float.parseFloat( request.getParameter( "value1" ) ); float multiplicator = Float.parseFloat( request.getParameter( "value2" ) ); double result=multiplicand*multiplicator; out.println( multiplicand + " * " + multiplicator + " = " + result ); } catch( Exception ex ){ out.println( "不合法的被乘数或乘数!" ); } %> </h1> </center> </body> </html>