JSTL详解

JSTL详解(一)
 
       先来搭下环境,jstl的包当然是不能少的拉。其次,下载必须的标签库或者是java的标签库文件。没有的话,也可以联系我 [email protected] 
     将jstl 1.1.jar加到class中,(这就不要我详细的讲了吧),然后将标签库放到WEB-INF下或则将java的标签库文件(*.jar)放到WEB-INF/lib下,就可以写测试代码了。
     first_jstl.jsp
     <%@ taglib prefix="c" uri=" http://java.sun.com/jsp/jstl/core" %>
    <%@ page contentType="text/html; charset=gb2312" language="java" %>
   
   
    欢迎您,

  
   ${i}
  

  
  
    对不起,你的年龄过小,不能访问这个网页◎!
  

  

  
  

    web.xml
(使用java的标签库文件*.jar)
  
   
    xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation=" http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd"
    version="2.4">
  jstl test
 
     jstl test
 



(使用标签库文件*.tld)

 
    xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation=" http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">
 
 
    http://java.sun.com/jstl/fmt
    /WEB-INF/fmt.tld

    http://java.sun.com/jstl/fmt-rt
    /WEB-INF/fmt-rt.tld

    http://java.sun.com/jstl/core
    /WEB-INF/c.tld

    http://java.sun.com/jstl/core-rt
    /WEB-INF/c-rt.tld

    http://java.sun.com/jstl/sql
    /WEB-INF/sql.tld

    http://java.sun.com/jstl/sql-rt
    /WEB-INF/sql-rt.tld

    http://java.sun.com/jstl/x
    /WEB-INF/x.tld

    http://java.sun.com/jstl/x-rt
    /WEB-INF/x-rt.tld

好了,一个最简单的包含有jstl的页面设计完成了。下面测试。
http://localhost:8080/jstl/frist_jstl.jsp
页面输出结果:

欢迎您,hellking

1
2
3
4
5
对不起,你的年龄过小,不能访问这个网页◎!
 
 JSTL详解(二)
 
一般用途的标签

     在JSTL中,一般用途的标签只要是指具有输出,设置变量,和错误处理等功能的标签,他们在jsp中使用很频繁,它们有:
l        
l        
l        
l        
下面,我来讲述一下他们的作用:

它是一个输出的标签,负责把计算出的结果输出到jspwriter,就跟调用out.println()基本一样。没有BODY的时候,使用下面的语法:
有BODY的时候,使用下面的语法:
       这里是BODY,可以是任何合法的jsp或者是html代码。
注意,escapeXml的作用是是否将代码交给xml解析器解释,true为交给xml解析器解释,false为交给浏览器解释,见红色部分代码
举例:c_out.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
 JSTL: c:out的使用

以下输出的是前面设置的属性
" escapeXml="false"/>

这个标签用于在某个范围(page,request,session,application)里面设置特定的值(默认为page),或者设置某个已经存在的javabean的属性。类似于<%request.setAttribute(“name”,value)%>
语法:
1、使用value属性设置一个特定范围里面的属性:
2、使用value属性设置一个特定范围里面的属性,带有BODY:
       Body content
3、设置某个特定对象的一个属性:
4、设置某个特定对象的一个属性, 带有BODY:
       Body content

举例:c_set.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>

 JSTL:的使用c:set

设置一个属性,然后输出它

设置属性时,把它的值放在标签的body中。
ksdjfxsdf234234

设置javaBean的属性,然后输出这些属性值:
userName=


设置属性,并且指定它们的范围,属性的默认范围是page。

它的作用是删除某个变量或者属性。类似于<%session.removeAttribute(“name”)%>,它的语法是:
举例:c_remove.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
 JSTL:c:remove的使用
maxUser=
count=

调用c:remove...

调用了c:remove后,参数值为:
maxUser=
count=

它的作用是捕捉由嵌套在它里面的标签所抛出来的异常。类似于<%try{}catch{}%>,它的语法是:nested actions
举例:c_catch.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
 JSTL:catch的使用
<%
 Integer.parseInt("sdkfj");
 %>
 
 
异常:
 
 
异常 exception.getMessage=
 

异常exception.getCause=
 
 
JSTL详解(三)
条件标签包括以下几种:
l         ;
l         ;
l         ;
l         ;
下面,我来分别介绍:

l         ; 它用来做条件判断,功能类似jsp中的<%if(boolean){}%>

语法:
1 、无body的情况
       “{page|request|session|application}”]/>
2、有body的情况
       “{page|request|session|application}”]>
              Body内容
举例: c_if.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
 JSTL:c:if的使用
count>78

l         它是用于条件选择,和,一起使用,它的条件选择是排斥性的,相当于jsp中的<%switch(i){case 0: … case 1:… default :}%>,也可以完成<%if{}…else if{}….else if{} else{} %>的功能

语法:
                     Body内容(,)
        
