JSP系列三:jsp动作元素

来源:互联网 发布:数据分析考研科目 编辑:程序博客网 时间:2024/05/13 21:17
Java代码 复制代码
  1. JSP动作指令主要有如下7个:   
  2.     jsp:forward:执行页面转向,将请求的处理转发到下一个页面。   
  3.     jsp:param:用于传递参数,必须与其他支持参数的标签一起使用。   
  4.     jsp:include:用于动态引入一个JSP页面。   
  5.     jsp:plugin:用于下载JavaBean或Applet到客户端执行。   
  6.     jsp:useBean:创建一个JavaBean的实例。   
  7.     jsp:setProperty:设置JavaBean实例的属性值。   
  8.     jsp:getProperty:输出JavaBean实例的属性值。   
  9.   
  10. forward指令   
  11. forward指令用于将页面响应转发给另外的页面。既可以转发给静态的HTML页面,也可以转发到动态的JSP页面,或者转发到容器中的Servlet。   
  12. JSP的forward指令的格式如下。   
  13. 对于JSP 1.0,使用如下语法:   
  14. <jsp:forward page="{relativeURL|<%=expression%>}"/>    
  15. 对于JSP 1.1以上,可使用如下语法:   
  16. <jsp:forward page="{relativeURL|<%=expression%>}">   
  17. {<jsp:param.../>}    
  18. </jsp:forward>   
  19. 第二种语法用于在转发时增加额外的请求参数。增加的请求参数的值可以通过HttpServletRequest类的getParameter()方法获取。   
  20. 下面示例页面使用了forward动作指令来转发用户请求。   
  21. 程序清单:codes/02/2.2/jspPrinciple/jsp-forward.jsp   
  22. <%@ page contentType="text/html; charset=gb2312" language="java" %>   
  23. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">   
  24. <HTML>   
  25. <HEAD>   
  26. <TITLE>forward的原始页</TITLE>   
  27. </HEAD>   
  28. <BODY>   
  29. <h3>forward的原始页</h3>   
  30. <jsp:forward page="forward-result.jsp">   
  31. <jsp:param name="age" value="29"/>   
  32. </jsp:forward>   
  33. </BODY>   
  34. </HTML>   
  35. 这个JSP页面非常简单,它包含了简单的title信息,页面中也包含了简单的文本内容,页面的粗体字代码则将客户端请求转发到forward-result.jsp页面,转发请求时增加了一个请求参数:参数名为age,参数值为29。   
  36. 在forward-result.jsp页面中,使用request内置对象(request内置对象是HttpServletRequest的实例,关于request的详细信息参看下一节)来获取增加的请求参数值。   
  37. 程序清单:codes/02/2.2/jspPrinciple/forward-result.jsp   
  38. <%@ page contentType="text/html; charset=gb2312" language="java" %>   
  39. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">   
  40. <HTML>   
  41. <HEAD>   
  42. <TITLE>forward结果页</TITLE>   
  43. </HEAD>   
  44. <BODY>   
  45. <!-- 使用request内置对象获取age参数的值 -->   
  46. <%=request.getParameter("age")%>   
  47. </BODY>   
  48. </HTML>   
  49. 执行forward指令转发请求时,客户端的请求参数不会丢失。看下面表单提交页面的例子,该页面没有任何动态的内容,只是一个静态的表单页,作用是将请求参数提交到jsp-forward.jsp页。   
  50. 程序清单:codes/02/2.2/jspPrinciple/form.jsp   
  51. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">   
  52. <HTML>   
  53. <HEAD>   
  54. <TITLE>提交</TITLE>   
  55. </HEAD>   
  56. <BODY>   
  57. <!-- 表单提交页面 -->   
  58. <form id="login" method="post" action="jsp-forward.jsp">   
  59. <INPUT TYPE="text" NAME="username">   
  60. <INPUT TYPE="submit" value="login">   
  61. </FORM>   
  62. </BODY>   
  63. </HTML>   
  64. 修改forward-result.jsp页,增加输出表单参数的代码,修改后forward-result.jsp页面的代码如下:   
  65. 程序清单:codes/02/2.2/jspPrinciple/forward-result.jsp   
  66. <%@ page contentType="text/html; charset=gb2312" language="java" %>   
  67. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">   
  68. <HTML>   
  69. <HEAD>   
  70. <TITLE>forward结果页</TITLE>   
  71. </HEAD>   
  72. <BODY>   
  73. <!-- 使用request内置对象获取age参数的值 -->   
  74. <%=request.getParameter("age")%>   
  75. <!-- 输出username请求参数的值 -->   
  76. <%=request.getParameter("username")%>   
  77. </BODY>   
  78. </HTML>   
  79. forward-result.jsp页面中不仅可以输出forward指令增加的请求参数,还可以看到表单里username表单域对应的请求参数,这表明执行forward时不会丢失请求参数。   
  80. include指令   
  81. include指令是一个动态include指令,也用于导入某个页面,它不会导入被include页面的编译指令,仅仅将被导入页面的body内容插入本页面。   
  82. 下面是include动作指令的语法格式:   
  83. <jsp:include page="{relativeURL│<%=expression%>}" flush="true"/>    
  84. 或者   
  85. <jsp:include page="{relativeURL│<%=expression%>}" flush="true">    
  86. <jsp:param name="parameterName" value="patameterValue"/>    
  87. </jsp:include>   
  88. flush属性用于指定输出缓存是否转移到被导入文件中。如果指定为true,则包含在被导入文件中;如果指定为false,则包含在原文件中。对于JSP 1.1旧版本,只能设置为false。   
  89. 对于第二种语法格式,则可在被导入页面中加入额外的请求参数。   
  90. 下面页面使用了动态导入语法来导入指定JSP页面。   
  91. 程序清单:codes/02/2.2/jspPrinciple/jsp-include.jsp   
  92. <%@ page contentType="text/html; charset=gb2312" language="java" %>   
  93. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">   
  94. <HTML>   
  95. <HEAD>   
  96. <TITLE>jsp-include测试</TITLE>   
  97. </HEAD>   
  98. <BODY>   
  99. <!-- 使用动态include指令导入页面 -->   
  100. <jsp:include page="scriptlet.jsp" />   
  101. </BODY>   
  102. </HTML>   
  103. 上面页面中粗体字代码使用了动态导入语法来导入了scriptlet.jsp。表面上看,该页面的执行效果与使用静态include导入的页面并没有什么不同。但查看jsp-include.jsp页面生成Servlet的源代码,可以看到如下片段:   
  104. //使用页面输出流,生成HTML标签内容   
  105. out.write("<!DOCTYPE HTML PUBLIC /"-//W3C//DTD HTML 4.0 Transitional//EN/ ">/r/n");   
  106. out.write("<HTML>/r/n");   
  107. out.write("<HEAD>/r/n");   
  108. out.write("<TITLE>jsp-include测试</TITLE>/r/n");   
  109. out.write("</HEAD>/r/n");   
  110. out.write("<BODY>/r/n");   
  111. //动态导入,直接引入scriptlet.jsp页面   
  112. org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response,    
  113. "scriptlet.jsp", out);   
  114. out.write("/r/n");   
  115. out.write("</BODY>/r/n");   
  116. out.write("</HTML>/r/n");   
  117. out.write("/r/n");   
  118. 上面代码片段中粗体字代码显示了动态导入的关键:动态导入只是使用一个include方法来插入目标页面的内容,而不是将目标页面完全融入本页面中。   
  119. 归纳起来,静态导入和动态导入有如下两点区别:   
  120.    静态导入是将被导入页面的代码完全融入,两个页面融合成一个整体Servlet;而动态导入则在Servlet中使用include方法来引入被导入页面的内容。   
  121.    静态导入时被导入页面的编译指令会起作用;而动态导入时被导入页面的编译指令则失去作用,只是插入被导入页面的body内容。   
  122. 除此之外,执行include动态指令时,还可增加额外的请求参数,如下面JSP页面所示。   
  123. 程序清单:codes/02/2.2/jspPrinciple/jsp-include2.jsp   
  124. <%@ page contentType="text/html; charset=gb2312" language="java" %>   
  125. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">   
  126. <HTML>   
  127. <HEAD>   
  128. <TITLE>jsp-include测试</TITLE>   
  129. </HEAD>   
  130. <BODY>   
  131. <jsp:include page="forward-result.jsp" >   
  132. <jsp:param name="age" value="32"/>   
  133. </jsp:include>   
  134. </BODY>   
  135. </HTML>   
  136. 在上面的JSP页面中的粗体字代码同样使用jsp:include指令导入页面,而且在jsp:include指令中还使用param指令传入参数,该参数可以在forward-result.jsp页面中使用request对象获取。  
原创粉丝点击