JSP动作指令详解

本文详细介绍了JSP中的动作指令,包括forward、include和useBean指令。forward指令用于页面重定向,include指令用于动态包含文件,useBean指令则用于装载和使用JavaBean。每个指令的语法、属性及实例应用进行了深入讲解,帮助读者理解它们在JSP生命周期中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

动作指令和编译指令的区别:
编译指令是通知serverlet引擎处理消息,只在jsp被转化成serverlet的时候起作用。
动作指令是在jsp被客户端请求时动态执行的。也就是说:每次客户端请求时都有可能被执行一次。

动作元素只有一种语法,它符合XML标准:

<jsp:action_name attribute="value" />
语法 描述
jsp:include 在页面被请求的时候引入一个文件。
jsp:useBean 寻找或者实例化一个JavaBean。
jsp:setProperty 设置JavaBean的属性。
jsp:getProperty 输出某个JavaBean的属性。
jsp:forward 把请求转到一个新的页面。
jsp:plugin 根据浏览器类型为Java插件生成OBJECT或EMBED标记。
jsp:element 定义动态XML元素
jsp:attribute 设置动态定义的XML元素属性。
jsp:body 设置动态定义的XML元素内容。
jsp:text 在JSP页面和文档中使用写入文本的模板

常见的属性:

所有的动作要素都有两个属性:id属性和scope属性。

  • id属性:id属性是动作元素的唯一标识,可以在JSP页面中引用。动作元素创建的id值可以通过PageContext来调用。
  • scope属性:该属性用于识别动作元素的生命周期。 id属性和scope属性有直接关系,scope属性定义了相关联id对象的寿命。 scope属性有四个可能的值: (a) page, (b)request, (c)session, 和 (d) application。

动作指令-forward指令

forward指令用于将当前的程序重新定向到一个html页面或者一个动态程序,例如jsp,serverl。
forward指令有两种形式:带参数和不带参数。

语法格式如下:

<jsp:forward page="Relative URL" />

以下是forward相关联的属性:

属性 描述
page page属性包含的是一个相对URL。page的值既可以直接给出,也可以在请求的时候动态计算,可以是一个JSP页面或者一个 Java Servlet.
 

注:forward指令是一个重定向指令,所以forward指令下面的指令是不会被执行到的。

实例:

直接访问index.jsp然后重定向到login.jsp。

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:forward page="login.jsp">
    <jsp:param name="userName" value="icarus"/>
    <jsp:param name="password" value="123456"/>
</jsp:forward>

login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Login</title>
</head>
<body>
<%--登陆页面--%>
<%
    String userName=request.getParameter("userName");
    String password=request.getParameter("password");
    out.println(userName);
    out.print("<br/>");
    out.println(password);
%>
</body>
</html>

执行结果如下:

动作指令-登陆重定向

动作指令-include指令

include指令:动态包含指令,用来在一个jsp文件中包含一个静态或者动态的文件。静态文件一般为html文件,动态文件一般为jsp文件
静态文件处理:直接文将静态件加入到jsp程序中
jsp文件处理:首先将jsp程序执行,然后将生成的内容加入到当前的jsp程序中

语法格式如下:

<jsp:include page="relative URL" flush="true" />

以下是include动作相关的属性列表。

属性 描述
page 包含在页面中的相对URL地址。
flush 布尔属性,定义在包含资源前是否刷新缓存区。
 
与编译指令中的include指令区别:

静态导入是将被导入的页面代码完全融入,两个页面融合成一个整体的serverlet
动态导入是将serverlet中使用include方法来引入被导入的页面的内容
静态导入被导入页面的编译作用会起作用。而动态导入是被导入的页面的编译作用会失去作用,只是插入到被导入页面的body体。
执行include动态导入时还可以增加额外的参数

实例:

添加一个头部html页面,body提添加一个jsp文件。并传递参数

header.html

<head>
    <title>Title</title>
</head>

body.jsp

<body bgcolor="<%=request.getParameter("bgcolor")%>">

</body>

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<jsp:include page="header.html"></jsp:include>
<jsp:include page="body.jsp">
    <jsp:param name="bgcolor" value="red"/>
</jsp:include>
</html>

动作指令-useBean指令

首先解释下javaBean

  1. 必须有一个公共的、默认的构造函数
  2. javaBean的所有属性必须通过get/set访问
  3. javaBean必须是可序列化的

jsp:useBean动作用来装载一个将在JSP页面中使用的JavaBean。

这个功能非常有用,因为它使得我们既可以发挥Java组件重用的优势,同时也避免了损失JSP区别于Servlet的方便性。

jsp:useBean动作最简单的语法为:

<jsp:useBean id="name" class="package.class" />

以下是useBean动作相关的属性列表。

属性 描述
class 指定Bean的完整包名。
type 指定将引用该对象变量的类型。
beanName 通过 java.beans.Beans 的 instantiate() 方法指定Bean的名字。
实例:

实现注册功能:register.jsp文件用于录入注册信息,do_register.jsp用来显示注册信息

首先,创建一个javaBean,User类

public class User implements Serializable{
    private String userName;
    private String password;
    public User(){}
    public User(String userName,String password){
        this.userName=userName;
        this.password=password;
    }

    public String getUserName() {
        return userName;
    }

    public String getPassword() {
        return password;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

register.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>录入注册信息</title>
</head>
<body>
    <form action="do_register.jsp" method="post">
        用户名:<input type="text" name="userName"/>
        密码:<input type="password" name="password"/>
        <input type="submit" value="提交"/>
    </form>
</body>
</html>

do_register.jsp

<jsp:useBean id="user" class="com.icarus.example.User"></jsp:useBean>
<jsp:setProperty name="user" property="userName"/>
<jsp:setProperty name="user" property="password"/>

<%
    String userName=request.getParameter("userName");
    String password=request.getParameter("password");
    out.println("用户名:"+userName);
    out.println("<br/>");
    out.println("密码:"+password);
%>
<br/>
用户名:
<jsp:getProperty name="user" property="userName"/>
<br/>
密码:
<jsp:getProperty name="user" property="password"/>
</body>
</html>

显示结果:

动作指令-useBean-register

动作指令-useBean-do_register


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值