JSP include动作

include动作与 include 指令的不同之处如下: include指令:静态包含(先包含,后编译) 1.编译时只有一个CLASS文件 2.引入的页面会共享主页面变量,注意变量名冲突 include动作:动态包含(先编译,后包含) 1.包含的文件是动态文件(如含有jsp代码的文件)先编译成CLASS文件,在进行包含 2.包含时可以传递参数,没有变量冲突 <jsp:include> 的语法如下: <jsp:include page="relativeURL | <%=expression%>" flush="true" /> page 指定引入页面的路径 flush 表示在引入文件前是否刷新缓冲区,默认为 false

例子:

head.jsp 代码如下:


    

index.jsp 代码如下:


    

JSP forward动作

用来将请求转发到另一个页面中,请求的参数数据会被一起转发到目标页面

login.jsp 页面代码如下:
  1. <%@ page language="java" contentType="text/html;charset=utf-8"%>
  2. <html>
  3. <body>
  4. <!--直接跳转,会带上GET、POST参数-->
  5. <jsp:forward page="index.jsp" />
  6. <!--自定义带参数跳转,接收与include动作相同-->
  7. <jsp:forward page="index.jsp" >
  8. <jsp:param name="name" value="value"/>
  9. </jsp:forward>
  10. </body>
  11. </html>

index.jsp 页面代码如下:

  1. <%@ page import="java.util.Date" language="java"
  2. contentType="text/html;charset=utf-8"%>
  3. <html>
  4. <body>
  5. <p>login.jsp将跳转到这里</p>
  6. </body>
  7. </html>

JSP useBean动作

1.类似于import引用类 2.用于获取 Bean 对象,首先会在指定范围内查找 Bean 对象,如果 Bean 对象不存在,则创建 Bean 对象 <l;jsp:useBean> 的语法如下: <jsp:useBean id = "name" class = "package.class" scope= "page | request | session | application" /> 其中: id表示 Bean 实例化对象的变量名,可以在指定范围内使用该变量名。 class表示需要实例化 Bean 的类路径,指定的类必须包含 public 且无参数的构造方法。 scope指定 Bean 的作用域,取值为: page:(默认)只能在当前页面使用该 Bean 对象; request:只能在一次请求范围内使用该 Bean 对象; session:只能在一次会话范围内使用该 Bean 对象; application:可以在整个应用范围内使用该 Bean 对象。

例子:

Test 类,代码如下:
  1. package com.jspweb;
  2. public class Test {
  3. public String concatStr(String str) {
  4. String str2 = str.concat("ok");
  5. return str2;
  6. }
  7. }
index.jsp 代码如下:
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <body>
  6. <jsp:useBean id="test" class="com.jspweb.Test" />
  7. <%
  8. String str = "调用Test类concatStr函数:";
  9. out.print(test.concatStr(str));
  10. %>
  11. </body>
  12. </html>

JSP setProperty和getProperty动作

1.用于获取设置 Bean 的属性值 2.注意:<jsp:setProperty> 和 <jsp:getProperty> 动作都会按照 page、request、session 和 application 的顺序依次查找指定 Bean 的实例对象,直到第一个实例被找到。如果任何范围内都不存在这个 Bean 实例,则会拋出异常。

示例

创建 Bean 类 Site.java,代码如下:
  1. package com.jspweb;
  2. public class Site {
  3. private String name;
  4. private String url;
  5. public String getName() {
  6. return name;
  7. }
  8. public void setName(String name) {
  9. this.name = name;
  10. }
  11. public String getUrl() {
  12. return url;
  13. }
  14. public void setUrl(String url) {
  15. this.url = url;
  16. }
  17. }
login.jsp 代码如下:
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <body>
  6. <form action="index.jsp" method="post">
  7. 网站名称: <input type="text" name="name" /> <br>
  8. 网址: <input type="text" name="url" /> <br>
  9. <input type="submit" value="提交" />
  10. </form>
  11. </body>
  12. </html>
index.jsp 代码如下:
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <!DOCTYPE html>
  4. <html>
  5. <body>
  6. <% request.setCharacterEncoding("UTF-8"); %>
  7. <jsp:useBean id="site" class="com.jspweb.Site" >
  8. <jsp:getProperty property="name" name="site" />
  9. <jsp:getProperty property="url" name="site" />
  10. <jsp:useBean>
  11. </body>
  12. </html>