JSP元素

JSP元素

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:setPropertyname="BeanAlias" property="PropertyName" value="Value" param="Parameter“/>

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

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

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

实例:

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

     注:

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

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

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

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

 

    jsp代码对应一段java代码

      jsp代码:

    <jsp:setPropertyproperty="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:getPropertyproperty="bean对象的属性名称" name="bean对象的名字"value="bean对象的指定的属性值"/>

 4.<jsp:include></jsp:include>标签

    include动作用于将其他HTML页面或JSP页面中的内容合并到当前页面,或将其中的文件插入到当前页面。是动作元素,是发生在转换之后 

    语法:

       不带参数的include动作:

<jsp:includepage="weburl" flush="true"/>

带参数的include动作:

<jsp:includepage="weburl" flush="true">

<jsp:paramname="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

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值