1.jsp <include>
jsp中include有两种用法,分别是动态include和静态include。
动态include:
用法:<jsp:include page="included.jsp" flush="true" />
说明:它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数,先编译之后再进行处理。
原因:1、静态include的结果是把其他jsp引入当前jsp,两者合为一体。
2、静态include纯粹是把代码写在外面的一种共享方法,所有的变量都是可以和include它的主文件共享,两者高度紧密结合,不能有变量同名的冲突.而页面设置也可以借用主文件的.
静态include:
用法:<%@ include file="included.htm" %>
说明:用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面,直接将内容先包含后处理。
原因:1、动态include的结构是两者独立,直到输出时才合并( 看看jsp生成的java文件就可以知道了)。
2、动态include的jsp文件独立性很强,是一个单独的jsp文件,需要使用的对象,页面设置,都必须有自己创建,当然,还好它和include它的页面的request范围是一致的。
2.jsp<forward>
跳转标签:重定向一个HTML文件、jsp文件、程序段。
简单用法如下:
3.jsp<useBean>标签的详细用法
<jsp:useBean id="mydate" class="java.util.Date"> //jsp引擎将class属性翻译成静态创建对象实例(也就是使用new来创建对象实例,相当于java.util.Date mydate = new java.util.Date);
<jsp:useBean id="mydate" class="java.util.Date" type="Object"> //相当于Object mydate = new java.util.Date();
beanName和type一定要成对出现。beanName时一定要写type属性。beanName一定要为完整的包名+类名。
<jsp:useBean id="mydate" type="Object" beanName="java.util.Date"> //相当于Object mydate =
(Object)java.beans.Beans.instantiate(this.getClass().getClassLoader(), "java.util.Date");
beanName可以动态实例化,即可以传入动态的字符串,但一定要为type属性赋值,而class则只能传入静态的字符串。
即可以动态化beanName值:<% String str = request.getParameter("a"); %><jsp:useBean id="mydate" type="Object" beanName="<%=str%>"> <jsp:useBean id="mydate" type="Object" beanName="${param.a}">
(1)type属性和class属性有什么区别? type和class都是类的完全限定名,但是type可以给出当前javaBean的父类或者是实现接口的完全限定名,这样使得依赖于抽象,更加灵活。所以可以说type比class某些方面上应该更具有优势。
(2)class属性和beanName属性有什么区别?
区别是beanName写法上可以是类的完全限定名,也可以使表达式。其他的区别还有待考察。