JSP元素
(1) 指令元素
发生时间:在编译时被编译执行
(2) 脚本元素
(3) 动作元素
发生时间:每次有客户端请求时都会被执行一次
• 动作是特殊的标记,通过一个动作标记可以实现多行Java代码实现的效果。可以动态插入文件、重用JavaBean组件、导向另一个页面等。
• 动作元素和指令元素不同,动作元素是在客户端请求时动态执行的,每次有客户端请求时可能都会被执行一次,而指令元素是在编译时被编译执行,它只会被编译一次
动作元素分类:
1、<jsp:useBean>————jsp是前缀,useBean是名字
功能:创建或者返回一个实体Bean组件的实体对象
JavaBean需要的两个条件:
(1) 类是公有的,有一个默认的无参构造方法
(2) 在类中可以定义若干个私有属性,但是需要通过公有的getter/setter方法对这些属性进行赋值和取值,并且getter/setter方法不能重载
注意:
• 在编写上,JavaBean的类必须使用package语句;
• public、无参构造方法;
• getter/setter方法必须是public的,分别以set及get开头,方法命名上遵循Java的命名规范。
• 当属性类型为boolean类型的时候,getter方法的get可以用is代替。
JavaBean包含的一些其它方法:
(1)<jsp:useBean>
– useBean动作用于创建引用,并将现有的Bean组件嵌入JSP 。
– useBean的语法:
<jsp:useBean id="BeanName" class="BeanClass" scope="page|request|session|application"/>
例子:
<!-- 作用:
Book book=(Book)session.getAttribute("book");
if(book!=null){
Book book=new Book();
Session.setAttribute(“book”,book);
}
return book;
通过getAttribute方法获取book对象,如果book是空的则创建该对象,并且将该对象
设置到session的 作用域范围之内,如果不为空,从session中获取了引用,所有return -->
<jsp:useBean id="book" class=cn.csdn.beans.Book" scope="session"></jsp:useBean>
(2)<jsp:setProperty>
– setProperty动作用于设置useBean中指定的Bean的属性的值。setProperty动作指定JavaBean的名称、属性名、属性值和参数,用于赋给Bean的属性。
– setProperty的语法:
<jsp:setProperty name="BeanAlias"
property="PropertyName" value="Value"
param="Parameter“
<jsp:setProperty property="bean对象的属性名称" name="bean对象的名字" value="bean对象的值"/>
实例:
<jsp:setProperty name=“book” property=“name” value=“Java SE程序设计精讲”/>
等价于<%book.setName(“Java SE程序设计精讲”);%>
(3)<jsp:getProperty>
– getProperty动作用于获取Bean中指定的属性中的值。系统先将收到的值转换为字符串,然后再将其作为输出结果发送。
– getProperty的语法:
<jsp:getProperty name="BeanAlias" property="PropertyName"/>
<jsp:getProperty property="bean对象的属性名称" name="bean对象的名字"/>
Out.println(bean对象.getxxx());//具有输出的功能
例如,<jsp:getProperty name=“book” property=“name” />
等价于:<%= book.getName() %>
使用JavaBean的好处
– JavaBean技术更有利于Web开发的代码复用。因为写在JSP页面中的Java代码片段重用性要差一些,而JavaBean是一个Java类,更方便在其他Web应用中复用。
– JavaBean技术还有利于开发项目的角色分工,让页面设计人员和程序编写人员更容易地修改JSP页面中自己所管辖的内容,而不必互相干扰。
2、<jsp:include>
– include动作用于将其他HTML页面或JSP页面中的内容合并到当前页面,或将其中的文件插入到当前页面。
– 不带参数的include动作:
<jsp:include page="weburl" flush="true"/>
– 带参数的include动作:
<jsp:include page="weburl" flush="true">
<jsp:param name="ParamName" value="ParamValue"/>
【使用include动作的JSP页面,通过request.getParameter(“name”)获得被包含文件传递的参数值。】
<jsp:include>
include指令和<jsp:include>动作的区别
– include指令读入指定页面的内容并把这些内容和原来的页面融合到一起。这个过程发生在JSP转化成Servlet的阶段,最终所合成的JSP文件被Servlet容器转化成Servlet。如果一个JSP页面使用include指令包含了另一个JSP页面,最终也只产生一个Servlet的Java源文件和一个class文件。相当于兵合一处,将打一方。
– 使用<jsp:include>动作包含其他JSP页面,本质是调用了被包含文件所转化的Servlet对象的jspService()方法。即所被包含的JSP文件也对应有生成的Servlet源文件和class文件。如果一个JSP页面使用include动作包含了另一个JSP页面,会产生两个Servlet源文件和两个class文件。
这两种包含都可以包含jsp页面和html页面
动作元素包含:
<jsp:include page=”被包含的文件的URL地址”>包含动作会执行多次,每一个客户端提交请求的时候,会有两个servlet产生
指令元素包含:
<%@include file=” 被包含的文件的URL地址”> 发生在转换阶段,只做一次,只会有一个servlet产生
3、<jsp:forward>
– forward动作用来把当前的JSP页面重定向到另一个页面(同一个Web应用中的HTML文件、JSP页面、Servlet)。
– 地址还是当前页面的地址。内容则是另一个页的内容。
– 不带参数的forward动作:<jsp:forward page="url"/>
– 带参数的include动作:
<jsp:forward page="url">
<jsp:param name="ParamName" value="ParamValue"/>
</jsp:forward>
使用<jsp:forward>动作转向,和Servlet中的重定向代码完全等同。
4、<jsp:param>
– param提供其他JSP动作的名称/值信息。
– param语法:
<jsp:param name="ParamName" value="ParamValue"/>
5、<jsp:plugin>
– 用于连接客户端的Applet和Bean插件。在处理这个动作的时候,根据客户端浏览器的不同,JSP在执行以后将分别输出为OBJECT或EMBED这两个不同的HTML元素。
JSP有三种注释方式
1、 HTML注释(输出注释):指在客户端查看源代码时能看见注释。例如,
<!-- this is an html comment.it will show up int the response. -->
2、 JSP页注释(隐藏注释):指注释虽然写在JSP程序中,但不会发送给客户,因此在客户端查看源代码时不能看见注释。这样的注释在JSP编译时被忽略掉。
<%--this is a JSP comment.it will only be seen in jsp code--%>
3、 Java注释:只能出现在Java代码区中,不允许直接出现在页面中。//单行注释 /*多行注释*/