22.JPS标签---JSTL标签

本文详细介绍了JSTL(Java Standard Tag Library)的使用方法,包括如何导入和使用核心标签库、国际化标签库、EL函数库等。重点讲解了c:set用于保存数据,c:out用于获取数据,c:if进行单条件判断,c:choose配合c:when和c:otherwise进行多条件判断,以及c:forEach和c:forTokens实现循环数据等功能。

JSTL (全名:java  standard  tag  libarary   -  java标准标签库  )

核心标签库 c标签库) 

国际化标签(fmt标签库)

EL函数库(fn函数库)

xml标签库(x标签库)

ql标签库(sql标签库)

1.使用JSTL标签步骤

1) 导入jstl支持的jar包(标签背后隐藏的java代码) 注意:使用javaee5.0的项目自动导入jstl支持jar包

<%--导入标签库 --%>
<%@taglib uri="tld文件的uri" prefix="缩写" %>在jstl里面找到jar包,引入时uri和缩写的位置
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

 

 

2)使用taglib指令导入标签库   <%@taglib uri="tld文件的uri名称" prefix="简写" %>

3)在jsp中使用标签  

核心标签库的重点标签:             

         保存数据:<c:set></c:set>  

 <%--使用标签 --%>
    <%--set标签 :保存数据(保存到域中)默认保存到page域 --%>
    <c:set var="name" value="rose" scope="request"></c:set>
 ${name}

         获取数据:  <c:out value=""></c:out>

<%
    	String msg = null;
    	pageContext.setAttribute("msg",msg);
     %>
    
    ${msg }
    <br/>
    <%--out标签: 获取数据(从域中) 
    default: 当value值为null时,使用默认值
    escapeXml: 是否对value值进行转义,false,不转义,true,转义(默认)
    --%>
    <c:out value="${msg}" default="<h3>标题3</h3>" escapeXml="true"></c:out>

    单条件判断<c:if test=""></c:if>

<%--if标签 :单条件判断--%>
    <c:if test="${!empty msg}">
    	条件成立
    </c:if>

    多条件判断

          <c:choose></c:choose>

          <c:when test=""></c:when>

          <c:otherwise></c:otherwise>

 <%--choose标签+when标签+otherwirse标签: 多条件判断 --%>
    <c:set var="score" value="56"></c:set>
    
    <c:choose>
    	<c:when test="${score>=90 && score<=100}">
    		优秀
    	</c:when>
    	<c:when test="${score>=80 && score<90}">
    		良好
    	</c:when>
    	<c:when test="${score>=70 && score<80}">
    		一般
    	</c:when>
    	<c:when test="${score>=60 && score<70}">
    		及格
    	</c:when>
    	<c:otherwise>
    		不及格
    	</c:otherwise>
    </c:choose>

    循环数据

          <c:forEach></c:forEach>

    <c:forTokens items="" delims=""></c:forTokens>

 <%-- forEach标签:循环 --%>
    <%
    	//List
     	List<Student>  list = new ArrayList<Student>();
     	list.add(new Student("rose",18));
     	list.add(new Student("jack",28));
     	list.add(new Student("lucy",38));
     	//放入域中
     	pageContext.setAttribute("list",list);
     	
     	//Map
     	Map<String,Student> map = new HashMap<String,Student>();
     	map.put("100",new Student("mark",20));
     	map.put("101",new Student("maxwell",30));
     	map.put("102",new Student("narci",40));
     	//放入域中
     	pageContext.setAttribute("map",map);
     %>
     <hr/>
     <%--
      begin="" : 从哪个元素开始遍历,从0开始.默认从0开始
      end="":     到哪个元素结束。默认到最后一个元素
      step="" : 步长    (每次加几)  ,默认1
      items="": 需要遍历的数据(集合) 
      var="": 每个元素的名称 
      varStatus="": 当前正在遍历元素的状态对象。(count属性:当前位置,从1开始)
      
     --%>
    <c:forEach items="${list}" var="student" varStatus="varSta">
    	序号:${varSta.count} - 姓名:${student.name } - 年龄:${student.age}<br/>
    </c:forEach>
    
    <hr/>

    <%-- forToken标签: 循环特殊字符串 --%>
    <%
    	String str = "java-php-net-平面";
    	pageContext.setAttribute("str",str);
     %>
    
    <c:forTokens items="${str}" delims="-" var="s">
    	${s }<br/>
    </c:forTokens>
    
    <c:forEach items="${map}" var="entry">
    	${entry.key } - 姓名: ${entry.value.name } - 年龄:${entry.value.age }<br/>
    </c:forEach>

         重定向 <c:redirect></c:redirect>

<%--redrict:重定向 --%>
    <c:redirect url="http://www.baidu.com"></c:redirect>

  

