Web---JSTL(Java标准标签库)-Core核心标签库、I18N国际化、函数库(1)

简介: Web---JSTL(Java标准标签库)-Core核心标签库、I18N国际化、函数库

前面为JSTL中的常用EL函数,后面的为具体演示实例!

JSTL简介:

JSTL(Java Standard Tag Library) –Java标准标签库。

SUN公司制定的一套标准标签库的规范。

JSTL标签库,是由一些Java类组成的。

JSTL组成:

JSTL –Core 核心标签库。 重点

JSTL – I18N - 国际化标签库。Internationalization- I18N

JSTL – SQL – 数据库操作标签(有悖于MVC设计模式),现在都不用这个。

JSTL - Functions – 函数库。

JSTL - XML ,对XML的操作(同SQL标签-有悖于MVC设计模式),现在都不用这个。

JSTL核心标签库:

使用JSTL核心标签:

如果你的Web项目是基于JavaEE2.5或以上的。可以在你项目的任意页面上通过<%@ taglib 指令使用JSTL的核心标签库。

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

uri是引用标签库的资源定位符,并不代表一个实际的地址。

Prefix是自定义的前缀。

如果你的项目是JavaEE2.5以下的项目,必须在在你项目中的lib目录下,存在以下两个jar文件为:

Jstl.jar、standard.jar

在上面的包中,存在着jstl的tld文件,用于描述jstl标签的属性、名称、资源等信息。

程序就是通过这个tld文件找到相关java类以供运行的。

然后再在任意的JSP页面通过指令导入jstl.

JSTL-Core一共包含以下几个子标签:

<c:out> ${name}    输出标签
<c:set>         pageContext.setAttirbute(key,value,scope);  声明标签
C:remove        删除某个范畴内的数据
<c:if>          判断c:else,c:elsfif
<c:choose><c:when><c:otherwise> 判断分枝c:if,c:else if c:
<c:forEach>     遍历
<c:forTokens>   分隔
<c:import>      导入其他资源,相当于动态包含共享同一个request
<c:url>  -      重写url
<c:redirect>    重定向  response.sendRedirect(‘’..)

JSTL标签-out:

属性名         可选值                          说明
value   EL表达式、java表达式、或直接字符串    需要输出的内容
escapeXml    true | false     是否将html转成&lt;&gt;&quat;等输出。
default        默认值          如果value内容不存在时则输出默认值
<c:out  value=…/>用于在页面上输出结果。
<c:out value=“${requestScope.name}”/> -将request中的name值输出
<c:out value=“${param.username}”/> - 用于将参数输出到页面上。
<c:out value=“${name}” default=“hello”/>从page到application开始查找,如果没有找到,就显示默认值hello.
另一种设置默认值的方式:
<c:out value=“${name}”>
Default-value-默认值。
</c:out>
只有当要求的信息为null或不存在时才会输出默认值。
excapeXml属性:默认值为true,用于将html等标签转换成&lt;等转换元素,示例:
 <%
     String name="<font color='red'>Red</font>";
      pageContext.setAttribute("name",name);
  %>
<c:out value=“${name}” escapeXml=“false”></c:out> 不对xml或html进行转换,直接输出,这样就会在页面上看到红色的Red字符,因为浏览器会解析html数据。

JSTL-Core的演示:(通常命名为c命名空间)

