JSP 7个动作指令

3个编译指令,7个动作指令,编译指令和动作指令的区别在于:
 编译指令是通知Servlet引擎的处理消息,只在编译成servlet的时候起作用,动作指令是运行时起作用,可以替换成jsp脚本,它只是JSP脚本的标准写法。
JSP动作指令的7个兄弟是写什么呢:
老大:
  • jsp:forward
书上说:执行页面转向,将请求的处理转发到下一个页面。其实转发的时候,不一定是一个纯纯的页面。可以是动态的页面,也可以是静态的页面。更可以转发到容器中的Servlet,至于这个指令一般什么时候使用,需要开发中总结了。其中的page属性就是指定页面的跳转。
如何获取呢? 转发是要发送请求的,所以我们很容易想到用JSP的内置对象之一,HttpServletRequest 类来 所以用request.getParameter获取就好了
<jsp:forward page="result.jsp">
<jsp:param value="20" name="age"/>
</jsp:forward>
result.jsp
<%=request.getParameter("age")%>

再转发的时候,浏览器的请求地址是不会发生改变的,也就是说,浏览器向客户端发送的请求并没有改变。而是服务器内部进行转发。 
forward指令转发的实惠,客户端不会丢失参数。
  • jsp:param 
转发的时候,我们的参数就靠它来装载了,所以它是依赖于支持参数的标签使用,主要是和include forward plugin结合使用。比如转发,比如setProperty
jsp:include
这个指令在 3个编译指令已经阐述过了,它是动态的,编译指令是静态的,到底有哪里不同通过源码可以看到,
  • jsp:include
是通过JspRuntimeLibrary动态运行库的include方法导入。静态的是全部导入
动态的不会导入编译指令,静态的会。
动态的还可以增加参数
查看源码,静态的include是整个被包含到页面当中,而动态的是调用include方法,forward是调用forward方法。
  • useBean:   setProperty   getProperty
useBean: 含义就是在JSP中实例一个java实例 包含的属性是:
id:实例的名字,也就是new出来的对象的名字,class是指定实现类,scope 是指定javaBean的范围,一共四个值,这个和jsp中 四个域的概念有关系后面继续讲解。
name  就等同于id 是实例的名字。property才是参数的名字
<jsp:useBean id="person" class="com.webjsp.bean.PersonBean" scope="page"></jsp:useBean>
<jsp:setProperty property="name" name="person" value="zhangyi"/>
<jsp:setProperty property="age" name="person" value="20"/>
<jsp:getProperty name="person" property="name"/>

查看源码:
 out.write("\t");
com.webjsp.bean.PersonBean person = null;
person = (com.webjsp.bean.PersonBean) _jspx_page_context.getAttribute(" person", javax.servlet.jsp. PageContext. PAGE_SCOPE);
if (person == null){
person = new com.webjsp.bean.PersonBean();
_jspx_page_context.setAttribute("person", person, javax.servlet.jsp. PageContext. PAGE_SCOPE);

org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(_jspx_page_context. findAttribute(" person"), " name", " zhangyi", null, null, false);
out.write('\r');

 org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(_jspx_page_context. findAttribute(" person"), " age", " 20", null, null, false);

 out.write(org.apache.jasper.runtime. JspRuntimeLibrary. toString((((com.webjsp.bean.PersonBean)_jspx_page_context. findAttribute(" person")). getName())));

scope的四个属性:
page:JavaBean在本页有效
request:JavaBean在本次请求中有效
session:javaBean在本次会话中有效 
application:javaBean在本次应用中有效
这几个域到底什么区别,请看关于 4个域

将javabean放到域中的时候:
pageContext.setAttribute("person1",p1);
request.setAttribute("person2",p2);
session.setAttribute("person3",p3);
application.setAttribute("person4",p4);

最后一个动作指令:
  • plugin
这个指令我目前用的很少,是用于下载服务器端的javaBean或者Applet到客户端运行,由于程序要到客户端运行,必须安装虚拟机。
实际上,我们完全可以使用支持Applet的     HTML标签,所以不再介绍,有时间去研究。

参考《轻量级javaEE企业应用实战》
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值