• Session、MVC、JSP和EL表达式


    Session

    概念

    它属于服务器端的一种会话机制,在一次会话的多次请求中实现数据的共享,将数据保存在服务器端的对象中。

    HttpSession

    • 快速入门:

      • 常用的api方法:

      • 获取session:request.getSession()

      • 三个方法:

    setAttribute(String name,Object value) 存储值
    getAttribute(String name): ------>Object value 获取指定的值
    removeAttribute(String name): 删除会话中指定的值
    • 原理:Session对象的实现需要依赖于Cookie

    • 注意:

      • 两次打开客户端,服务器端不关闭,两次是否获取的是同一个session?

        • 默认情况下:不是

        • 需要手动指定cookie中的JSESSIONID,通过响应头的形式发送给客户端,设置cookie的存活时间

        • 步骤:

           Cookie cookie = new Cookie("JSESSIONID", session.getId());
           cookie.setMaxAge(60);
           response.addCookie(cookie);
      • 客户端不关闭,服务器端关闭,两次获取的session对象是不是同一个对象?

        肯定不是,tomcat服务器内部做了优化,自动完成两项工作

        • session的钝化:序列化

        • session的活化:反序列化

      • session对象的销毁时机?

        • 服务器关闭

        • session对象的存活时间 默认时间为30分钟

          修改session默认存活时间

          <session-config></session-config>

        • 手动失效 invalidate() 销毁session对象

      • session特点:

        • session数据是保存在服务器端,cookie是保存在客户端中

        • session数据存储没有大小限制,cookie有,默认大小为4kb,同一个 域名下总cookie数量限制在20个以内

        • session数据是较为安全的,cookie数据相对不安全。

    JSP

    概念

    Java Server Pages: 支持Java语言编写的运行在服务端上的页面。

    JSP =HTML+JAVA

    简化Servlet代码

    原理

    • JSP本质上就是一个Servlet

    JSP脚本:

    • 概念:JSP定义使用 Java代码的方式、规范

    • 第一种方式: <% java代码 %> 。被tomcat解析之后生成的代码是存放在哪个位置 service()方法中

    • 第二种方式: <%! java代码 %>。被tomcat解析后生成的代码文件,位置在Servlet类的成员位置。可以定义成员变量也可以定义成员方法。

    • 第三种方式: <%= java代码 %> 。 被tomcat解析后生成 的代码信息,会出现在页面中 通过打印流写入到页面中

    JSP九大内置对象

    • 在jsp页面中不用创建可以直接使用的对象,称之为内置对象

    • 九大内置对象:

    内置对象 真实对象类型 作用
    request HttpServletRequest 获取请求资源,request域对象(一次请求多个资源共享)
    response HttpServletResponse 响应,响应的数据封装到响应对象
    session HttpSession 实现多个用户之间数据共享
    out JspWriter 输出对象,把信息输出到页面中
    config ServletConfig 配置Serlet信息
    exception Throwable 异常对象 (当前页面需要声明 isErrorPage = true)
    pageContext PageContext 当前页面实现数据共享
    application ServletContext 全局域对象 代表整个web应用
    page Object(当前Servlet对象--->当前页面) 当前页面
    • JSP指令

    • 作用:配置当前jsp页面,可以导入一些外部资源

    • 语法格式:

      • <%@ 指令名称 属性名= 属性值 属性名2 = 属性值2 ....%>

    • 分类:

      • page -----> 配置当前的页面

        • contentType:等同于 response.setContentType("text/html;charset=utf-8")

          设置响应体的mime类型以及编码字符集

        • 设置当前页面的编码 可以使用pageEncoding = UTF-8

        • import : 导包 导入外部的一些类库资源

        • errorPage : 指定当前页面发生异常跳转的目标页面,会自动跳转过去

        • isErrorPage:确定是否使用exception内置对象 true-->使用 false-->不用,同时标识本页面为错误页面

      • include: ----> 包含其他页面信息

        • 语法格式: <%@ include file = "资源路径" %>

        • 结合使用 <jsp:include file = "资源路径">

      • taglib: 引入外部的标签库资源

        • 语法格式: <%@ taglib prefix = "前缀" uri = "资源路径" %> 前缀可以自定义,但是一般使用默认的

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    • 注释:

      • html注释

        • 格式: <!-- html注释内容 -->

      • jsp注释: 一般使用jsp注释

        • 格式: <%-- java代码、html代码 --%> 客户端是不显示的,服务器端对于jsp注释是不发送的。

    MVC:开发模式

    • 概念:

      • M:Model 模型-----> JavaBean

        • 用于封装数据、处理业务逻辑(三层架构)--->Service

      • V: View 视图-----> JSP

        • 展示数据

      • C: Controller 控制器------>Servlet 中枢大脑

        • 获取表单输入的数据

        • 关联模型和视图

        • 给客户端响应一些业务结果(需要首先把数据传输给视图)

    EL表达式

    • 概念:Expression Language 表达式语言 只能在JSP页面上使用

    • 作用:简化jsp页面中的java代码

    • 语法: ${表达式}

    • 注意事项:

      • 对于jsp页面默认是支持el表达式。如果想要忽略el表达式

        • 第一种 使用 isELIgnored = “true” 禁止当前页面使用EL表达式

        • 第二种:

           ${表达式} 忽略掉当前的EL表达式   如  ${3 > 4 ? true : false}
    • 具体的使用:

      • 运算:

        • 运算符:

          • 算术运算符 + - * / %

          • 比较运算符 > < >= <= != ==

          • 逻辑运算符 && (and) 与 || (or ) 或 !(not) 非

          • 空运算符 empty

            • 功能:判断域中存储的对象是否为空 对象为null或者给对象为容器,容器的长度为0

            • 语法格式: ${empty 目标对象}:判断 字符串、数组、集合是否为null或者长度为0------>或

            • 不为空 ${not empty 目标对象}:判断字符串、数组、集合不为null并且长度也不为0---->与

            • ${empty 目标对象} 如果为空返回true 如果不为空返回false

            • ${not empty 目标对象} 如果为空返回false,如果不为空返回true

      • 从域中取值 request、ServletContext session pageContext

        • 大小范围 : ServletContext > session > request > pageContext

        • 在EL表达式中有对应的名字 applicationScope > sessionScope > requestScope > pageScope

      • el表达式只能从域中取值

        • 语法格式: ${域名称.key名称}

      • EL取值时可以省略域名称

        • 语法格式: ${key名称} 取值顺序:从最小的域中到最大的域中查找,直到查到为止。

          如果没有查到,不显示,也不报错。

        • 获取域中存储的对象中属性值:

          语法格式:${对象名称.属性名称}

          注意事项:映射JavaBean中的方法后面的名字 如getAge()----> Age---->age

          获取集合中对象的属性值

          list集合: ${key名称.get(索引).属性名}

          map集合: ${key名称.get(key名称).属性名}

          • 优化做法:

            • list集合: ${域名城.key名称[索引]}

            • map集合: ${域名城.key名称["key名称"]}

              ${域名城.key名称.key名称}

        • 隐式对象获取方式: 可以通过pageContext获取到其他八大内置对象

        • EL表达式中有11个隐式对象

  • 相关阅读:
    【20190226】JavaScript-知识点记录:dom0级事件,dom2级事件
    【20190226】CSS-知识点记录::nth-child,:nth-of-type
    【20190223】HTTP-知识点整理:HTTPS
    【20190221】HTTP-URI与URL
    【20190220】HTTP-知识点整理:TCP/IP与HTTP
    【20190220】JavaScript-知识点整理:对象创建方式、原型、闭包
    【20190219】CSS-知识点整理:float、em、浏览器的渲染过程
    【20190201】天猫首页仿站写完了
    CSS动画
    css工程化
  • 原文地址:https://www.cnblogs.com/lk625/p/14278969.html
Copyright © 2020-2023  润新知