注意:它的body内容只能是由以下的元素组成:
1.         空格;
2.         0个或多个子标签,必须在子标签之前出现;
3.         0个或多个子标签

l         它是的一个分支
语法:
      
              Body内容
注意:它有两个限制:
1.         必须以作为它的父标签
2.         必须在标签之前出现

l         他代表了的最后选择相当于jsp<%switch(i){case 0: … case 1:… default :}%> 中的default语句。
语法:
      
              Conditional block
它的使用有两个限制:
1.         必须以作为它的父标签;
2.         必须以的最后分支方式出现;

,,举例:c_choose.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>

 JSTL:c:choose的使用
   
     
   
   
     
   
   
     
          
 
count的值是:
 
 
 
 
 
 
 
 
 
JSTL详解(四)
迭代标签的使用

 

 
如果使用scriptlets,那么,我们经常使用Iterator或者Enumeration来进行迭代,如:
       Iterator it = collection.iterator();
       while(it.hasNext()){
              SomeBean someBean = (SomeBean)it.next();
              out.println(someBean.getXXX());
              …………..
}
在前面的一次中,我们开发过一个迭代标签,JSTL中也提供了对迭代进行支持的标签,并且,他的功能比上一章的强大的多。JSTL中的迭代标签有两个:
l         ;
l         ;
1、专门处理TokenString的迭代,可以指定一个或者是多个分隔符。由于他们使用的很少,在这里就不介绍了。
2、是最常用的,他几乎能够完成所有的迭代任务,就象jsp中的for(int i=j;i
语法:a、在Collection中迭代:
      
       [begin=”begin”] [end=”end”] [step=”step”]>
       Body 内容
      
      b、迭代固定的次数:
      
       begin=”begin” end=”end” [step=”step”]>
       Body 内容
      
举例:c_forEach1.jsp(在Collection中迭代)

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

 

<%@ page contentType="text/html; charset=gb2312" language="java" %>

 

<%@ page import="java.util.*,com.j2ee14.ch12.User"%>

 

<%

 

   Collection users_c=new ArrayList();

 

   for(int i=0;i<3;i++)

 

   {

 

      User user=new User();

 

      user.setUserName("foo"+i);

 

      user.setPassword("foo"+i);      

 

      users_c.add(user);

 

   }

 

   session.setAttribute("users",users_c);

 

%>

 

 

 

  JSTL:c:forEach的使用之一

 

 

 

迭代某个collection中的元素。

 

 

 

 

 

 

 

 

 

 

 

 

 

  

用户名密码
  

 

 

 

 
举例:c_forEach2.jsp(迭代固定的次数)

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

 

<%@ page contentType="text/html; charset=gb2312" language="java" %>

 

 

 

  JSTL:c:forEach的使用之二

 

 

 

第二种迭代:50-60

 

 

 

 

  **

 

 

第二种迭代:10 to 100,step=10

 

 

  **

 

 

 

 
 
 
JSTL详解(五)
 
首先,感谢大家的关注,下面我来继续讲解:URL相关的标签,他们的作用主要是负责页面的导航、重定向、资源的获得以及参数的传递等等,他们有:
l        
l        
l        
l        

作用:导入一个url的资源,相当于jsp 中的标签,同样也可以把参数传递到被导入的页面。
语法:a、资源的内容使用string对象向外暴露
             
[var=”varName”] [scope=”{page|request|session|application}”]
[charEncoding=”charEncoding”]>
Optional body content for subtags
      b、资源的内容使用redirect对象向外暴露
             
varReader=”varReaderName”
[charEncoding=”charEncoding”]>
Body content where varReader is consumed by another action
举例:c_import.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
 JSTL:c:import的使用

绝对路径 URL

 
 

相对路径并且传递参数到指定的URL

 
 
  

作用:把客户的请求发送到另一个资源,相当于jsp中的<% request.sendRedirect(“other.jsp”)%>或者servlet中的RequestDispatch.forward(“other.jsp”)的功能。
语法:a、没有body的情况
             
      b、有body,在body 中查询指定的参数
             
                     subtags
             
举例:c:redirect.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
 JSTL:c:redirect的使用

作用:用于构造URL,主要的用途是URL的重写。
语法:a、没有body的情况
             
[var=”varName”] [scope=”{page|request|session|application}”]/>
      b、有body ,并在body 中有重写的参数
             
[var=”varName”] [scope=”{page|request|session|application}”]>
subtags
举例:c_url.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
 JSTL c:url 的使用
      

另一种没有参数的URL

作用:它是在中添加请求的参数。和一般的参数没什么区别。
语法:a、参数的值使用value属性指定
             
      b、参数的值在body 中指定
             
                     参数值
             
举例:c_param.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
 JSTL c:param的使用

   hellking
 
JSTL详解(六)
                                 SQL相关的标签

今天,我来讲解下一些很重要的jstl标签,如果运用得当,可以大大的简化数据库的操作,减少代码量。首先sql标签可以实现包括查询、更新、事务处理和设置数据源等强大的功能。下面分别讲述。
 
 

语法:用来设置数据源,可以通过scope设置使用范围,如page、application、session等。有两种方式可以设置数据源,一种是直接使用在web中配置的数据源,只要指定jndi名就可以了(这个就不要我多讲了吧,呵呵),第二种是指定所有的连接属性。
    
     {dataSource=”dataSourceName” |   url=”jdbcurl”
     [driver=”driverClassName”]
     [user=”userName”]
     [password=”password”]
     [var=”varName”]
     [scope=”{page|session|request|application}”]/>
举例:sql_datasource.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
 JSTL:<sql:setDataSource>的使用
创建普通的数据源:
 var="ds1"
 driver="com.mysql.jdbc.Driver"
 url="jdbc:mysql://localhost:3306/jstlTest"
 user="jstl"
 password="jstl"
/>
从jndi名称空间中获得一个数据源。
 var="ds2"
 dataSource="jdbc/ds2"
/>

作用:不用说都知道了,数据库操作中最频繁的查询。
语法:a、没有body
        
         Var=”varName” [scope=”{page|session|request|application}”]
         [dataSource=”dataSourceName”]
         [maxRows=”maxRows”]
         [startRow=”startRow”] />
      b、有一个body ,并在body 中指定了查询需要的参数
        
         Var=”varName” [scope=”{page|session|request|application}”]
         [dataSource=”dataSourceName”]
         [maxRows=”maxRows”]
         [startRow=”startRow”] >
         actions
        
      c、有body,并且可以指定可选的参数(< sql:param >在后面讲述)
        
         Var=”varName” [scope=”{page|session|request|application}”]
         [dataSource=”dataSourceName”]
         [maxRows=”maxRows”]
         [startRow=”startRow”] >
         query
         optional actions
        

举例:sql_query.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ page contentType="text/html; charset=gb2312" language="java" %>
 JSTL:<sql:query>的使用
 var="ds2"
 dataSource="jdbc/ch12"
/>
第一种查询:
    SELECT * FROM sql_test
 
 
   
   
 
 
Name: mobile:

第2种查询:
  
 
 
   
   
 
 
Name: mobile:

 
JSTL详解 (七)
 
SQL相关的标签(二)
作用:主要是执行插入、更新和删除操作的标签。另外,还有一些没有返回结果集的sql操作也可以使用这个标签。比如
create table tableName(id int….);
drop table tableName
grant tableName   等等。。
语法:a、没有body的情况
        
[dataSource=”dataSource”]
[var=”varName”]
[scope=”{page|session|request|application}”]/>
      b、有body ,并且在body中指定参数
        
[dataSource=”dataSource”]
[var=”varName”]
[scope=”{page|session|request|application}”] >
 actions
      c、有body,在body中指定sql语句和可选的参数
        
[dataSource=”dataSource”]
[var=”varName”]
[scope=”{page|session|request|application}”] >
Update statement
 actions

举例:sql_update.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>

<%@ page contentType="text/html; charset=gb2312" language="java" %>

 JSTL:的使用<span><font>

 var="ds2"

 dataSource="jdbc/ch12"

/>

更新记录值1


    update sql_test set power='low' where id=01

第2种更新:创建表


  

第3种更新:增加记录

第4种更新:删除记录


  

第5种更新:删除表


作用:用语事务处理,它为建立事务处理上下文,并且提供相同的数据源。
语法:
      [isolation=”isolationLevel”]>
      and statement
     
      isolationLevel ::=”read_committed”
      |”read_uncommitted”
      |”repeatable_read”
      |”serializable”
注意:DataSource属性和其他标签的DataSource属性一样,isolactionlevel属性指定事务隔离的级别,如果没有指定它的值,那么就使用自己配置的DataSource事务隔离级别。而且,嵌套在里面的标签不能再指定其他的数据源。
是数据库封装的轻量级事务处理,如果你需要复杂的事务处理或者分布试处理,它就不适合。
举例:sql_transaction.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>

<%@ page contentType="text/html; charset=gb2312" language="java" %>

 JSTL:sql:transaction的使用<span><font>

 var="ds2"

 dataSource="jdbc/ch12"

/>

使用事务处理方式创建一个表:

 

    create table test_temp902 (

      id int primary key,

      name varchar(80)

    )

 

 

 

作用:设置sql语句中“?”表示的占位符号的值。
语法:a、没有body,使用value指定。
        
      b、在body中指定
        
         参数值
        
举例:sql_param.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>

<%@ page contentType="text/html; charset=gb2312" language="java" %>

 JSTL:sql:param的使用<span><font>

 var="example"

 dataSource="jdbc/ch12"

/>

执行更新操作:


  

  

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

你可能感兴趣的:(sql,application,redirect,c,session,query)