—–jstl.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core"  prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  <body>
      <h1>JSTL技术演示</h1>
      <!-- c:out -->
      <%
        pageContext.setAttribute("name", "Tom");
        pageContext.setAttribute("name2", "<font color='red'>Tom</font>");
      %>
      <c:out value="${name}"></c:out><br/>
      ${name}<br/>
      <c:out value="${name2}" escapeXml="true" /><br/>
      ${name2}<br/>
      <!-- c:if -->
      <c:if test="${20>10}" var="boo" scope="session">
        OKOK<br/>
      </c:if>
      <!-- 想要用if-else 就这样再用一句 -->
      <c:if test="${!boo}">
        NONO<br/>
      </c:if>
      <br/><!-- 用El中的问号表达式能输出简单的if-else -->
      ${ 20>10?"yes":"no" }<br/>
      <hr/>
      <!-- forEach -->
      <%
        List list = new ArrayList();
        list.add("aaaaa111");
        list.add("bbbbb222");
        list.add(200);
        list.add(100);
        request.setAttribute("list", list);
      %>
      <table border="1px">
        <c:forEach items="${list}" var="li">
            <tr> <td>:: ${li}</td>  </tr>
        </c:forEach>
      </table>
      <%
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("name", "Pose");
        map.put("age", 55);
        map.put("tel", "12345678911");
        pageContext.setAttribute("map", map);     
      %>
      <br/>
      <c:forEach items="${map}" var="m">
        ${m.key} = ${m.value}<br/>
      </c:forEach>
      <%
        String strs[] = {"aaa","bbb","ccc","ddd"};
        pageContext.setAttribute("strs", strs);
      %>
      <br/>
      <c:forEach items="${strs}" var="str">
        ${str},      
      </c:forEach>
      <br/>
      <h3>看看forEach标签中的varStatus属性---idx.index是输出元素的下标(从begin开始的),idx.count是元素的计数(从1开始)</h3>
      <c:forEach items="${strs}" var="str" varStatus="idx">
        ${str}---index = ${idx.index} --- count=${idx.count}<br/>       
      </c:forEach>
      <!-- forEach的普通循环功能 -->
      <c:forEach begin="20" end="40" var="i" step="2" varStatus="idx">
        ${i} -- ${idx.index} -- ${idx.count}<br/>
      </c:forEach>
      <br/>
      <!-- c:set设置属性,默认作用域:pageScope -->
      <c:set var="aa" value="abc123" />
      <c:set var="aa" value="cccc222" scope="request"/>
      ${aa},${requestScope.aa}<br/>
      <br/>
      <!-- c:remove 删除属性,默认作用域:pageScope,request等4个容器! -->
      <!-- 也就是,如果不设置作用域(scope属性),则那4个容器中的属性都会被清除,如果写了,则只清除指定作用域的属性 -->
      <c:remove var="aa" scope="request"/>
      ${aa},${requestScope.aa}<br/>
      <!-- c:choose,c:when,c:otherwise  -->
      <!-- 类似Java中的switch-case-default而且每项自动带break -->
      <c:set var="score" value="98"></c:set>
      <c:choose>
        <c:when test="${score>=90}">
            优秀
        </c:when>
        <c:when test="${score>=80}">
            良好
        </c:when>
        <c:when test="${score>=70}">
            中等
        </c:when>
        <c:otherwise>
            不合格         
        </c:otherwise>
      </c:choose>
      <br/>
      <!-- c:forTokens 用分隔符去拆分字符串 -->
      <c:forTokens items="aa,ds,sdf,df,dddd,sss" delims="," var="str">
        ${str}&nbsp;
      </c:forTokens>
      <br/>
      <!-- c:import 导入资源,相当于动态包含,共享同一个request,但是在不同的类 -->
      <c:import url="/jsps/b.jsp"></c:import>
      <br/>
      <!-- c:redirect 重定向,相当于response.sendRedirect(...) -->
      <%-- 
      <c:redirect url="/jsps/a.jsp"></c:redirect>
      --%>
      <br/><br/><br/><br/>
  </body>
</html>

—–b.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  <body>
    <h3>这是被动态导入的页面内容...b.jsp...</h3>
  </body>
</html>

a.jsp就不写出来了,那个只是为了演示一些JSTL的重定向。a.jsp的源码没意义。

目录
相关文章
|
8月前
|
SQL Java
20:基于EL与JSTL的产品管理页-Java Web
20:基于EL与JSTL的产品管理页-Java Web
68 5
|
8月前
|
Java 应用服务中间件
解决tomcat启动报错:无法在web.xml或使用此应用程序部署的jar文件中解析绝对的url [http:java.sun.com/jsp/jstl/core]
解决tomcat启动报错:无法在web.xml或使用此应用程序部署的jar文件中解析绝对的url [http:java.sun.com/jsp/jstl/core]
1678 1
|
Java 应用服务中间件 数据库连接
[记录]java jsp web无法解析绝对uri:[http://java.sun.com/jsp/jstl/core]
[记录]java jsp web无法解析绝对uri:[http://java.sun.com/jsp/jstl/core]
153 0
|
Java 应用服务中间件 程序员
无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core]
无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core]
1380 0
无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl/core]
|
存储 Java
【Java Web编程 六】深入理解EL表达式和JSTL标签(上)
【Java Web编程 六】深入理解EL表达式和JSTL标签(上)
241 0
【Java Web编程 六】深入理解EL表达式和JSTL标签(上)
|
XML SQL 存储
【Java Web编程 六】深入理解EL表达式和JSTL标签(下)
【Java Web编程 六】深入理解EL表达式和JSTL标签(下)
124 0
|
XML Java 应用服务中间件
怒赞!The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml解决方案
怒赞!The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml解决方案
108 0
怒赞!The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml解决方案
|
SQL XML Java
Web阶段:第十四章:JSTL标签库
Web阶段:第十四章:JSTL标签库
Web阶段:第十四章:JSTL标签库
|
存储 XML SQL
Java Web入门之JSTL标签的解析及使用(超详细必看)
Java Web入门之JSTL标签的解析及使用(超详细必看)
398 0
|
Java 开发者 索引
Web---JSTL(Java标准标签库)-Core核心标签库、I18N国际化、函数库(2)
Web---JSTL(Java标准标签库)-Core核心标签库、I18N国际化、函数库(2)
139 0
Web---JSTL(Java标准标签库)-Core核心标签库、I18N国际化、函数库(2)