《Servlet和JSP学习指南》一3.6 动作

简介: 本节书摘来自华章出版社《Servlet和JSP学习指南》一书中的第3章,第3.6节,作者(加)Budi Kurniawan,更多章节内容可以访问云栖社区“华章计算机”公众号查看

3.6 动作

第三种句法元素是动作(Action),它们被编译成执行某个操作的Java代码,例如访问某个Java对象,或者调用某个方法。本节讨论必须能被所有JSP容器支持的标准动作。除标准动作之外,还可以创建定制的标签,用来执行某些操作。定制标签将在第6章中讨论。
下面列举部分标准动作。doBody和invoke这两个标准动作将在第7章中讨论。

3.6.1 useBean

这个动作将创建一个与某个Java对象相关的脚本变量。它是将表现逻辑与业务逻辑分隔开来的最容易的方法之一。但是有了像定制标签和Expression Language这类技术之后,现在已经很少使用useBean了。
举个例子。代码清单3-9中的useBeanTest.jsp页面创建了一个java.util.Date实例,并将它与脚本变量today关联起来,之后将它用在一个表达式中。
image

在Tomcat中,这个动作会被编译成下面的代码:
image

运行这个页面之后,将会在浏览器中输出当前的日期和时间。

3.6.2 setProperty和getProperty

setProperty 动作是在一个Java对象中保存一个属性,getProperty则是获取一个Java对象的属性。举个例子,代码清单3-11中的getSetPropertyTest.jsp页面保存和输出Employee类实例的firstName属性,具体如代码清单3-10所示。
image

image

3.6.3 include

include动作用于动态地包含另一个资源,它可以包含另一个JSP页面、一个Servlet或者一个静态的HTML页面。例如,代码清单3-12中的jspIncludeTest.jsp页面就是利用include 动作来包含menu.jsp页面的。
image

理解include指令和include 动作之间的区别是很重要的。使用include指令时,这种包含是发生在页面转换的时候,例如JSP容器将页面转换成一个生成的Servlet的时候。使用include 动作时,这种包含则是发生在请求的时候。因此,可以利用include 动作传递参数,而不是利用include指令。
第二个区别在于,使用include指令时,被包含资源的文件扩展名并不重要。而使用include 动作时,文件扩展名则必须为jsp,以便它能够作为一个JSP页面进行处理。例如,在include 动作中用jspf作为扩展名时,将会使得这个JSP segment被当作静态文件进行处理。

3.6.4 forward

forward 动作是将当前页面跳转到另一个不同的资源。例如,下面的forward 动作就是将当前页面跳转到login.jsp页面。
image

3.6.5 错误处理

在JSP中错误处理支持得很好。你可以利用try语句处理Java代码,也可以指定一个页面,让它在应用程序遇到未捕捉的异常时显示出来。那么,一旦发生异常,用户将会看到一张经过精心设计的页面,解释目前发生了什么状况,而不是用一条错误消息打发用户,让他们皱眉不已。
利用page指令的isErrorPage属性,就可以把一个JSP页面变成一个错误处理页面,该属性值必须为true。代码清单3-13展示了这样一个错误处理程序。
image

要防止未捕捉异常的其他页面则必须使用page指令的errorPage属性,将路径引向属性值指定的错误处理页面。例如,代码清单3-14中的buggy.jsp页面就是利用了代码清单3-13的错误处理程序。
image

如果运行这个buggy.jsp页面,它就会抛出一个异常。但你不会看到Servlet/JSP容器产生的错误消息,而是会看到errorHandler.jsp页面显示的内容。

相关文章
|
2天前
|
Java
排课系统【JSP+Servlet+JavaBean】(Java课设)
排课系统【JSP+Servlet+JavaBean】(Java课设)
13 5
|
2天前
|
Java
仓库管理系统【JSP+Servlet+JavaBean】(Java课设)
仓库管理系统【JSP+Servlet+JavaBean】(Java课设)
9 1
|
2天前
|
Java
校园帮【JSP+Servlet+JavaBean】(Java课设)
校园帮【JSP+Servlet+JavaBean】(Java课设)
6 1
|
2天前
|
Java
新闻发布系统【JSP+Servlet+JavaBean】(Java课设)
新闻发布系统【JSP+Servlet+JavaBean】(Java课设)
8 2
|
2天前
|
Java
学院管理系统【JSP+Servlet+JavaBean】(Java课设)
学院管理系统【JSP+Servlet+JavaBean】(Java课设)
13 3
学院管理系统【JSP+Servlet+JavaBean】(Java课设)
|
2天前
|
Java
学校人员管理系统【JSP+Servlet+JavaBean】(Java课设)
学校人员管理系统【JSP+Servlet+JavaBean】(Java课设)
7 2
|
2天前
|
Java
学校教师管理系统【JSP+Servlet+JavaBean】(Java课设)
学校教师管理系统【JSP+Servlet+JavaBean】(Java课设)
11 2
|
2天前
|
Java
学生信息管理系统【JSP+Servlet+JavaBean】(Java课设)
学生信息管理系统【JSP+Servlet+JavaBean】(Java课设)
7 1
|
2天前
|
Java
图书信息管理系统【JSP+Servlet+JavaBean】(Java课设)
图书信息管理系统【JSP+Servlet+JavaBean】(Java课设)
6 0
|
1天前
|
Java
个人信息管理系统【JSP+Servlet+JavaBean】(Java课设)
个人信息管理系统【JSP+Servlet+JavaBean】(Java课设)
7 0