zoukankan      html  css  js  c++  java
  • 2021.1.4 Session,JSP EL

    Session
    1.概念
    他属于服务器端的一种会话机制,在一次会话多次请求数据的共享,将数据保存在服务器对象中 HttpSession

    快速入门
    常用的api方法有三个:
    setAttribute(String name,Object value) --->赋值
    getAttribute(String name) --->获取值
    removeAttribute(String name) --->删除会话中指的值
    原理:
    Session对象的实现需要依赖Cookie,没有cookie的Session对象不是Session
    注意:并没有消失,而是在后台的管理端
    两次打开客户端,服务器端不关闭,关闭之后并没有消失,而是在后台管理端,两次并不是后取得同一个Session对象一般来说每次打开一个新的服务器,那么session对象id就需要手动指定
    如果需要每次打开服务器的时候都是id相同的session对象,那么就需要手动指定cookie中的JSESSIONID,通过响应头的形式发送给客户端,设置cooklie存活时间
    代码演示
    Cookie cookie = new Cookie("JSESSIONID", session.getId());//手动指定对象
    cookie.setMaxAge(60);//cookie的存活时间
    response.addCookie(cookie);//通过响应头发送给客户端本地

    客户端不关闭:服务器关闭的时候两次获取的Session对象肯定不是一样的,Tomcat服务器内部做了优化会自动完成两项工作
      第一项工作:Session的钝化::就是实现序列化--->把Session对象中的数据以文件形式保存在客户端本地
      第二项工作:Session的活化::通过反序列化--->把之前存的值,提取到内存当中,使得我们可以取得这个值
    Session销毁时机
      1.服务器关闭的时候Session就会关闭
      2.Session对象默认存活30分钟,通过标签Session-config可以修改
      3.手动失效,通过session.invalidate()方法销毁,再次调用只能用request.getSession()获得新的对象
    Session的特点:
      1.Session数据是保存在度武器端的,Cookie的数据是保存在客户端的,
      2.Session数据存储没有大小限制,Cookie有大小限制,单个Cookie的默认大小为4kb同一个域名下最多20个Cookie
      3.Session数据在服务器端,看不见相对安全,Cookie在客户端,看得见不是很安全
    

    JSP
    1.概念
    支持java语言编写的运行在服务器端上的页面
    JSP = HTML + JAVA
    就是精简化的Servlet代码
    JSP原理就是Servlet

    JSP原理图

    由此客店HTML静态页面更快,JSP动态页面更慢

    JSP脚本:JSP定义使用javba代码的规范
    第一种方式:<% java代码 %> --->被Tomcat解析之后生成代码文件在service方法里面就能看见这个代码
    第二种方式:<%! java代码 %> --->被Tomcat解析之后,生成的代码文件位置在Servlet的成员变量位置,可以定义成员方法和成员属性.
    第三种方式:<%= java代码 %> ---->被Tomcat解析之后,生成的代码信息,会出现在页面上面,相当于通过打印流输出或者写入到页面当中

    代码演示

    我是一个大标题

    <% /必须卸载这里面才能被解析为java代码,并且输出再控制台不输出在页面/
    /代码显示是显示在service()方法里面的,其实就相当于在servicwe里面写的哦/
    String name="张三";
    System.out.println(name);
    %>

    <%--显示在成员变量和成员方法--%>
    <%!
    String str="小孙";
    public void insertDate(){
    System.out.println("helloword");
    }
    %>


    <%--通过打印流写入到页面当中--%>
    <%--就是输出上面的str--%>
    <%=str

    %>

    $END$

    JSP九大内置对象
    不同创建就能直接使用的对象称为内置对象
    九大内置对象
    内置对象 真实对象 作用
    1.request HttpSeervletRequest 获取请求资源,request域对象(一次请求多个资源共享)
    2.response HttpServletResponse 响应,响应的数据封装到响应当中
    3.session HttpSession 实现多个用户之间数据共享
    4.out jspWrite 输出对象,把信息输出到页面当中
    5.config ServletConfig 配置Servlet内置信息
    6.exception Throwable 异常对象(当前页面需要申明 isErrorpage = true)
    7.pageContext PageContext 全局对象代表整个应用
    8.application ServletContext 指代当前Servlet对象或者页面,指代当前页面
    9.page

    JSP指令
    用来配置当前jsp页面可以插入一些外部资源
    语法格式:
    <%@ 指令名称 属性值 = 属性值 属性名 = 属性值 %> 多个之间用空格隔开
    分类:
    page:----->用来配置当前的页面
    contentType---->response.setContentType="text/html:charset=UTF-8",把字符编码集设置为UTF-8,响应体为:text/html
    设置当前页面的编码:也可以用pageEncoding=UTF-8
    import---->导包会用到的动作,导入外部的一些类哦库资源,比如Arrays之类的包
    errorPage--->作用是当前页面发生错误,跳转到哪一个页面,客户端异常会跳出404而不是错误页面
    isErrorPage--->后面更true表示打开errorPage这个指令的作用,如果不打开,即使页面错误也不会跳转
    include指令--->是包含的意思,包含其他的页面信息
    语法格式:<%@ include file = "资源路径" %> 或者 <jsp:include page="footer.jsp"></jsp:include>
    taglib:引入外部标签库资源
    语法格式: <%@ taglib prefix = "前缀" uri="资源路径" %>,前缀可以自定义一般是用c
    注释:注释之后客户端不会显示,服务器端注释不会发送
    代码演示

    MVC开发模式
    1,.概念:

    • M:model 模型---->javaBean
      • 用于封装数据和处理业务逻辑(三层架构) 逻辑这一块嫁给了Service处理
    • V:view 视图----->JSP
      • 展示后端里面的数据
    • C:Controller 控制器---->Servlet表示---->相当于一个核心大脑,,连接视图和模型关联起来
      • 获取表单输入的数据,
      • 关联模型和视图
      • 给客户端响应一些业务结果.先把数据传输给视图,视图把数据解析完成之后传输给浏览器显示

    EL表达式
    1.概念
    EL表达式只能在jsp页面不能再HTML页面
    2.作用
    简化jsp中的java代码
    3.语法
    ${ 表达式 }
    注意事项
    对于就是破页面默认支持表达式,如果想忽略el表达式
    第一种:isEllgoned = "true" 禁止当前页面使用el表达式
    第二种:${ 表达式 } 前面加一个 就表示忽略

    具体使用
    运算:

    • 运算符

      • 算数运算符: + - * / %
      • 比较运算符 : > < >= <= != ==
      • 逻辑运算符: && || !
      • 空运算符 empty
        • 判断域中的对象是否为空,对象为null或者对象为容器,容器长度为0
        • 语法格式:${ empty 目标对象 } 判断字符串,数组,集合是否为null或者长度为0,为空返回true
        • 不为空:${ not empyt 目标对象 } 判断字符串数组集合不为null并且长度也不为0,不为空返回true
    • 从域中取值:

      1. request(第三,一个请求可以跨越多个资源)
      2. ServletContext(范围最大,全局只有一个)-
      3. session(第二,)
      4. pageContext(第四只能在当前页面中使用)
      • 在饿了表达式汇中对应名字: applicationScope > SessionScope > requestScope > pageScope
    • el表达式只能从域中取值

      • 语法格式: ${ 域名称.key名称 }
    • el取值的时候:有时候可以省略域名称

      • 语法格式: ${ key名称 } ------ 从最小的域中到最大的域中依次查询知道查到位置
      • 如果没有查到也不显示,也不会报错.
      • 获取域中存取对象的属性值,属性值映射get方法跟后面的名字 例如:getAge-----对象.age
      • 格式: ${ 对象.参数名称 }
      • 优化写法
        • list集合: ${ key名称[ 索引 ] }
        • map集合: ${ 域key值 [ "map的key值" ] } 或者 ${ 域key值.map的key值 }
      • 隐式对象的获取:可以通过pageContext获取到其他八大内置 对象

    代码演示

  • 相关阅读:
    Java-Class-C:org.springframework.util.Assert.java
    获取数组中最大最小值方法
    1423 Greatest Common Increasing Subsequence (LCIS)
    Strange Addition
    APUE读书笔记-第15章-进程间通信
    【技术文档】开发一个人力资源管理系统遇到的问题及解决的方法
    picture control控件
    armlinux下的网路传输(tcp/ip)
    黑马程序员—面向接口编程的好处
    【.NET中AOP的实现方案】静态代理
  • 原文地址:https://www.cnblogs.com/tushao/p/14279924.html
Copyright © 2011-2022 走看看