zoukankan      html  css  js  c++  java
  • 分分钟搞定 JSP 技术

    一.JSP的语法
        1.模版元素
            写在JSP中的html内容
            在翻译后的Servlet中, 直接被out.write原样输出

        2.JSP脚本表达式
            格式: <%=  %>
            在翻译后的Servlet中, 计算表达式的值在原样输出

        3.JSP脚本片段
            格式: <% 若干条java语句 %>
            在翻译后的Servlet中, 直接复制粘贴到对应的位置执行

            多个片段之间的变量可以互相访问
            一个片段中的java代码可以不完整, 但是在翻译后的Servlet, 多个片段组成的java代码必须完整符合java语法
            片段中不能包含其他的jsp元素

        ~~4.JSP声明
            <%! %>
            写在jsp声明中的内容, 会和类中的方法平级成为类的成员
            

        5.JSP注释
            <%-- 注释内容 --%>
            被jsp注释注释的内容在jsp翻译过程中会被丢弃
            
        6.JSP的指令
            (1) page指令
                <%@page 若干属性声明...%>
                    session="true", 默认为true, 表示翻译后的Servlet会创建session对象
                    如果不想创建session, 可以改为false

                    import 导包

                    pageEncoding 指定jsp解析引擎使用哪一个编码来翻译jsp

            (2) include指令
                <%@include file="/xxx" %>
                实现请求包含效果, 是静态包含

            (3) taglib指令
                用来导入tld文件


    二.JSP的九大隐式对象
        page-------------Servlet
        request----------request
        response--------response
        config-----------ServletConfig
        application-----ServletContext
        session---------session
        exception------exception
        out
        pageContext

        1.pageContext
            代表JSP运行环境的对象
            (1)入口对象, 可以用来获取其他八大隐式对象


                getPage()方法----------------返回page隐式对象
                getRequest()方法-------------返回request隐式对象
                getResponse()方法------------返回response隐式对象
                getServletConfig()方法-------返回config隐式对象
                getServletContext()方法------返回application隐式对象
                getSession()方法-------------返回session隐式对象
                getException()方法-----------返回exception隐式对象
                getOut方法()-----------------返回out隐式对象
                

            (2)本身是一个域对象,  并且提供了入口来操作其他三大域对象

                setAttribute(String name, Object value);
                setAttribute(String name, Object value, int scope);
                
                getAttribute(String name);
                getAttribute(String name, int Scope);
                
                removeAttribute(String name);
                removeAttribute(String name, int Scope);

                getAttributeNames();

                findAttribute();//按照从小到大的顺序去四大域中寻找指定名称属性, 找到就返回, 找不到就返回null

            (3) 提供了便捷方法实现请求包含和转发
                pageContext.forward("xxx");
                pageContext.include("xxx");

    三.JSP标签技术
        1.JSP标签(SUN公司提供)
            <jsp:forward></jsp:forward>
            <jsp:include></jsp:include>
            <jsp:param></jsp:param>

        2.EL表达式
            只能获取不能遍历和设置
            ( 在开发使用时,若表达式有值时会直接在所在位置显示该值,若没有值则直接显示一个空不是null )

            (1) 获取数据
                获取常量/变量  -->${ "aaa" }...
                获取数组中的数据-->${ username }... -->它会自动寻找与之对应的值并输出。这种el表达式在底层是用findAttribute()方法来实现的。
                获取map中的数据-->${ attr[0] }...
                获取集合中的数据-->${ list[0] }...
                获取javaBean中的数据-->${ map.key },${ map["key"] }...-->需要获取哪个属性值时不是由JavaBean内部定义的属性名来决定而是由get和set方法名来决定的。将方法名的get或set和方法后面的括号去掉以及首字母小写后这就是通过el表达式获取时需要的属性名。

                注意: 变量/集合/数组/map/JavaBean必须放在域中才可以通过el获取

            (2) 执行运算
                算术运行
                    +号在el中只能做运算符, 不能作为拼接符

                逻辑运算

                关系运算

                三元表达式

                empty运算
                为空返回true,反之返回false
                
            (3) 获取常用的开发对象
                !!!pageContext:唯一可在el表达式中直接获取域对象中的值

                !!!pageScope:代表pageContext域
                !!!requestScope:代表request域
                !!!sessionScope:代表session域
                !!!applicationScope:代表ServletContext域

                !!!param:代表所有参数的Map集合,可通过键获来获取值; Map<String, String>
                paramValues: 代表获取一个键对应的多个值;  Map<String, String[]>

                header:代表请求头组成的map; Map<String, String>
                headerValues:Map<String, String[]>

                !!!cookie:代表Cookie信息组成的map;  Map<String, Cookie>

                注意:通过cookie获取得到的是Cookie对象,需要进一步通过Cookie名来获取指定的Cookie值   ${ cookie.username.value}  //获取Cookie中的的username值

    1 <% 
    2       Cookie c = new Cookie("cook","222");
    3       //pageContext.setAttribute("c",c);
    4       response.addCookie(c);
    5 %>
    6   Cookie的值为:${ cookie.cook.value }



                initParam:代表所有web应用初始化信息组成的map;  Map<String, String>
        3.JSTL标签库:
            导库:<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  prefix:设置缩写成c

           <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" session="true|false"%> 

          ---pageEncoding:可以指定  jsp文件保存的编码格式、传到浏览器时的编码格式、servlet响应到jsp参数的编码格式

            ---session:默认true ;为true表示一旦访问jsp时就会自动创建session对象,值为false则反之。
                
            <c:out value="<string>" default="<string>" escapeXml="<true|false>"/>

      !!!<c:set var="<string>" value="<string>" target="<string>" property="<string>" scope="<string>" />

      !!!<c:if test="<boolean>" var="<string>" scope="<string>">
               ...//为真时才会执行
            </c:if>

      !!!<c:forEach
                 items="<object>"
                 begin="<int>"
                 end="<int>"
                 step="<int>"
                 var="<string>"
                 varStatus="<string>"
            >

      底层封装了Java中的for,while,do-while循环。

      forEeach中的varStatus属性:

      !!!<c:choose><c:when><c:otherwise>

  • 相关阅读:
    mysql 无法连接提示 Authentication plugin &#39;caching_sha2_password&#39; cannot be loaded
    探究分析:快速对大量的数据转换为数组
    SQL Server like 字段
    InfluxDB从原理到实战
    Python学习日记(四十) Mysql数据库篇 八
    MySQL数据库基本操作
    ES入门宝典(详细截图版)
    NameNode &amp;&amp; Secondary NameNode工作机制
    MySQL 两张表关联更新(用一个表的数据更新另一个表的数据)
    mysql单个表拆分成多个表
  • 原文地址:https://www.cnblogs.com/tongxuping/p/6935017.html
Copyright © 2011-2022 走看看