JSP动作元素详解

来源:互联网 发布:容克贵族知乎 编辑:程序博客网 时间:2024/04/28 04:11
 

JSP动作元素详解

一  动作元素的概念

1.概念:动作是特殊的标记,通过一个动作标记可以实现多行Java代码实现的效果。可以动态插入文件、重用JavaBean组件、导向另一个页面等,是自定义标签。

2.发生的时间:

动作元素是客户端请求时动态执行,执行多次

指令元素是在编译时编译执行,只编译一次

3.分为以下三种:

<jsp:useBean>

<jsp:include>

<jsp:forward>

       javaBean与一般的java类没什么特别大的区别但是要,满足两个条件

           (1)首先类是共有的,有一个默认无参的构造

           (2)在类中可以定义若干个私有的属性和无参构造 getter和setter方法

二  案例使用:

   1.<jsp:useBean></jsp:useBan>标签

       useBean动作用于创建引用,并将现有的Bean组件嵌入JSP 。

        语法:

<jsp:useBean id="BeanName" class="BeanClass"   scope="page|request|session|application"/>

       说明: id是Bean对象的名称,class对应的限定名,scope 有效范围

             jsp:useBean标签代替java代码

       实例:

            <jsp:useBean id="book"

class="com.csdn.beans.Book" scope="session"/>

 

       jsp代码对应一段java代码

           jsp代码:

           jsp:useBean id="book" class="com.csdn.beans.Book"

scope="session"|page|request|application/>

作用:去获取session.getAttribute()对象,如果book是=null,要创建该对象,并且将对象设置到属性作用域之内,如果不为空,直接返回

对应的java代码 

Book books = scope.getAttribute(“book”);

               If(books==null){

                   Book book = new Book();

                  scope.setAttribute();

}  

return book;

    补充:

(1)<jsp:useBean>设置值<jsp:useBean>和在外面设置值的区别

        当程序执行到

<jsp:useBean>

           <jsp:setProperty property="isbn" name="book" param="isbn"/>

</jsp:useBean>

时,如果在执行这句话之前没有执行设置属性的操作,那么这句话就可以有效,如果在执行这句话之前设置过属性的操作,就不会有效。

    当执行到

 <jsp:useBean>

</jsp:useBean>

<jsp:setProperty property="isbn" name="book" param="isbn"/>

       时,如果在执行这句话之前设置过属性的操作,也会有效。

(2) 作用域:

scope="request"  请求域范围之内

把设置的属性放到request对象中,当使用请求的转发的时候,跳转到另一个界面    如果不是跳转到另一个界面,而是又打开一个窗口,会新建,又一次请求

scope="application" 

     就相当于是创建了session对象,在整个程序中都有效

scope="page" 

只对当前页有效  首先执行的是page标签

(3)javaBean的好处:

JavaBean技术更有利于Web开发的代码复用。因为写在JSP页面中的Java代码片段重用性要差一些,而JavaBean是一个Java类,更方便在其他Web应用中复用。

JavaBean技术还有利于开发项目的角色分工,让页面设计人员和程序编写人员更容易地修改JSP页面中自己所管辖的内容,而不必互相干扰。

 

.2.<jsp:setProperty></jsp:setProperty>标签

     setProperty动作用于设置useBean中指定的Bean的属性的值。setProperty动作指定JavaBean的名称、属性名、属性值和参数,用于赋给Bean的属性。

语法:

<jsp:setProperty name="BeanAlias" property="PropertyName"  value="Value" param="Parameter“/>

<jsp:setProperty property="bean对象的属性名称" name="bean对象的名字"/>

说明:name是设置bean的对象,property是bean对应的属性名,value是赋值

  Param是动态的设置数据(是用户输入的设置值)

实例:

    <jsp:setProperty property="name" name="book" value="java书"/>

     注:

       如果设置的param值和bean的属性值是一样的,那么可以写成:

           <jsp:setProperty property="isbn" name="book"/>

因为属性不可能是一个,而是多个,所有这样每个属性都要写这么多,会是很麻烦的事情,所有可以写成:

       <jsp:setProperty property="*" name="book"/>

 

    jsp代码对应一段java代码

      jsp代码:

    <jsp:setProperty property="isbn" name="book" param="isbn"/>

String value=request.getParamet(xxx);

      Java代码

Bean对象.setXXX(“xxx”);

3. <jsp:getProperty></jsp:getProperty>标签

getProperty动作用于获取Bean中指定的属性中的值。系统先将收到的值转换为字符串,然后再将其作为输出结果发送。

       语法:

           <jsp:getProperty name="BeanAlias" property="PropertyName"/>

       说明:

bean对象的属性名称" name="bean对象的名字" value="bean对象的指定的属性值"

<jsp:getProperty property="bean对象的属性名称" name="bean对象的名字" value="bean对象的指定的属性值"/>

        实例:

           <jsp:getProperty property="isbn" name="book" />

       jsp代码对应一段java代码

           jsp代码:

              <jsp:getProperty property="isbn" name="book" />

           Java代码:

              out.println(Bean对象.getXXX(“xxx”));

作用:具有输出的功能

 

       param="isbn"

4.<jsp:include></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"/>

<jsp:include>

注:使用include动作的JSP页面,通过request.getParameter(“name”)获得被包含文件传递的参数值。 

    利用jsp;include包含动态 的网页,并可以在这个标签中设置值,并在另一个标签中用request获取

    实例:

       <jsp:include page="inputBook.jsp">

           <jsp:param value="Tom" name="var1" />

       </jsp:include>      

动作include元素和指令的include元素的区别:

(1)动作包含: <jsp:include page="被指定包含的文件url地址">

<jsp:include page="inputBook.jsp">

指令包含:<%@ include file="被指定包含的文件url地址"%>

<%@ include file="date.txt"%>

    (2)动作的include可包含动态的页面和静态的页面

    指令的include不可包含动态的页面,只包含静态的页面

    (3)在某些情况下可以用指令的include包含动态的页面:

    注销掉下面的代码即可:

       basePath是基准的路径,所有的路径设置是在这个基础上指定的

       String path = request.getContextPath();

    String basePath = request.getScheme() + "://"

           + request.getServerName() + ":" + request.getServerPort()

           + path + "/";

<base href="<%=basePath%>"/>

可写为:<%@ include file="inputBook.jsp"%>

(4)用指令元素包含时

当一个jsp在运行时,将jsp转换为servlet,如果遇到包含的动作,把包含的动作直接包含到servlet中,所以在转换阶段有一个servlet  为index.jsp

用动作指令包含时

    会执行多次,是在每一次客户端在提交请求的时候执行

    没有把目标文件包含过来,只是打了一个标记,是方法的调用语句  ,在通过,另一个ervlet也在执行,把执行的结果放到要包含的函数中,接着往下执行

在转换时有两个servlet  index.jsp   和inputBook.jsp

 

补充:

注释:

Html注释  <!- -   -->

       会发送回客户端,但浏览器不会解析,可以通过查看源文件查看

    Jsp注释  <%-- --%>

       不会发送给客户端—隐藏的注释