JSP 动作指令

2025-05-07 19:25:54

1、概述

2、常见的 JSP 动作指令

3、JavaBean

4、常用 JSP 动作指令

---4.1 jsp:include

---4.2 jsp:useBean

---4.3 jsp:setProperty

---4.4 jsp:getProperty

---4.5 代码示例

---4.6 jsp:forward

---4.7 jsp:param

概述

1、动作指令和编译指令不同,编译指令是通知 servlet 引擎的处理消息。而动作指令是运行时的动作。

2、编译指令在将 JSP 编译成 servlet 时起作用,而处理指令通常可替代成 JSP 脚本。

3、语法:

常见的 JSP 动作指令

在页面被请求的时候引入一个文件。

寻找或者实例化一个 JavaBean。

设置 JavaBean 的属性。

输出某个 JavaBean 的属性。

把请求转到一个新的页面。

该标签可以作为其他标签的子标签,为其他标签传递参数(include 和 forward)。

---------------------------以上为常用---------------------------

根据浏览器类型为Java插件生成OBJECT或EMBED标记。

定义动态XML元素

设置动态定义的XML元素属性。

设置动态定义的XML元素内容。

在JSP页面和文档中使用写入文本的模板

JavaBean

1、JavaBean是一个可重复使用的软件组件,遵循特定的接口标准,对Java类的方法命名、行为、继承与实现等有特定的要求。

2、JavaBean 是 JavaWeb 应用的模型组件。

3、JSP 和 servlet 可以调用 JavaBean 完成业务逻辑的操作。

4、JSP 只支持非可视化的 JavaBean。

5、非可视化的 JavaBean 又可分为业务 Bean 和数据 Bean。业务 Bean 用来封装业务逻辑和数据库操作等,数据 Bean 用来封装数据。

5、利用 JavaBean 可以实现业务逻辑和前台应用程序的分离,实现代码的重用,从而提高软件的开发效率。

(1)必须是一个公共的类,即访向控制符为 public。

(2)必须包含有一个访问控制符为 public 的无参构造方法。

(3)属性都是私有的,即访向控制符为 private 。

(4)属性通过 get/set 方法来访问。

代码示例

package com.aaa;

