Day08 JSP

一   注释

1.显式注释

客户端可以看到的注释
            继承HTML风格的注释    &lt;!-- html注释 --&gt;    <!-- 这是html的注释 -->

2.隐式注释

客户端无法看到的注释
            (1)、JSP自己的注释    &lt;%-- jsp注释 --%&gt; <%-- 这是jsp的注释 --%>
            (2)、继承Java风格注释      // 单行注释    /*多行注释*/

二   JSP指令标签

page指令
        language:支持的语言,目前只有java
        contentType:响应类型及编码格式
        pageEncoding:字符编码
        import:导包,只有该属性可以同时设置多次
        errorPage:当页面报错时要跳转的页面,一般与isErrorPage属性一起使用,且跳转的页面的isErrorPage属性设置为true
        isErrorPage:是否是处理错误的页面,默认是false。一般与errorPage属性一起使用
        
        注:页面的编码以charset的值为准;若charset未设置,则以pageEncoding为准;若两者都未设置,则使用默认编码ISO-8859-1

三   include静态包含(重点)

格式:<%@include file="文件路径" %>  相对路径
            file属性支持表达式去取值
        
特点:
            只会生成一个源码文件,相当于直接将内容拷贝进来,所以不能有同名变量。
            运行效率高一点点。耦合性较高,不够灵活。

<div style="height: 800px;width:800px">
    <div id="left" style="width: 200px;height:800px;background-color: pink;float: left;">
         <%@include file="left.jsp" %>
    </div>
    <div id="right" style="width: 600px;height:800px;background-color: gray;float: left;">
         <%@include file="right.jsp" %>
    </div>
</div>

四   include动态包含(重点)

语法:<jsp:include page="要包含的文件路径"></jsp:include>
            page属性支持表达式去取值
        
特点:
            生成多个源码文件,相当于方法的调用,可以有同名变量。
            耦合度低,比较灵活,效率高。
            
注:
            1、<jsp:include>双标签之间不能有任何内容(除非有参数)  
                Expecting "jsp:param" standard action with "name" and "value" attributes
            2、动态包含可以传递参数
                <jsp:param name="参数名" value="参数值"/>
                获取参数使用:request.getParameter(name)
                value属性支持表达式,name属性不支持
                     The name attribute of the jsp:param standard action does not accept any expressions
<div style="height: 800px;width:800px">
    <div id="left" style="width: 200px;height:800px;background-color: blue;float: left;">
         <jsp:include page="left.jsp"></jsp:include>
         
         <jsp:include page="left.jsp">
             <jsp:param value="<%=val %>" name="uname"/>
         </jsp:include>
         
    </div>
    <div id="right" style="width: 600px;height:800px;background-color: green;float: left;">
         <jsp:include page="right.jsp"></jsp:include>
    </div>
</div>

五   九大内置对象

    // 四大域对象
    pageContext.setAttribute("uname1", "zhanggsan");
    //request
    // session
    // application
    
    // 两个输出对象
    // out
    // response
    
    // 配置对象
    // config
    
    // 当前页面对象
    //page
    
    // 异常对象  主要当前页面设置了isErrorPage="true"时才能使用
    // exception

六   EL表达式

语法:${key }  key代表的是存在域对象中的键
        
注意:el表达式一般操作的是域对象,无法操作变量
        
取值范围
            从小范围到大范围取,取到为止,若未取到,则一直向大返回查找;若四个范围都未获取到,返回空字符串。
        
获取指定范围的值:
            pageScope、requestScope、sessionScope、applicationScope
            
        pageContext, request, session, application;范围依次是,本页面,一次请求, 一次会话,整个应用程序。
        而 EL 默认的查找方式为 从小到大查找,找到即可。当域对象全 找完了还未找到则返回空字符串””。
        
        
EL操作对象
            获取对象中的属性:${对象.属性名}
            注:属性必须提供get和set方法

 

    // 设置域对象的值
    pageContext.setAttribute("uname", "zhangsan");
    request.setAttribute("uname", "lisi");
    session.setAttribute("uname", "wangwu");
    application.setAttribute("uname", "zhaoliu");
    
    String str = "admin";
    

    // 将对象存到域对象中
    User user = new User();
    user.setUserId(1);
    user.setUserName("Lisa");
    user.setUserPwd("123123");
    request.setAttribute("user", user);
    
    

    // 将集合存到域对象中
    User user2 = new User();
    user2.setUserId(2);
    user2.setUserName("Lily");
    user2.setUserPwd("123456");
    
    List<String> list = new ArrayList<>();
    list.add("aaa");
    list.add("bbb");
    list.add("ccc");
    
    List<User> userList = new ArrayList<>();
    userList.add(user);
    userList.add(user2);
    
    
    List<String> list2 = new ArrayList<>();
    
    List<String> list3 = null;
    
    request.setAttribute("mylist", list);
    request.setAttribute("userList", userList);
    request.setAttribute("list2", list2);
    request.setAttribute("list3", list3);
    
    
    
    Map map = new HashMap();
    map.put("aaa", "111");
    map.put("bbb", 2222);
    map.put("ccc-a", 333);
    request.setAttribute("map", map);
    
    
    
    request.setAttribute("num", 10);
    request.setAttribute("num2", 2);
    request.setAttribute("str1", "aa");
    request.setAttribute("str2", "bb");
    
    pageContext.setAttribute("a", "aa", PageContext.REQUEST_SCOPE);
    
    pageContext.getAttribute("a", PageContext.REQUEST_SCOPE);

 

<h2>EL的基本使用</h2>
 uname:${uname } <br>
 uname1: ${uname1 }<br>
 requestScope:${requestScope.uname } <br>
 str:${str }<br>
 
 
 
 <br><br>

 <h2>EL 对象取值</h2>
 user对象:${user }<br>
    获取user对象中的属性:${user.userName }<br>
 
 
 

 <h2>EL 集合取值</h2>
    获取集合:${mylist } ---- ${userList }<br>
   获取指定下标的值: ${mylist[0] } ---- ${userList[0].userPwd }<br>
  获取集合的长度:${userList.size() }
   

  <h2>判断为空empty</h2>
   判断字符串是否为空:${empty uname } --- ${empty uname1 } --- ${!empty uname }<br>
   判断对象是否为空:${empty user }<br>
   判断集合是否为空:${empty userList }  --- ${empty list2 } --- ${empty list3 }<br>
   

 <h2>EL Map取值</h2>
   获取Map的值:${map }<br>
  获取指定key的value:${map.aaa } --- ${map["aaa"] }<br>
 
 

 <h2>EL 运算</h2>
 ${1+1 } -- ${num+1 } -- ${num + num2 } <br>
 ${num / num2 } ---
<%--  ${num div num2 } --%>
 <br>
 

 <h2>EL 比较</h2>
 ${num == 1 }  -- ${num >= 10 } <br>
 ${str1 == str2 } -- ${str1 eq str2 }<br>
 ${num + 10 > 10 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值