JSP 指令和动作元素

jsp 指令

  指令的语法规则:<%@ 指令名 属性1="值1" 属性2="值2" ... %>

1. page 指令

  页面指令。page 指令天天都会看到,只要创建了 jsp 文件,那么第一行就是 page 指令。

1.1 最常见的3个属性

  1. language="java"
  2. contentType="text/html; charset=UTF-8"
  3. pageEncoding="UTF-8"

1.2 其他常用的属性

   1. import 属性:和 Java 中 import 关键字一样,用于引入类文件。
  例如,在 jsp 文件中引入java.util.List文件的代码:import="java.util.List",之后就可以在 jsp 文件中使用 List了
  如果想要引入多个类文件,多个类文件之间用逗号分隔import="java.util.List,java.util.ArrayList"
   2. isELIgnored 属性:是否忽略 EL 表达式,因为有的浏览器会忽略 EL 表达式,所以常常需要加上这个属性isELIgnored="false"
  3. session 属性:是否使用 session,其默认值是 true,表示使用 session,一般不会去设置。

  对应的标签写法:<jsp:directive.page import="" />

2. taglib 指令

  标签库指令在使用 jstl 时会用到的 (jstl —— jsp standard tag lib,jsp 标准标签库)

3. include 指令

  包含指令,将子文件内容放到主文件中。例如,<%@ include file=""%>,其中 file 的路径填写请求转发路径(不带有工程名)

  示例: 在如下所示的目录结构中,希望在 testJsp 文件中包含 yanzhengma 文件
在这里插入图片描述
   代码:

<%@ include file="/D20210222/yanzhengma.jsp" %>

  对应的标签格式<jsp:directive.include file="/D20210222/yanzhengma.jsp" />

jsp 动作(/行为)元素

语法 描述
jsp:include 在当前页面中包含一个静态or动态的资源
jsp:useBean 寻找和初始化一个 JavaBean 组件
jsp:setProperty 设置 JavaBean 组件的值
jsp:getProperty 将 JavaBean 组件的值插入到 output 中
jsp:forward 从一个 JSP 文件向另一个文件传递一个包含用户请求的 request 对象
jsp:plugin 用于在生成的 HTML 页面中包含 Applet 和 JavaBean 对象
jsp:element 动态创建一个 XML 元素
jsp:attribute 定义动态创建的 XML 元素的属性
jsp:body 定义动态创建的 XML 元素的主题
jsp:text 用于封装模板数据

1. include 动作

  代码示例:<jsp:include page="/D20210222/yanzhengma.jsp">

include指令 include动作
属性 file page
路径 请求转发路径 请求转发路径
过程 静态包含 动态包含

  静态包含:被包含的文件被原封不动的放入到包含页面中使用该指令的位置,然后 JSP 编译器再对这个合成文件进行编译,所以在一个 JSP 页面中使用 include 指令来包含另一个 JSP 页面,最后编译的文件只有一个。
  动态包含:当执行 include 动作后,JSP 程序会将请求转发到被包含页面,并将执行结果输出到浏览器中,然后返回页面继续执行后面的代码,因为 Web 容器执行的是两个文件,所以 JSP 编译器会分别对这两个文件进行编译。
  注意:include 动作通常用于那些经常改动的文件,因为被包含的文件改动不会影响到包含文件,因此不需要对包含文件进行重新编译。

2. forward 动作

  forward 动作就是请求转发,使用 page 属性来指示请求转发的路径。
  代码示例:

<jsp:forward page="/D20210221/D20210222A.jsp" />

  需要注意的:

  1. 即使写在 javascript 中,jsp 文件依旧会先解析成 Java 类文件,此时 javascript 中的 Java 相关的代码会编译执行
      例如:在 javascript 中只是定义的 test() 方法中使用了 jsp 的 forward 动作,但是没有调用 test() 方法,打开网页时,依旧会进行请求转发,这就是因为 jsp 文件的执行过程决定的。
<script type="text/javascript">
	function test() {
     
     
		<jsp:include page="/D20210221/form.html" />
	}
</script>
  1. 同理,html 注释和 javascript 注释中的 jsp 代码会执行,只有 jsp 注释中的 jsp代码不会执行。

3. useBean 动作

   该动作就是在网页端使用 Java 端的实体类。
   1. 无对象 → 则创建对象
   2. 有对象 → 则获取对象

<jsp:useBean id="pm1" class="D20210220.PersonModel" scope="request" />

  如果在request域中没有 pm1 这个对象,那么上面代码的作用相当于 Java 代码中对实体类对象的操作

PersonModel pm = new PersonModel();
request.setAttribute("pm1",pm);

  如果有 pm1 这个对象,那么就是获取这个对象。

4. setProperty 动作

<jsp:setProperty name="pm1" property="age" value="22" />
<%-- 相当于Java代码:pm1.setAge(22);  --%>

5. getProperty 动作

<jsp:getProperty name="pm1" property="age" />
 <%-- 相当于Java代码:pm1.getAge(22); --%>

  下面三条语句的作用都是在网页端显示 PersonModel 对象 pm1 的 age属性值。

<%-- jsp 动作显示 --%>
<jsp:getProperty name="pm1" property="age" />
<%-- jsp 表达式显示 --%>
<%=pm1.getAge()%>
<%-- jsp 内置对象显示 --%>
<%out.println(pm1.getAge());%>

  useBean、setProperty、getProperty小实例

猜你喜欢

转载自blog.csdn.net/qq_40395874/article/details/113991364