public class TestBean {

private String userName;

private String passWord;

private int age;

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

public String getPassWord() {

return passWord;

}

public void setPassWord(String passWord) {

this.passWord = passWord;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

常用 JSP 动作指令

jsp:include

这个动作标签可以将另外一个文件内容包含到当前 JSP 页面中,被包含的页面可以是静态的,也可以是动态代码,语法如下。

< jsp:indude page = "url" flush ="false I true"/>

或者是

子动作

page:该属性用于指定被包含文件的相对路径。

flush:可选参数,用于设置是否刷新缓冲区,如果为 true,则在当前页面输出使用了缓冲区的情况下,将先刷新缓冲区,然后再执行包含操作。如果为 false 则相反;默认为 false,当动作包含子动作时,使用第二种格式,否则可使用第一种格式。

动作和 include 指令的差别在于,include 动作包含的页面在运行时被加入,而 include 指令在编译的时候就被加入了。

代码示例:

test.jsp 在页面上输出用 “*” 组成的直角三角形,index.jsp 包含 test.jsp 代码如下。

index. jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

动作包含

输出三角形

test.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

输出三角形

<%

for(int i = 1; i <= 9; i++) {

for (int j = 1; j <= i; j++) {

out.print("*");

}

out.print("
");

}

%>

jsp:useBean

语法(当包含子动作时使用第一种格式)

子动作

属性

1、id:命名引用该 Bean 的变量。如果能够找到 id 和 scope 相同的 Bean 实例,jsp:useBean 动作将使用已有的Bean实例而不是创建新的实例。

2、class:指定 Bean 的完整包名。

3、scope:指定 Bean 在哪种上下文内可用,可以取下面的四个值之一:page,request,session 和 application。

(1)默认值是 page,表示该 Bean 只在当前页面内可用(保存在当前页面的 PageContext 内)。

(2)request 表示该 Bean 在当前的客户请求内有效(保存在 ServletRequest 对象内)。

(3)session 表示该 Bean 对当前 HttpSession 内的所有页面都有效。

(4) application 则表示该 Bean 对所有具有相同 ServletContext 的页面都有效。

4、type:指定引用该对象的变量的类型,它必须是Bean类的名字、超类名字、该类所实现的接口名字之一。请记住变量的名字是由id属性指定的。

5、beanName:指定 Bean 的名字。如果提供了 type 属性和 beanName 属性,允许省略 class 属性。

jsp:setProperty

动作常和 动作一起使用,为 JavaBean 中属性赋值,可以通过以下四种方式赋值。

1、

在提交数量较多的 JSP 页面中,一般使用这种方法接收并设置 JavaBean 中的属性值。

当接收到一个 request 对象时,JSP 的内在机制会将 request 对象中的参数名和 JavaBean 中的属性进行匹配,并将名字相同的参数赋值给 JavaBean 的同名属性。

使用这种方法时,要求 JavaBean 中的属性名和 request 对象中的参数名字匹配。如果参数和 JavaBean 中的属性值不匹配,会导致无法赋值。

2、

value 值可以是一个字符串,也可以是表达式。

这种方式采用特定的值给 JavaBean 中的特定属性赋值,要求 value 值和 JavaBean 中的属性类可以成功转化。

3、

property 指的是 JavaBean 中待赋值的属性名,param 值请求中的参数名。

此参数可以来自于表单也可以是来自于 URL 传递的参数。

JSP 内部机制从 request 对象中获取相应的参数值,并赋值给 JavaBean 中指定的属性值。

注意:如果指定了 param 值,就不可以指定 value 值,即 param 和 value 不可以同时使用。

4、

利用表单对 JavaBean 进行赋值时,通常使用这种方式。

既没有指定 value,也没有指定 param,那么执行该动作的时候,会从 request 对象中寻找与属性名相同的参数值,如果有,则将该参数值赋值给 JavaBean 中的属性。

注意:如果利用表单给 JavaBean 赋值,除非使用 param 指定参数,负责表单中的控件必须与 JavaBean 中的属性值相匹配。

jsp:getProperty

1、 用于获取 JavaBean 中的属性值,并且将属性值转化成字符串发送到输入流中,并且显示到页面上。

2、语法如下:

name:指定某一范围的 JavaBean 实例的引用。

property:指定 JavaBean 属性名称。

代码示例

TestBean.java:

package com.aaa;

public class TestBean {

private String userName;

private String passWord;

private int age;

//get、set省略...

}

regist.html:

test.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

myJsp

使用getProperty

用户名:

密码:

年龄:

客户端名称:<%=request.getRemoteAddr() %>

输入信息后点击提交查询:

jsp:forward

这个动作标签是请求转发标签,可以将当前页面的请求转发给其他 web 资源,可以是 JSP 页面、HTML页面、Servlet 等。请求转发指的是停止执行当前的 JSP,而执行被转发的资源,转发后与转发前在同一个请求范围内,地址栏的地址并不会发生变化。

page 属性包含的是一个相对URL。page 的值既可以直接给出,也可以在请求的时候动态计算。

语法如下:

格式一:

格式二:

子动作

Page 属性指明被转发的资源,当前 JSP 页面和被转发的资源必须位于相同的上下文环境中。当动作不包含子动作时,使用第一种格式,否则使用第二种格式。

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

代码示例:

由 first.jsp 请求转发到 second.jsp,在 first. jsp 中向 request 对象中保存变量,在 second.jsp 中读取变量 name,由于请求转发仍在同一个请求中,所以 request 对象中的变量仍然有效。

first.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

first

这是first.jsp界面

<%

request.setAttribute("name","zhangsan");

%>

<%--有动作--%>

<%--无动作--%>

<%----%>

second.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

second

这是second.jsp界面

request对象中name的值是:

<%=request.getAttribute("name") %>


重定向时通过param传过来的值是:

<%=request.getParameter("qwe") %>

jsp:param

该标签可以作为其他标签的子标签,或者为其标签传递参数。

语法如下。

Name:用于设定参数名称。

Value:用于设定对应参数的值。

代码示例:

在 third.jsp 中,向被转发的资源 fourh.jsp 传递两个参数 name 和 pwd,在 fourth.jsp 中使用 request.getParameter()方法获取参数值。

third.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

third

third.jsp界面

<%

request.setAttribute("name","zhangsan");

%>

fourh.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

fourth

这是fourth.jsp界面

request对象中name的值是:

<%=request.getAttribute("name") %>


param动作传过来的name值是:

<%=request.getParameter("name") %>


param动作传过来的psw值是:

<%=request.getParameter("psw") %>