• JSP & EL & JSTL


    JSP

    什么是JSP

    用户角度看待 ,就是是一个网页,从程序员角度看待 ,是继承了servlet的java类,所以可以直接说jsp 就是一个Servlet。

    为什么用JSP

    用于显示一些动态数据,可以在jsp文件中写java代码。

    JSP的用法

    include指令

    --把另外一个页面的所有内容拿过来一起输出。 所有的标签元素都包含进来

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

    taglib指令

    :标签库(下一篇实例会有用法)

    <%@ taglib prefix=""  uri="">uri: 标签库路径  prefix : 标签库的别名  

    JSP 动作标签:

    <jsp:include page=""></jsp:include>---动态包含界面,将界面的结果拿过来输出
    <jsp:forward page="other02.jsp"></jsp:forward>==request.getRequestDispatcher("other02.jsp").forward(request, response)--请求转发

    <jsp:param value="" name=""/> --在进行网页跳转时候携带的参数

    常见的用法:<jsp:forward page="other.jsp">
            <jsp:param value="beijing" name="address"/>
          </jsp:forward>

    JSP内置对象:

    以下四个为作用域对象,可以存值,可以取值。但是范围不同:

    - pageContext --作用域仅限于当前的页面。 
    - request --作用域仅限于一次请求, 只要服务器对该请求做出了响应。 这个域中存的值就没有了。
    - session --作用域限于一次会话(多次请求与响应) 当中。
    - application --整个工程都可以访问, 服务器关闭后就不能访问了。

    其它几个对象:

    - out         【JspWriter】-- 用于输出的对象
    - response  【HttpServletResponse】

    不常用
    - exception  【Throwable】
    - page     【Object】
    - config 【ServletConfig】

    EL

    简化jsp中的java代码,常与JSTL一块用

    EL的内置对象:

    作用域相关对象
    - pageScope
    - requestScope
    - sessionScope
    - applicationScope

    头信息相关对象
    - header
    - headerValues

    参数信息相关对象
    - param
    - paramValues

    - cookie
      全局初始化参数
    - initParam

    EL的使用方法:

    1. 取出4个作用域中存放的值。
            <%
                pageContext.setAttribute("name", "page");
                request.setAttribute("name", "request");
                session.setAttribute("name", "session");
                application.setAttribute("name", "application");
            %>
            按普通手段取值<br>
            
            <%= pageContext.getAttribute("name")%>
            <%= request.getAttribute("name")%>
            <%= session.getAttribute("name")%>
            <%= application.getAttribute("name")%>
            
            <br>使用EL表达式取出作用域中的值<br>
            
            ${ pageScope.name }
            ${ requestScope.name }
            ${ sessionScope.name }
            ${ applicationScope.name }

    2. 如果域中所存的是数组

               <%
                   String [] a = {"aa","bb","cc","dd"};
                   pageContext.setAttribute("array", a);
               %>
               
               使用EL表达式取出作用域中数组的值<br>
               
               ${array[0] } , ${array[1] },${array[2] },${array[3] }


    3. 如果域中锁存的是集合
           <%
               Map map = new HashMap();
               map.put("name", "zhangsna");
               map.put("age",18);
               map.put("address","北京..");
               
               map.put("address.aa","深圳..");


               pageContext.setAttribute("map", map);
           %>
           使用EL表达式取出作用域中Map的值<br>
           
           ${map.name } , ${map.age } , ${map.address }  , ${map["address.aa"] }

    JSTL

    JSP Standard Tag Library  jsp标准标签库

    简化jsp代码,一般与EL表达式配合。JSTL需要引入,方法可以百度。

    JSTL的常用标签:

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

    用法示例:

    * c:set

    声明一个对象name, 对象的值 zhangsan , 存储到了page(默认) , 指定是session

            <c:set var="name" value="zhangsan" scope="session"></c:set>   
            ${sessionScope.name }

    * c:if

    判断test里面的表达式是否满足,如果满足,就执行c:if标签中的输出 , c:if 是没有else的。

            <c:set var="age" value="18" ></c:set>
            <c:if test="${ age > 26 }">
                年龄大于了26岁...
            </c:if>
            
            <c:if test="${ age <= 26 }">
                年龄小于了26岁...
            </c:if>

    定义一个变量名 flag  去接收前面表达式的值,然后存在session域中

            <c:if test="${ age > 26 }" var="flag" scope="session">
                年龄大于了26岁...
            </c:if>

    * c:forEach

    从1 开始遍历到10 ,得到的结果 ,赋值给 i ,并且会存储到page域中, step , 增幅为2,

            <c:forEach begin="1" end="10" var="i" step="2">
                ${i }
            </c:forEach>

    items : 表示遍历哪一个对象,注意,这里必须写EL表达式。
            var: 遍历出来的每一个元素用user 去接收。

            <c:forEach var="user" items="${list }">
                ${user.name } ----${user.age }
            </c:forEach>

  • 相关阅读:

    logging 模块和日志
    re 模块和正则表达式
    collections 模块
    hashlib 模块
    序列化 json 和 pickle
    C++之以分隔符的形式获取字符串
    读取配置文件所在路径时的一种常见错误
    char和achar互转
    C++之ARX,Acstring,ACahr转char
  • 原文地址:https://www.cnblogs.com/nlw-blog/p/10772527.html
Copyright © 2020-2023  润新知