JSP内置标签和JSTL标签

JSP标签

虽然我们希望JSP页面仅用作数据显示模块,不要嵌套任何java代码引入任何业务逻辑,但在实际开发中不引入一点业务逻辑是不可能的,但引入业务逻辑会导致页面出现难看java代码,怎么办?

Sun公司允许用户开发自定义标签封装页面的java代码,以便jsp页面不出现一行java代码。当然Sun公司在jsp页面中也内置了一些标签(这些标签叫做jsp标签/动作),开发人员使用这些标签可以完成页面的一些常用业务逻辑。

JSP标签也称之为Jsp Action(JSP动作)元素,它用于在JSP页面中提供业务逻辑功能。

Jsp标签的目标是为了替换jsp的脚本。

 

3种:

JSP内置标签(动作标签) (不需要导入)

JSTL标签(java标准标签库)(需要导入)

自定义标签      (需要导入)

 

JSP内置标签

内置标签,不需要在jsp页面中导入标签库、常用的有3个:

<jsp:include>标签  

<jsp:forward>标签  

<jsp:param>标签  

 

转发标签:

<jsp:forward page=""></jsp:forward>

 

包含标签:

<jsp:include page="被包含页面"></jsp:include>

注意:

包含与被包含页面先分别各自翻译成java源文件,然后再合并在一起运行。(先翻译后合并)这种包含叫动态包含。

 

参数标签:

<jsp:param value="" name=""/>

注意: 参数标签通常在forward和include标签中使用,不能单独使用。

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Jsp的动作标签</title>  
  </head>
  
  <body>
     
  <%--1.使用jsp脚本转发
       //request.getRequestDispatcher("/05.el.jsp").forward(request,response);
  --%>
      
  <%--2.使用jsp转发标签转发
      <jsp:forward page="/05.el.jsp">
         //还可以使用参数标签、设置带参数转发
        <jsp:param value="jacky" name="name"/>
      </jsp:forward>
  --%>
       
  <%-- 用于包含其他页面
      <jsp:include page="common/header.jsp">
         <jsp:param value="20" name="age"/>
      </jsp:include>
   --%>    
  </body>
</html>

JSTL标签

JSTL,Java Standard Tag Libarary java标准标签库

现在JSTL已经纳入JavaEE的规范中。

常见的JSTL标签库:

核心标签库

国际化标签库 

JSTL的函数库

数据库的标签库

XML的标签库

JSTL标签的使用步骤

1)找到jstl标签库支持的jar包。在myecplise建立项目的时候,如果选择了Java5.0以上,那么javaee中已经包含了jstl的jar包了!

如果是使用eclipse建立的项目,则需要导入jstl.jar和standard.jar这2个jar包.

2)在jsp页面头部,使用@taglib指令导入标签库(导入核心标签库为例)

<%--导入核心标签库 --%>

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

注意:

uri: 在jstl的jar包的META-INF下找到c.tld文件,tld文件是标签库的声明文件。通过uri找到唯一的一套标签库的。(uri就相当于tld文件的唯一名称)

prefix: 使用标签库的前缀名称。通常写上tld文件中的short-name

3)在jsp页面中使用标签。

格式:<标签库前缀:标签名称>

例如:<c:set> </c:set> 

 

常用的核心标签库

1)保存域数据和得到域数据

<c:set></c:set>

<c:out value=""></c:out>

2条件判断

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

    <c:choose></c:choose>

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

    <c:otherwise></c:otherwise>

3)循环相关

    <c:forEach></c:forEach>

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

4)重定向

    <c:redirect></c:redirect>

 

JSTL核心标签库的使用示例

1 c:set 用于保存数据,保存到域对象

<%--
    <c:set var="name" value="rose" scope="page"></c:set>
    等价于:
    pageContext.setAttribute("name","rose",PageContext.PAGE_SCOPE);
--%>
<%pageContext.setAttribute("name1",rose);%>
<c:set var="name" value="${name1}" scope="request"></c:set>

2c:out 用于得到域对象的数据

<%--
    default: 默认值。value的值为null时就使用默认值
    escapeXml: 控制内容是否进行转义。true,进行转义, false,不进行转义。默认是true
    ${name}:表示从域中获取对应的key的value,获取的顺序是page->request->session->application
--%>
<c:out value="${name}" default="jack" ></c:out>

3 c:if  单条件判断

<%--
    test: 返回boolean值,如果true,则显示标签体内容,否则,不显示标签体内容
--%>
<c:if test="${10>5}">
    条件成立的语句
</c:if>

4 c:choose c:when c:otherwise 多条件判断,相当于switch语句

<c:set var="score" value="100" scope="page"></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>

5c:forEach 循环数据(数组、集合)

<%
    //List集合 注意:记得导包
   List<Student> list = new ArrayList<Student>();
   list.add(new Student("rose",18));
   list.add(new Student("lucy",20));
   list.add(new Student("jack",25));
   pageContext.setAttribute("list",list);
  
   //Map集合 注意:记得导包
   Map<String,Student> map = new HashMap<String,Student>();
   map.put("100",new Student("lily",18));
   map.put("101",new Student("mark",18));
   map.put("102",new Student("狗娃",8));
   pageContext.setAttribute("map",map);
%>
<%--
    遍历List集合
    begin="":从集合的哪个元素开始遍历,从0开始.默认从0开始
    end="":遍历到哪个元素位置 。默认到最后一个
    items="":需要遍历的集合
    step="":每次遍历后的增长步长,1->每次增加1 。默认1
    var="":每个元素的名称
    varStatus="":当前状态信息对象(当前是第几行)
--%>
<c:forEach items="${list}" var="stu" varStatus="sta">
   <div>行数: ${sta.count} - 姓名: ${stu.name} - 年龄:${stu.age}</div>
</c:forEach>

<%--遍历Map集合:把每个元素作为Entry进行遍历--%>
<c:forEach items="${map}" var="entry">
   <div>编号: ${entry.key}  - 姓名: ${entry.value.name} - 年龄:${entry.value.age}</div>
</c:forEach>
<%-- for循环输出1-10 --%>
<c:forEach begin="1" end="10" step="1" var="i">
    <div>${i}</div>
</c:forEach>

6c:forToekens:  用于 遍历特定字符串

items : 遍历字符串
delims: 分割字符串
<%
    pageContext.setAttribute("str","java-net-php-平面设计");
%>
<c:forTokens items="${str}" delims="-" var="s">
   ${s}<br/>
</c:forTokens>

7c:redirect  重定向

<%--
    response.sendRedirect(request.getContextPath()+"/index.jsp");
--%>
<c:redirect url="/index.jsp"></c:redirect>

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值