zoukankan      html  css  js  c++  java
  • java-servlet-EL表达式和java标签

    1      Servlet线程安全问题

                     1st.              为什么说servlet会有线程安全问题?

    1. 容器默认情况下,对于某个servlet,只会创建一个实例.
    2. 容器收到一个请求,就会启动一个线程来处理请求.这样,就有可能有多个线程同时调用同一个servlet实例,就有可能产生线程安全问题(比如,多个线程同时修改某个属性);

                    2nd.              如何解决?

    1. 使用synchronized对线程安全问题代码进行加锁;注:会影响性能.
    2. 尽量避免写有线程安全的代码,比如,不要修改属性.

     

    2      Jsp基础

                     1st.              Jsp是什么?
    本质就是一个servlet

                    2nd.              如何写jsp?

    1. Html直接写
    2. Java代码(java脚本)

    I)          <% %>

    II)        <%= %>

    III)      Jsp声明(a1.jsp)
    <&!  变量或者方法  &>
    声明以后可以直接在代码片段中使用

    1. 指令

    I)          什么是指令?
    告诉容器执行的一些配置

    II)        Page指令

                                                                       i.              Import属性:导包

                                                                     ii.              Pageencoding属性:设置编码集

                                                                    iii.              Contenttype属性:设置输出属性编码集

                                                                    iv.              Session属性:true(默认)/false  当值为false时,不能够直接使用session隐含对象了.(a2.jsp)

                                                                     v.              Errorpage属性:指定一个异常处理页面,当异常发生后,容器会调用异常处理页面.(a3.jsp)

                                                                    vi.              Iserrorpage属性:true/false(默认) 当值为true的时候,表示这是一个异常处理页面,可以使用exeception隐含对象.(a4.jsp)

    III)      Incloud指令

                                                                       i.              File属性:包含的文件

    IV)      Taglib指令

                                                                       i.              用于导入jsp标签.

    1. 隐含对象

    I)          什么是隐含对象…可以直接使用的对象

    II)        为什么可以直接使用

    III)      有哪些隐含对象
    out,request,response,session,application,
    exeception,异常处理对象,只能在异常处理界面使用
    pagecontext(a6.jsp  a7.jsp)

    1. 容器会为每一个jsp实例创建一个唯一的符合pagecontext接口要求对象
      特点:

    a)         唯一性:jsp实例对应一个pagecontext

    b)         持久性:只要jsp实例存在,pagecontext就在(不会销毁)

    1. 作用:

    a)         绑定数据    注:绑定在pagecontext上的数据只有对应的jsp可以访问

    b)         获取其他所有隐含对象.

    config(a5.jsp)  servletconfig(jsp也可以设置配置信息并获取到)
    page(从来不使用)jsp实例,   注:jsp先转化成servlet,然后容器将这个servlet实例化.

    1. 注释

    I)          <!—注释内容 -->z注释内容是java代码会执行,但是因为外面是html注释,所以不会将时间显示到界面上

    II)        <%-- 注释内容 --%>注释内容是java代码不会执行,在这个注释中不论是不是java代码都不会执行.

     

    3      Jsp如何执行的?

    a)         将jsp转换为一个servlet类
    htmlàservice方法,使用out输出
    <%   %>à照搬
    <%=   %>àout输出
    <&!  变量或者方法  &>   添加新的属性或者方法

    b)         调用servlet

    4      Jsp标签和El表达式

                     1st.              什么是jsp标签?
    jsp标签类似于html标签,用于替代jsp中的java代码.
        注:因为直接在jsp中写java代码,不方便jsp文件的维护,比如讲jsp文件交给美工修改就很不方便,所以sun制定了jsp标签技术规范.

                    2nd.              什么是el表达式?
    是一套简单的运算规则,用于给jsp标签的属性赋值,也可以脱离标签直接使用.

                     3rd.              El表达式的基本使用

    1. 访问bean的属性(e1.jsp)

    I)          ${user.name}   容器依次从pagecontext,request,session,application中查找绑定名为user的对象.接下来会调用这个对象的gername方法并输出该方法的结果.
    注:如果找不到对应的对象,会输出””.
       会将null转换为””输出.
       可以使用pageScope,requestScope,sessionScope,applicationScope指定查找范围.

    II)        ${user[‘name’]}   
    注:

    1. []里可以使用绑定名
    2. []里面可以使用从0开始的下标,用于访问数组的某个元素.
    3. 运行一些简单的运算.
         注:运算结果可以直接输出也可以给属性赋值.
      1. 算数运算:+-*/%    注:+只能求和.
      2. 关系运算 < <= = > >= == !=;
      3. 逻辑运算 && || !
      4. 空运算 empty  判断是否为空是不是一个空字符串.找不到绑定也是true.
    4. 读取请求参数值(e3.jsp)
      1. ${param.name} 等价于 request.getParameter(string name)
      2. ${paramValues.city} 等价于request.getParameterValues(‘city’)

                     4th.              Jsp标签  jstl (java standard tag lib)àjava标准标签库

    1. Jstl是什么?
      Apache开发的一套jsp标签,后来捐献给sun,sun将其命名为jstl
    2. 如何使用jspl?
      1. 导包
      2. 使用指令taglib导入要使用的jsp标签.
        <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
        uri属性:指定要导入的标签的命名空间(命名空间”namesoace”是为了区分同名的元素在元素前面添加的一个限定,通常是一个域名)
        prefix属性:前缀,命名空间的别名.
    3. 几个核心标签

    I)          If标签

                                                                       i.              <c:if test=””>
    <c:if>
    当test属性值为true,容器执行标签体的内容.可以使用el表达式给test赋值,
    var属性:指定一个绑定名
    scope属性:指定绑定范围,page  request  session  application

                                                                     ii.              Choose标签(c2.jsp)
    <c:choose>
        <c:when test=””>
        <c:otherwise>
        <c:otherwise>
    </c:choose>
    when可以出现1次 otherwise可以出现0到1次

                                                                    iii.              ForEach标签(c3.jsp)
    <c:forEach  items=”” var=”” varStatus=””></c:forEach>

     

  • 相关阅读:
    libyuv 代码结构分析,借用其NEON/ARM64优化代码
    Android 交叉编译 IPerf3
    Android Change TCP Congestion Control
    Unpack & Repack Android system.img & data.img
    Android can only be built by versions 3.81 and 3.82
    Build Android Kernel && Kernel Module
    换行符
    python之%s、%d、%f的使用
    Python+selenium 实现不定位元素,输入enter键
    进程间通信 (IPC) 方法总结(三)
  • 原文地址:https://www.cnblogs.com/CaiNiao-TuFei/p/7732771.html
Copyright © 2011-2022 走看看