上一节中的编译指令是给Servelt引擎看的,而这一节中提到的动作指令,则可以理解为java代码的一种简化写法。这些指令的目的是,用类似于html标签元素的代码,来代替jsp中的java脚本,使得整个页面简单明了。当然,在转译之后,这些动作指令会变成标准的java代码,保存在对应的Servlet中。JSP主要的动作指令有7个。
forward:用于将页面相应转发到另外的html,jsp或者servlet。跳转的时候可以传递参数,在另一个页面用jsp输出语法加request.getParameter("名字")来获取,得到的是String。执行forward指令时,用户的请求地址并没有改变,请求数据也不会丢失,因为实际上,forward并没有重新定向,只是采用了一个新的界面来相应,依然是一次请求。语法如下:
param:这个功能不能单独使用,必须被包夹在include、plugin或者forward中。
include:将某个页面的body体里面的内容包含进来,正如上一节所说,不会包含编译指令等内容。动态导入可以增加额外的参数,但然并卵,这个参数只能在被导入的页面才能被读取。forward用目标也代替原有页面同时保留request信息,而include拿目标也插入原有页面。
plugin:下载服务器端的javaBean到客户端,基本用不上。
useBean、setProperty、getProperty:这三个指令用于操作一个java实例。如果多个页面多次重复地使用某段代码,我们可以把这段代码定义为java类的方法,然后多个jsp页面调用该方法即可。语法如下:
当然,首先,我们得有事先写好的java类。类中的属性要有set、get方法。
实际上这两个指令是去调用了java类中的set、get方法。因此set、get方法最好要自动生成,以保证名字能够匹配。回想韩顺平所讲的,属性名可以不一致,但是操作属性的方法名一定要匹配上。此外这个javaBean实例还可以放到一个scope中,供其他jsp页面使用。
总结:这些指令就如同一些简便代码,只要我们在jsp页面中敲入他们,jsp容器就会自动的在对应的servlet中添加要实现的功能的代码。并且它们还具有html标签元素的特征,维护起来比较容易,美工也容易看懂(为什么感觉美工弱弱的。。。)。