JavaWeb学习之JSP常用标签、EL表达式的运算符、JSTL标签库(6)

1、JSP常用标签
    * 只要支持JSP文件,常用标签有可以直接使用
        * 格式: jsp:xxxx
    * jsp:forward ,完成jsp页面的转发
        * page属性:转发的地址 
         <% request.setCharacterEncoding("UTF-8"); %>
         <jsp:forward page="/index.jsp">
            <jsp:param value="张三" name="userName"/>
         </jsp:forward>
         浏览这个页面会跳转到index.jsp页面,浏览器地址不变
         ${param.userName}
        * 运行原理
            JSP引擎,处理JSP文件,自己解析特定的标签,然后将其编译成java代码
            jsp:forward -- application.getRequestDispatcher("/forward.jsp");
                * 注意:在JSP页面中可以不用斜杠开头
                    * String path = getAbsolutePathRelativeToContext(relativeUrlPath);自己单独处理,如果不是/开头,自动添加
        
    * jsp:include ,动态包含,在执行当前servlet时才进行文件的合并
        * page属性:包含的页面
        * 执行原理
            * org.apache.jasper.runtime.JspRuntimeLibrary.include
            * request.getRequestDispatcher.include
    * jsp:param,设置参数,与jsp:forward或jsp:include一起使用
        * name属性:指定参数的名称
        * value属性:指定参数的值
        
    * jsp:useBean标签:创建class指定的类,并将此类添加到作用域中
        * class属性:指定类的完整路径名
        * id属性:确定对象的实例对象
        <jsp:useBean id="cal" class="cn.itcast.domain.Calculator"></jsp:useBean>
        
    * jsp:setProperty标签:给指定的Javabean对象设置属性值
        * name属性:已有的JavaBean在web域中的对象
        * property属性:确定需要使用的Javabean的属性
        * value属性:确定设置的具体的内容
        * param属性:获得指定参数的内容
        * 注意:当内容是null时,将不会赋值
        <jsp:setProperty property="*" name="cal" param=""/>获取所有cal值
        param为获取某个参数的值,比如获取<input type="text" name="firstNum"/>,可以这样写<jsp:setProperty property="*" name="cal" param="firstNum"/>
        如果param和property的值相同,可以省略不写
        <jsp:setProperty property="firstNum" name="cal" value="1"/>给cal对象的firstNum属性设置值为1
        
2、EL表达式的运算符
    * 执行运算
        * .
            * 获得当前对象的属性的值
        * []
            * 书写数字及获得下标所对应的值
            * 书写属性名称,获得相应的值
    * 转义字符:
        * 
            * 使EL表达式失效
    * 算术运算符、逻辑运算符、关系运算符
    * empty 三目运算符
   ${empty user}返回true或false
3.JSTL标签库 1、使用标签库的流程 * 导包(Myeclipse自带) * 在当前的JSP页面头部声明引用 * <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> * taglib指令:确定所使用的标签库 * uri:确定使用的标签库,具体的名称 * prefix:为当前标签库起一个别名 * 使用 * <prefix:xxx或者<别名:xxx 2、域对象操作 * set:给web域设置值的 var 属性:属性的名称 value属性:属性的值 scope属性:确定作用域 * page * request * session * application <c:set var="gf" value="fengjie" scope="page"></c:set> <c:set var="gf" value="fengjie" scope="request"></c:set> <c:set var="gf" value="fengjie" scope="session"></c:set> <c:set var="gf" value="fengjie" scope="application"></c:set> ${gf} -- ${requestScope.gf}<br/> ${gf} -- ${requestScope.gf}<br/> ${gf} -- ${sessionScope.gf}<br/> ${gf} -- ${applicationScope.gf}<br/> * remove:删除指定名称的web域的值 * var属性:确定名称 * 注意:删除所有作用域的内容 <c:remove var="gf"/> * out:将内容输出 * value:指定内容 * 注意:可以使用EL表达式 * escapeXml:是否转义html规定的字符 * 默认值true,转义 * default:当前输出内容为空时,显示默认值 <c:set var="gf" value="<a href='#'>fengjieout</a>" scope="page"></c:set> <c:out value="${gf2}" default="没有值"></c:out> 3、数据操作 * if标签:逻辑判断 * test属性:逻辑值true|false * 支持EL表达式 <c:set var="user" value="xx"></c:set> <c:if test="${empty user}"> user对象是null <br/> </c:if> * choose标签:确定一组可以进行选择的显示结果 * 必须放置when标签 * 子标签 * when标签:逻辑判断 * test属性:填写逻辑值 * otherwise标签:处理没有处理项,默认项 <c:choose> <c:when test="${empty user}"> when:user null </c:when> <c:when test="${!empty user2}"> when:user not null </c:when> <c:otherwise> 没有任何处理项 </c:otherwise> </c:choose> * forEach标签:进行迭代,每一条信息将显示在标签体 * items属性:确定遍历的对象 * 支持EL表达式 或 * begin属性: * end属性: * 共有 * var属性:确定遍历变量 * step属性:步长 i+=2 i++ -- i+=1 <c:forEach items="${headerValues}" var="hvs"> ${hvs} -- ${hvs.key}: <c:forEach items="${hvs.value}" var="h"> ${h} ***** </c:forEach> <br/> </c:forEach> *url标签:生成当前响应的相对于web站点的完成路径 * value属性:指定的页面的位置 * 注意:内容如果/开头,相对于当前web项目 <c:url var="demoUrl" value="/demo1/calculator.jsp"></c:url>
原文地址:https://www.cnblogs.com/yxlblogs/p/4152246.html