• 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>

     

  • 相关阅读:
    使用CustomValidate自定义验证控件
    C#中金额的大小写转换
    Andriod出错之Unable to build: the file dx.jar was not loaded from the SDK folder!
    VC 编写的打字练习
    机房工作笔记Ping只有单向通
    web服务协同学习笔记(1)
    Dll 学习3 将MDI子窗口封装在DLL中
    机房工作学习文件共享
    Andriod出错之Failed to find an AVD compatible with target 'Android 2.2'
    Andriod出错之wrapper was not properly loaded first
  • 原文地址:https://www.cnblogs.com/CaiNiao-TuFei/p/7732771.html
Copyright © 2020-2023  润新知