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

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

前面为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的源码没意义。

—–演示结果:



image.png

目录
相关文章
|
8天前
|
Java Maven Spring
Java Web 应用中,资源文件的位置和加载方式
在Java Web应用中,资源文件如配置文件、静态文件等通常放置在特定目录下,如WEB-INF或classes。通过类加载器或Servlet上下文路径可实现资源的加载与访问。正确管理资源位置与加载方式对应用的稳定性和可维护性至关重要。
|
11天前
|
存储 安全 搜索推荐
理解Session和Cookie:Java Web开发中的用户状态管理
理解Session和Cookie:Java Web开发中的用户状态管理
35 4
|
10天前
|
Java 持续交付 项目管理
使用Maven进行项目管理:提高Java Web开发的效率
Maven 是一款强大的项目管理和构建自动化工具,广泛应用于Java社区。它通过依赖管理、构建生命周期管理、插件机制和多模块项目支持等功能,简化了项目的构建过程,提高了开发效率。本文将介绍Maven的核心功能及其在Java Web开发中的应用。
26 0
WK
|
16天前
|
安全 Java 编译器
C++和Java哪个更适合开发web网站
在Web开发领域,C++和Java各具优势。C++以其高性能、低级控制和跨平台性著称,适用于需要高吞吐量和低延迟的场景,如实时交易系统和在线游戏服务器。Java则凭借其跨平台性、丰富的生态系统和强大的安全性,广泛应用于企业级Web开发,如企业管理系统和电子商务平台。选择时需根据项目需求和技术储备综合考虑。
WK
19 0
|
1月前
|
前端开发 Java API
JAVA Web 服务及底层框架原理
【10月更文挑战第1天】Java Web 服务是基于 Java 编程语言用于开发分布式网络应用程序的一种技术。它通常运行在 Web 服务器上,并通过 HTTP 协议与客户端进行通信。
23 1
|
2月前
|
前端开发 数据安全/隐私保护
【前端web入门第二天】03 表单-下拉菜单 文本域 label标签 按钮 【附注册信息综合案例】
本文档详细介绍了HTML表单的多种元素及其用法,包括下拉菜单(`&lt;select&gt;` 和 `&lt;option&gt;`)、文本域(`&lt;textarea&gt;`)、标签解释(`&lt;label&gt;`)、各类按钮(`&lt;button&gt;`)及表单重置功能、无语义布局标签(`&lt;div&gt;` 和 `&lt;span&gt;`)以及字符实体的应用。此外,还提供了一个完整的注册信息表单案例,涵盖个人信息、教育经历和工作经历等部分,展示了如何综合运用上述元素构建实用的表单。
【前端web入门第二天】03 表单-下拉菜单 文本域 label标签 按钮 【附注册信息综合案例】
|
2月前
|
数据库 开发者 Python
实战指南:用Python协程与异步函数优化高性能Web应用
在快速发展的Web开发领域,高性能与高效响应是衡量应用质量的重要标准。随着Python在Web开发中的广泛应用,如何利用Python的协程(Coroutine)与异步函数(Async Functions)特性来优化Web应用的性能,成为了许多开发者关注的焦点。本文将从实战角度出发,通过具体案例展示如何运用这些技术来提升Web应用的响应速度和吞吐量。
29 1
|
2月前
|
移动开发 JavaScript 数据可视化
|
2月前
|
XML JavaScript Java
NekoHTML 是一个基于Java的HTML扫描器和标签补全器
**NekoHTML** 是一个基于Java的HTML扫描器和标签补全器(tag balancer),由J. Andrew Clark开发。它主要用于解析HTML文档,并能够“修正”许多在编写HTML文档过程中常犯的错误,如增补缺失的父元素、自动用结束标签关闭相应的元素,以及处理不匹配的内嵌元素标签等。这使得程序能够以标准的XML接口来访问HTML文档中的信息。 ### NekoHTML的主要特点包括: 1. **错误修正**:能够自动修正HTML中的常见错误,如未闭合的标签等。 2. **DOM树生成**:将HTML源代码转化为DOM(Document Object Model)结构,便
|
2月前
|
前端开发 Windows
【前端web入门第一天】02 HTML图片标签 超链接标签 音频标签 视频标签
本文档详细介绍了HTML中的图片、超链接、音频和视频标签的使用方法。首先讲解了`&lt;img&gt;`标签的基本用法及其属性,包括如何使用相对路径和绝对路径。接着介绍了`&lt;a&gt;`标签,用于创建超链接,并展示了如何设置目标页面打开方式。最后,文档还涵盖了如何在网页中嵌入音频和视频文件,包括简化写法及常用属性。
50 13