<think>我们正在解释命令 `jps -l` 的输出结果:`24161 sun.tools.jps.Jps` 这个命令是JDK自带的一个工具,用于查看当前用户运行的Java进程。 输出结果的含义: - `24161`: 这是Java进程的进程ID(PID)。 - `sun.tools.jps.Jps`: 这是该Java进程的主类(main class)的全限定名(fully qualified class name)。 具体分析: - `jps` 命令本身也是一个Java程序,它运行时也会启动一个Java虚拟机(JVM),所以它也会出现在自己的进程列表中。 - 这里显示的进程正是我们运行的 `jps` 命令本身。因为当我们执行 `jps -l` 时,它会列出包括自己进程在内的所有Java进程。 - 主类 `sun.tools.jps.Jps` 是 `jps` 命令的入口类,位于JDK的 `lib/tools.jar` 中。 为什么会出现这个输出? 当我们运行 `jps` 命令时,它会扫描当前系统上的Java进程。但是,由于它自己也是一个Java进程,所以它也会被扫描到。因此,在输出中会看到两条记录(如果还有其他Java进程的话): 1. 我们运行的 `jps` 命令对应的进程(如这里的24161) 2. 其他Java进程 注意:如果系统上没有其他Java进程,那么只会看到这一条记录。 示例说明: 假设我们运行了三个Java程序:一个Tomcat(主类为org.apache.catalina.startup.Bootstrap),一个自己写的程序(主类为com.example.MyApp),然后运行了`jps -l`,那么输出可能如下: 23456 com.example.MyApp 34567 org.apache.catalina.startup.Bootstrap 24161 sun.tools.jps.Jps 总结: - `24161 sun.tools.jps.Jps` 表示当前运行的 `jps` 命令本身,其进程ID为24161,主类为 `sun.tools.jps.Jps`。 - 这个输出是正常的,表明 `jps` 命令正在运行。 注意:由于 `jps` 命令运行时间很短,有时可能看不到它自己的进程(因为它执行完毕就退出了),但在某些情况下(比如系统负载较高或扫描的进程较多时),它可能会在运行过程中看到自己。 相关问题: §§相关问题§§ 1. 如何排除 jps 命令自身在输出结果中的显示? 2. jps 命令输出的主类信息与实际运行的 jar 包名称不一致怎么办? 3. 除了 jps 之外,还有哪些命令可以查看 Java 进程? 4. 为什么有时 jps 命令无法列出某些 Java 进程? </think>### 命令 `jps -l` 输出 `24161 sun.tools.jps.Jps` 的详细解释 #### 1. **命令作用** `jps -l` 是 Java 虚拟机进程状态工具(Java Virtual Machine Process Status Tool),用于**列出当前系统中所有正在运行的 Java 进程及其详细信息**: - `-l` 参数:显示完整的包名(主类全限定名)或 JAR 文件路径 --- #### 2. **输出解析** `24161 sun.tools.jps.Jps` 包含两个关键信息: ```plaintext ┌────────┬─────────────────────────────┐ │ PID │ 主类全限定名 │ ├────────┼─────────────────────────────┤ │ 24161 │ sun.tools.jps.Jps │ └────────┴─────────────────────────────┘ ``` 1. **`24161`** - **PID(进程标识符)**:操作系统分配给该 Java 进程的唯一数字标识 - 可通过 PID 管理进程(如 `kill 24161` 终止进程) - 对应操作系统的进程:`ps -p 24161` 2. **`sun.tools.jps.Jps`** - **主类全限定名**:Java 进程入口点的完整类路径 - 结构解析: - `sun.tools`:JDK 内部工具包(位于 `rt.jar`) - `jps`:工具模块名 - `Jps`:实际执行的入口类 - 物理路径映射: $$ \text{JDK安装目录}/lib/tools.jar!\sun\tools\jps\Jps.class $$ --- #### 3. **特殊含义** 该输出表示 **`jps` 命令自身也被检测为一个 Java 进程**: - 原因:`jps` 本身是 Java 编写的工具,运行时会在系统中创建一个临时的 Java 进程 - 生命周期: - 执行 `jps -l` 命令 → 启动 JVM 进程 → 扫描其他 Java 进程 → 输出结果 → 进程终止 - 特性: - PID 每次执行都会变化(动态分配) - 输出中总是包含自身进程(除非系统无任何 Java 进程) --- #### 4. **对比其他进程** 正常 Java 应用进程的输出示例: ```bash 1234 org.example.MainApp # 用户应用的入口类 5678 /opt/app/service.jar # 通过 -jar 启动的 JAR 包 ``` 而 `sun.tools.jps.Jps` 是 **JDK 内部工具进程的标志**,无需用户干预。 --- ### 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值