zoukankan      html  css  js  c++  java
  • JSP的学习(8)——JSP标签

      JSP标签也称为JSP Action(JSP动作)元素,用于在JSP页面中封装Java代码,这样使得在JSP页面中避免直接编写Java代码,让JSP真正成为MVC模式中的作为视图作用。

    几个JSP常用标签:

      <jsp:include>标签

      <jsp:forward>标签

      <jsp:param>标签

      <jsp:useBean>标签

      <jsp:setProperty>标签

      <jsp:getProperty>标签

    下面对这几个标签进行详细说明:

    一、<jsp:include>标签

      <jsp:include>标签就是包含功能,这是一种动态包含。

    语法:  

    <jsp:include  page=”/相对web应用的地址” |“<%=JSP表达式>” flush=“true|false”/>

      page 属性用于指定资源地址,也可以通过JSP表达式来写入

      flush属性指定在插入其他资源的输出内容时,是否先将当前JSP页面的已输出内容刷新到客户端。

      <jsp:include>标签和<@ include>指令的比较:

      <jsp:include>标签是动态包含,会将涉及到所有的包含的JSP翻译成各自的Servlet,而这些Servlet会在执行时合并。

      <@ include>指令是静态包含,所有的JSP页面只会被翻译成一个Servlet。

      不管是<jsp:include>标签还是<@ include>指令,都会把被包含的JSP页面中所有的内容进行合并输出,因此这两个页面都不要出现重复的HTML全局架构标签,否则合并之后将会是一个格式混乱的HTML文档。

    二、<jsp:forward>标签

      <jsp:forward>标签就是我们所熟悉的转发,只不过用在了JSP页面中。

    语法:

    <jsp:forward  page=”/相对web应用的地址” |“<%=JSP表达式>” />

      page 属性用于指定资源地址,也可以通过JSP表达式来写入。

    三、<jsp:param>标签

      当使用<jsp:include>标签或<jsp:forward>标签包含或者转发请求给其他资源时,可以使用<jsp:param>标签向这个资源传递数据。

    语法:

    1   <jsp:include  page=”/相对web应用的地址” |“<%=JSP表达式>“>
    2 
    3             <jsp:param  name= “参数名”      value=”参数值” |”<%=jsp表达式  %>”/>
    4 
    5   </jsp:include>

    1     <jsp:forward  page=”/相对web应用的地址” |“<%=JSP表达式>“>
    2 
    3           <jsp:param  name= “参数名”      value=”参数值” |”<%=jsp表达式  %>”/>
    4 
    5   </jsp: forward  >

    例:

    <body>
            
            <jsp:forward page="/index.jsp">
                <jsp:param value="who" name="Ding"/>
                <jsp:param value="lover" name="LRR"/>
            </jsp:forward>
            
    </body>

    四、<jsp:useBean>标签

      在JSP中还针对JavaBean封装了几种用于处理JavaBean对象的标签,例如<jsp:useBean>标签、<jsp:setProperty>标签、<jsp:getProperty>标签等等。

      <jsp:useBean>标签用于在指定的域范围内查找指定名称的JavaBean对象。如果存在则直接返回这个JavaBean对象的引用,如果不存在则实例化一个新的JavaBean对象并将它以指定的名称存储到指定的域范围中。

    语法:

    <jsp:useBean  id=”bean名称”   class=”包名.类名”    scope=”page | request | session | application”  />

      id属性用于指定查找JavaBean实例对象的名称(或其存储在域范围中的名称)。

      class属性指定JavaBean的完整类名,即必须包含包名。

      scope属性指定JavaBean对象所存储的域范围,其值只能是page、request、session、application中的一个,默认为page。

    例:

    1  <body>       
    2       <jsp:useBean id="p" class="com.fjdingsd.domain.Person" scope="page" />
    3  </body>

      上面这个示例,将先查询在page域中是否有Person类的一个实例对象,这个对象名称为p,如果查询到,那么这个bean对象就以p为名称,如果后面代码需要这个对象,就以p为引用;如果没有查询到,那么就将创建一个Person对象,对象名称为p,同时将这个新创建的对象存储到scope范围中。我们可以从转换后的Servlet中看到该过程:

    1      com.fjdingsd.domain.Person p = null;
    2       p = (com.fjdingsd.domain.Person) _jspx_page_context.getAttribute("p", javax.servlet.jsp.PageContext.PAGE_SCOPE);
    3       if (p == null){
    4         p = new com.fjdingsd.domain.Person();
    5         _jspx_page_context.setAttribute("p", p, javax.servlet.jsp.PageContext.PAGE_SCOPE);
    6       }

    补充:

      带标签体的<jsp:useBean>标签,其中标签体的内容只在新创建JavaBean的对象时才执行。也就是说如下代码:

    1 <jsp:useBean id="p" class="com.fjdingsd.domain.Person" scope="session" />
    2     aaaaaaaaaaaa
    3 </jsp:useBean>

      这样的代码,只在第一次访问时能执行(“aaaaaaaaaaa”),再次访问就不会执行了,因为再次访问已经不会再新建对象了。

     

    五、<jsp:setProperty>标签

      <jsp:setProperty>标签用于设置JavaBean对象的属性。

    语法:

    <jsp:setProperty     name = “bean的名称”
    
            property=”属性名” value=”属性值”|“<%= JSP表达式 %>”     |
    
            property=“属性名“          [param = “参数名”] |
    
            property=”*”
    
      />

      name属性:指定JavaBean对象的名称,对应于<jsp:useBean>标签中的”id”属性。

      property属性:指定JavaBean对象中的属性名。

      value属性:指定JavaBean对象中的”property”指定的属性的值,可以是字符串,也可以是JSP表达式。注意,如果value是字符串,则该值会自动转换为JavaBean属性对应的类型,如果value是JSP表达式,则该表达式的计算结果必须与要设置的JavaBean属性类型要一致。

      param属性:将JavaBean对象的某个属性值设置为一个请求(request)参数值,该属性值同样会自动转换成要设置的JavaBean属性的类型。也就是说我们在浏览器地址栏中在URL后设置了参数和参数值,那么在访问该JSP后会将参数值赋予”param”对应的属性中,请注意,浏览器地址栏URL后带的参数值均为字符串类型,对于属性只要是八大基本数据类型,都是可以将字符串转换为对应的类型的,请看下面例2。

    例1:

    1 <jsp:useBean id="p" class="com.fjdingsd.domain.Person" scope="page" />
    2        
    3 <jsp:setProperty property="name" name="p" value="Ding"/>
    4        
    5 <%=p.getName() %>

    浏览器中观察:

      

    例2:

    1 <jsp:useBean id="p" class="com.fjdingsd.domain.Person" scope="page" />
    2        
    3 <jsp:setProperty property="age" name="p" param="age"/>
    4        
    5 <%=p.getAge() %>

    浏览器中观察:

      

      注意,在Person类中,”age”属性类型为”int”整形,但是对于八大基本数据类型,<jsp:setProperty>标签可以将字符串转换。

    例3:

      如果将<jsp:setProperty>标签中的property设置为”*”,那么将使用URL后的所有参数为JavaBean对象的属性赋值。

    1   <jsp:useBean id="p" class="com.fjdingsd.domain.Person" scope="page" />
    2        
    3   <jsp:setProperty property="*" name="p"/>
    4        
    5   <%=p.getName() %>  <br>
    6   <%=p.getAge() %>

    在浏览器中观察:

      

    六、<jsp:getProperty>标签

      <jsp:getProperty>标签用于获取JavaBean对象的属性值,无论该值在JavaBean中是否为字符串类型,都将转换成字符串在JSP页面上显示。如果该JavaBean的某个属性的值为null,那么该标签将在JSP页面上显示”null”这个字符串。

    语法:

    <jsp:getProperty   name=”bean的名称”    property=”属性名”>

      name属性:指定JavaBean对象的名称,对应于<jsp:useBean>标签中的”id”属性。

      property属性:指定JavaBean对象中的属性名。

    例1:

    1     <jsp:useBean id="p" class="com.fjdingsd.domain.Person" scope="page" />
    2        
    3     <jsp:setProperty property="name" name="p" value="Ding"/>
    4        
    5     <jsp:getProperty property="name" name="p"/>

    浏览器中观察:

      

    例2:

      如果属性名不存在,或者属性值为null,那么则显示为”null”字符串

    1   <jsp:useBean id="p" class="com.fjdingsd.domain.Person" scope="page" />
    2        
    3   <jsp:getProperty property="name" name="p"/>

    浏览器中观察:

      

      当然实际开发过程中我们会使用EL表达式来作为数据输出,使用EL表达式的好处是如果能从域中获取到数据,则输出该数据的字符串类型,如果没能找到数据,那么则输出空字符串””。

    七、映射JSP

      JSP就是一个Servlet,因此我们在web.xml文件中也可以使用<servlet>标签和<servlet-mapping>标签来映射JSP,使JSP能有一个虚拟目录(对外访问路径)。

    例:

    1     <servlet>
    2       <servlet-name>myjsp</servlet-name>
    3       <jsp-file>/MyJsp.jsp</jsp-file>
    4     </servlet>
    5   
    6     <servlet-mapping>
    7       <servlet-name>myjsp</servlet-name>
    8       <url-pattern>/myhtml.html</url-pattern>
    9     </servlet-mapping>

    通过上述在web.xml文件中的配置,我们就能将MyJsp.jsp资源的对外访问路径设置为myhtml.html:

      

  • 相关阅读:
    CMU15-445 Project #2
    CMU15-445 Project #1 Buffer Pool
    挂分原因
    「杂谈」关于斜率优化维护凸包
    「题解」GYM 101620J Justified Jungle
    「题解」AGC 052 B Tree Edges XOR
    C++ MT19937 随机数 限制范围
    「题解」Codeforces 348C Subset Sums
    「学习笔记」联赛数论再学习
    「题解」洛谷 P4597 序列sequence
  • 原文地址:https://www.cnblogs.com/fjdingsd/p/5117327.html
Copyright © 2011-2022 走看看