3.jsp基础语法之动作篇

jsp基础语法3

jsp动作

又叫做jsp标签,虽然我们希望jsp页面仅用作显示模块,不要嵌套任何java代码引入任何业务逻辑,但在实际开发中不引入一点业务逻辑是不可能的,但引入业务逻辑又会导致页面出现难看的Java代码。

所以sun公司允许用户开发自定义标签页面的Java代码,以便jsp页面不出现一行java代码。当然sun公司在jsp页面也内置了一些标签(这些标签又叫做 jsp标签/jsp动作),开发人员使用这些标签可以完成页面的一些常用业务逻辑。
所以,jsp标签用于在jsp页面中提供业务逻辑功能。

jsp动作标签分类

jsp标签包含五类:

  1. 第一类是与JavaBean有关的,包括3个标签:
    < jsp:useBean > 、< jsp:getProperty >、< jsp:setProperty >
  2. 第二类是jsp1.2就开始有的基本元素,包含6个标签:
    < jsp:include> < jsp:forward> < jsp:param> < jsp:plugin>< jsp:params> < jsp:fallback>
  3. 第三类是jsp2.0新增加的元素,主要与jsp Document 有关,包含6个标签:
    < jsp:root> < jsp:declaration> < jsp:scriptlet> < jsp:expression>< jsp:text>< jsp:output>
  4. 第四类是jsp2.0新增加的元素,主要是用来动态生成xml元素标签的值,包含3个标签:
    < jsp:attribute>< jsp:body> < jsp:element>
  5. 第五类是jsp2.0新增加的元素,主要使用在Tag Filter中,包含两个标签:
    < jsp:invoke> < jsp:dobody>

jsp常用标签

1.< jsp:include >标签

< jsp:include >标签用于把另一个资源的输出内容插入进当前的jsp页面的输出内容之中,这种方式称为“动态引入”,或者是“动态包含”。
语法格式如下:

<jsp:include page="url"  flush="false|true"/>

<jsp:include page="url"  flush="false|true">
	<jsp:param value="参数名" name="参数值"/>
</jsp:include>

·page属性用于指定引入资源的相对路径,它也可以通过一个表达式来获得。
·flush属性指定在插入其他资源的输出内容时,是否先将当前jsp页面的已输出内容刷新到客户端,默认为false。可选属性。
·子标签< jsp:param >:用于向被包含的动态页面中传递参数。

注意:< jsp:include >标签对于静态和动态文件的处理方式不同。如果被包含文件是静态文件,则页面执行后,再使用了该标签的位置将会输出这个文件的内容。如果包含的是动态文件,那么jsp引擎将编译并执行这个文件。< jsp:include >标签会识别出文件的类型,而不是通过文件的名称来判断该文件是静态还是动态的。标签执行时,请求转发(不是重定向)到被包含页面。

Tip:< jsp:include >标签与include指令的比较
< jsp:include>标签是动态引入,< jsp:include>标签涉及到的2个jsp页面都会被翻译成2个servlet,这2个servlet的内容在执行时进行合并。
而include指令是静态引入,涉及到的两个jsp页面会被翻译成一个servlet,其内容是在源文件级别进行合并。
不管是< jsp:include>标签还是include指令,它们都会吧两个jsp页面内容合并输出,所以这两个页面不要出现重复的HTML全局架构标签,否则输出给客户端的内容将是一个格式混乱的HTML文档。
include指令包含时,由于被包含文件最终会生成一个文件,所以在被包含文件、包含文件中不能有重名的变量或方法;而< jsp:include>不存在。

2.< jsp:forward >标签

用于把请求转发给另一个资源。
语法格式:

<jsp:forward page=""/><jsp:forward page="" >
<jsp:param value="参数名" name="参数值"/>
</jsp:forward>

·page属性用于指定请求转发的目标页面。该属性值可以是一个指定文件路径的字符串,也可以是jsp表达式。
子标签< jsp:param >:用于向转向的目标文件中传递参数。

3.< jsp:param >标签

用作其他标签的子标签,用于为其他标签传递参数。
语法格式如下:

<jsp:param value="参数名" name="参数值"/>

·name:指定参数名称
·value:指定相应的参数值

它的功能与在文件名后加 “ ?参数名=参数值” 是相同的。

4.< jsp:useBean>

在jsp页面实例化或者在指定范围内使用JavaBean。< jsp:useBean>标签用来加载一个将在jsp页面中使用的JavaBean。这个功能非常常用,以为它使我们可以发挥JavaBean组件服用的优势。
语法格式如下:

<jsp:useBean id="标识符" class="Java类名" scope="作用范围">
</jsp:useBean>

5. < jsp:setProperty>

配合< jsp:useBean>使用,用来设置已经实例化Bean对象的属性。
语法格式:

<jsp:setProperty property="属性名" name="Bean标识符" param="可选,填传递的参数名" value="可选,指定bean属性的值"/>

<jsp:setProperty property="*" name="produce"/>

代表对produce类中的所有属性进行赋值,值为传递过来的参数值;也可单独用param=“传递的参数的参数名”来进行赋值。

6.< jsp:getProperty>标签

< jsp:getProperty>标签提取指定Bean类属性的值,转换为字符串,然后输出。
语法格式:

<jsp:getProperty property="Bean属性名" name="Bean标识符" />

TIP:jsp最佳实践

不管是jsp还是servlet,虽然都可以开发动态web资源。但由于这两门技术各自的特点,在长期的软件实践中,人们逐渐把servlet作为web应用中的控制器组件来使用,而把jsp技术作为数据显示模块来使用。
其原因为:程序的数据通常要美化后再输出
让jsp即用java代码产生动态数据,又做美化会导致页面难以维护。
让servlet即产生数据,又在里面嵌套HTML代码美化数据,同样会导致程序可读性差,难以维护。
因此最好的办法就是结合两门技术的特点,让他们各自负责各的,servlet只负责响应请求产生数据,并把数据通过转发技术带给jsp,数据的显示和美化都由jsp来做。

你可能感兴趣的:(jsp基本语法,jsp,java)