zoukankan      html  css  js  c++  java
  • jsp的语法

    jsp的基本语法

     

    <%-- 
      <% %>用于写java代码
    --%>
    <%
        String msg=(String)request.getAttribute("msg");
        if(msg!=null)
        out.write(msg);
    %>
    <%-- 
         <%=msg %> 等价于  out.write(msg) 
    --%>
    <%=msg %>
    <%-- <%!定义全局变量或静态块--%>
    <%! 
        int i=10;
    %>
    <%-- <%定义局部变量 --%>
    <%
        int i=10;
    %>
    <%--这是jsp注释,特点:安全,不费流量 --%>
    <!-- 这是html注释  特点:不安全,费流量-->

     

    jsp的基本语法

    JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。

    JSP 2.0规范中共定义了三个指令:page指令、Include指令、taglib指令

    语法:

    <%@ 指令名称 属性1=“属性值1” 属性2=“属性值2”。。。%>
    
    或者:
    
    <%@ 指令名称 属性1=“属性值1”%>
    
    <%@ 指令名称 属性2=“属性值2”%>
    
    如:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    
    <%@ page language="java" %>
    
    <%@ page import="java.util.*" %> 

    1page:

    作用:用于定义JSP页面的各种属性

    属性:

    1.1、 import 和java代码中的import是一样的
    
    <%@ page import="java.util.Date,java.util.List"%>
    
    或者:
    
    <%@ page import="java.util.Date"%>
    
    <%@ page import="java.util.List"%>
    
    JSP会自动导入以下的包:
    
    import java.lang.*;
    
    import javax.servlet.*;
    
    import javax.servlet.http.*;
    
    import javax.servlet.jsp.*;
    
    1.2、 session: 是否会自动创建session对象。默认值是true;
    
    1.3、 buffer: JSP中有javax.servlet.jsp.JspWriter输出字符流。设置。输出数据的缓存大小,默认是8kb.
    
    1.4 errorPage: 如果页面中有错误,则跳转到指定的资源。
    
    errorPage="/uri" 如果写“/”则代表当前应用的目录下,绝对路径。
    
    如果不写“/”则代表相对路径。
    
        1.5、 isErrorPage: 是否创建throwable对象。默认是false;
    
    1.6、 contextType: 等同于response.setContextType("text/html;charset=utf-8");
    
    1.7、 pageEncoding: 告诉JSP引擎要翻译的文件使用的编码。
    
    1.8、 isELIgnored: 是否支持EL表达式。 默认是false
    
    <%@ page  pageEncoding="gbk" %>

    2include:

    静态包含:把其它资源包含到当前页面中。

    <%@ include file="/include/header.jsp" %>

    动态包含:

    <jsp:include page="/include/header.jsp"></jsp:include>

    两者的区别:翻译的时间段不同

    前者:在翻译时就把两个文件合并

    后者:不会合并文件,当代码执行到include时,才包含另一个文件的内容。

    原则:能用静的就不用动的。

    3taglib

    作用:在JSP页面中导入JSTL标签库。替换jsp中的java代码片段。

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

    实际使用中当使用“Alt+/”快捷键时,没有反应,显示如下,这样的话需要先导入jstl.jar包

     

    导入jstl.jar

     

    <c:if test="${5>3 }">
            aaaaaa
    </c:if>

     jsp6个动作

     

     使用标签的形式来表示一段java代码。
    如: <jsp:include page="2.jsp"></jsp:include>
    <jsp:include > 动态包含
    <jsp:forward> 请求转发
    <jsp:param> 设置请求参数
    <jsp:useBean> 创建一个对象
    <jsp:setProperty> 给指定的对象属性赋值
    <jsp:getProperty> 取出指定对象的属性值

     

    四大域对象:实际开发

    PageContext : pageConext 存放的数据在当前页面有效。开发时使用较少。
    ServletRequest: request  存放的数据在一次请求(转发)内有效。使用非常多。
    HttpSession: session 存放的数据在一次会话中有效。使用的比较多。如:存放用户的登录信息,购物车功能。
    ServletContext: application 存放的数据在整个应用范围内都有效。因为范围太大,应尽量少用。

     EL表达式

     EL表达式:expression language 表达式语言,要简化jspjava代码开发。它不是一种开发语言,是jsp获取数据的一种规范

    EL的具体功能 

    EL表达式只能获取存在4个作用域中的数据

    EL获取对于null这样的数据,在页面中表现为空字符串
    ${u.name} == u.getName()方法
    点(.) 运算符相当于调了getter方法,点后页面跟的是属性名。

    []运算符:点能做的,它也能做; 它能做的,点不一定能做

    <%
            List list=new ArrayList();
            list.add("aaa");
            list.add("bbb");
            list.add("ccc");
            request.setAttribute("list", list);
            
            Map map=new HashMap();
            map.put("a", "a");
            map.put("b", "b");
            map.put("c", "c");
            request.setAttribute("map", map);
        %>
        
        ${list[0] },${list },
        ${map['b'] },${map.c }

    运算empty判断null,空字符串和没有元素的集合(即使集合对象本身不为null)都返回true

    <%
             String str="";
             request.setAttribute("str",str);
             String str1=null;
             request.setAttribute("str1", str1);
             String str2="abc";
             request.setAttribute("str2", str2);
             List list=new ArrayList();
             list.add("5656");
             request.setAttribute("list", list);
             Map map=new HashMap();
             request.setAttribute("map", map);   
        %>
        
        ${empty str },true</br>  
        ${empty str1 },true</br>  
        ${empty str2 },false</br>  
        ${empty list },false</br>  
        ${empty map },true</br>

    三元运算符  

    <%
        int sex=1;
        request.setAttribute("s", sex);
    %>
        <input type="radio" name="sex" value="m" ${s==0?"checked='checked'":"" }>男
        <input type="radio" name="sex" value="f" ${s==1?"checked='checked'":"" }>女

    JSTL

    1、什么是JSTL

    JSTLJavaServerPages Standard Tag LibraryJSP标准标签库

    2JSTL的作用

    使用JSTL实现JSP页面中逻辑处理。如判断、循环等。

    3、使用JSTL

    1)在JSP页面添加taglib指令

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

    2)使用JSTL标签

    <%-- 申明一个变量num 值为 10 --%>
       <c:set var="num" value="15"></c:set>
       <%-- 将变量num输出 --%>
       <c:out value="${num }"></c:out>  
       <%-- 移除变量num --%>
       <c:remove var="num" />
       <%-- 再次输出变量num,如num无值,则默认aaa --%>
       <c:out value="${num }" default="aaa"></c:out>
       
       <%-- if判断语句,无else --%>
       <c:if test="${5>3 }">
          5>3
       </c:if>
       
       <%-- 判断语句不满足走默认值 --%>
       <c:choose>
           <c:when test="${5<3 }">
              5>3
           </c:when>
           <c:otherwise>
              默认值
           </c:otherwise>
       </c:choose>

    出现以下错,是由于<c:if test="${5>3 }">,变量${}要使用双引号“”引起来。

     foreach标签:

    <%
        List list=new ArrayList();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("ddd");
        list.add("fff");
        request.setAttribute("list", list);
    %>
    <table>
        <tr>
            <th>数据</th>
            <th>从0开始</th>
            <th>从1开始</th>
            <th>最后一个</th>
            <th>第一个</th>
        </tr>
        <%-- 
             c:forEach中的varStatus属性。
            指向一个字符串,该字符串引用一个对象。  map.put("vs",一个对象);
            这个对象记录着当前遍历的元素的一些信息:
                getIndex():返回索引。从0开始
                getCount():返回计数。从1开始
                isLast():是否是最后一个元素
                isFirst():是否是第一个元素
         --%>
        <c:forEach items="${list }" var="l" varStatus="vs">
        <tr ${vs.count%2==0?"style='background-color:red'":"style='background-color:blue'" }>
            <td>${l }</td>
            <td>${vs.index }</td>
            <td>${vs.count }</td>
            <td>${vs.first }</td>
            <td>${vs.last}</td>
        </tr>
        </c:forEach>
        <%--
           var申明变量
           begin初始化
           end结束条件
           step步长
         --%>
        <c:forEach var="i" begin="0" step="2" end="10" >
            ${i }
        </c:forEach>
        
    </table>

     

  • 相关阅读:
    无障碍开发(十五)之好心办坏事
    无障碍开发(十四)之Android /iOS平台无障碍功能
    无障碍开发(十三)之盲人是如何使用手机的之屏幕阅读器Screen Reader
    无障碍开发(十二)之怎样做好信息无障碍?
    LABjs学习(一)之无阻塞动态并行加载脚本文件以及管理执行顺序
    jQuery选择器引入
    面向对象-标准的手机类代码及其测试
    面向对象-this关键字的内存图解
    面向对象-this关键字的概述和应用
    第一个jQuery程序
  • 原文地址:https://www.cnblogs.com/xiaotang5051729/p/9927956.html
Copyright © 2011-2022 走看看