JSP元素

来源:互联网 发布:电工画图软件 编辑:程序博客网 时间:2024/05/06 11:01
 

JSP页面就是带有JSP元素的常规Web页面,它由静态内容和动态内容构成。

JSP元素:

(1)指令元素

(2)脚本元素

(3)动作元素

指令元素主要用于为转换阶段提供JSP页面的相关信息,指令不会产生任何输出到当前的输出流中,它指定了有关页面本身的信息,这些信息在请求期间一直保持不变。

所有的JSP指令元素的作用范围为当前的JSP页面,即指令元素只影响当前的这个JSP页面,对其他JSP页面没有影响。

使用JSP脚本元素可以将Java代码嵌入到JSP页面中,这些Java代码将出现在由当前JSP页面生成的Servlet中,使JSP将静态内容与动态内容分离出来。

表达式

表达式标签在JSP请求处理阶段进行运算,所得的结果转换成字符串,与静态标签数据组合在一起。表达式在页面的位置,就是该表达式计算结果显示的位置。

语法:<%= expression %>

 

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对象的指定的属性值"/>

 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