A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 巴拉巴拉x 初级黑马   /  2018-5-21 10:38  /  443 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 巴拉巴拉x 于 2018-5-21 10:40 编辑



Session&JSP



Session

  • Cookie本身有大小和个数的限制.,Session没有限制
  • Cookie的数据是保存在客户端,Session的数据保存在服务器端
  • Session的执行原理: 基于Cookie的,在服务器端创建一块区域,把这块区域的地址以Cookie的形式,保存到客户端.
  • HttpSession(Session的全名),如何使用
    • 获得Session
      • request.getSession();

  • Session也是一个域对象
    • 作用范围
      • 创建:服务器第一次调用getSession()
      • 销毁:三种情况
        • session过期:默认的过期时间为30分钟
        • 非正常关闭服务器(直接关电源),如果点击stop server ,则会把session序列化,再次启动服务器会再次加载
        • 手动调用session.invalidate();
      • 范围:多次请求,(一次会话:根本原因:存储SessionID的cookie的默认范围是一次会话)
    • 配置
      • 在项目的web.xml文件中配置
      <session-config>    <session-timeout>5</session-timeout></session-config>
      • 值的单位是分钟


JSP概述

  • 什么是JSP
    • Java Server Pages:Java服务器端的页面
  • 为什么要学习JSP
    • SUN公司推出的Servlet自身有缺陷,竞争力不足
  • 使用JSP
    • JSP=HTML+Java代码 + JSP内置的东西
  • 执行流程
    • jsp被翻译成一个java文件,并编译成.class文件,然后执行
  • JSP 的脚本
    • <%! 内容 %> :翻译成Servlet中的成员内容,定义变量,方法,类.不建议使用,有线程安全问题
    • <% 内容 %> :翻译成Servlet中service方法内部的内容,定义类,变量(内部类,局部变量)
    • <%= 内容 %>:翻译成Servlet中,out.print(内容).
  • JSP的注释
    • HTML的注释 : --->存在于JSP源代码,Java代码中,生成的HTML中也有.
    • Java代码的注释 :// 单行注释 / * 多行注释 */ 文档注释--->要写到<% 注释 %>内部--->存在于JSP源代码中,翻译的Servlet中,都有,编译的.class文件中没有
    • jsp的专用注释
      • <%-- 注释 --%>:只会存在于JSP的源代码中,翻译成Servlet后,JSP的注释就消失了
    • HTML注释,不能注释Java代码.
    • 什么样的代码用什么样的注释
  • JSP的指令
    • 指令的语法
      • <%@ 指令名称 属性名称="属性值" 属性名称 = "属性值" %>
    • 三大指令
      • page指令, include指令,taglib指令
      • page指令
        • <%@ page %>--->设置JSP的
          • language:JSP脚本中使用的语言,限制只能写Java
          • contentType:设置浏览器打开这个JSP的时候采用的默认的字符集的编码
          • pageEncoding:设置文件保存到本地硬盘的时候,以及生成Servlet后Servlet保存到硬盘上的编码
          • import:在JSP中引入类对象,可以出现多次.
          • extends:设置JSP反应成Servlet后继承的类,默认值:...HttpJspBase类,一般不该,要改也只能改成HTTPServlet的子类
          • autoFlush:设置JSP的缓存自动刷出,默认值是true:自动刷出
          • buffer:"8kb",一般不改,设置JSP缓冲区的大小,默认值是8KB
          • session:设置在JSP中能否直接使用session.
          • isDLIgnored:是否忽略EL表达式,默认false,不忽略,就是可以解析EL表达式
          • errorPage:设置错误友好页面的提示,="如果出现错误显示的页面位置"
          • isErrorPage:通过这个设置是否显示JSP的异常信息,
            • 通常设置全局的错误友好页面:
              • 在web.xml中设置.
              <error-page>    <error-code>404</error-code>    <location>/路径</location></error-page>


      • include指令--->静态包含
        • 属性file="路径",路径是相对路径.被包含部分是不需要些结构体的,只需要些代码.
      • taglib指令:指示JSP引入标签库
        • uri="路径"
        • prifix="标签的别名"


  • JSP的内置对象:可以直接使用.不用new 或者 get.
    • 九大内置对象:名称,真实的类型
      • request--->HttpServletRequest
        • 域对象
      • response--->HttpServletResponse
      • session--->HttpSession
        • 域对象
      • application-->ServletContext.
        • 域对象
      • page--->Object
        • 就是JSP被翻译成Servlet后的类的引用.
      • pageContext-->PageContext
        • 域对象.只在JSP中可以引用.
        • 功能
          • 获得其他的8个内置对象
            • 编写通用性代码或者框架的时候:写方法的时候可以只传入一个参数,然后获取其他的8个内置对象,不用传入多个参数,简化方法中参数的数量.
          • 向JSP的四个域中存取数据
            • JSP的四个域范围
              • PageScope
                • 当前页面中有效
                • pageContext
              • RequestScope
                • 一次请求响应的范围
                • request
              • SessionScope
                • 一次会话的范围
                • session
              • ApplicationScope
                • 应用范围
                • application

            • 三个方法都有重载方法,多的那个参数是确定是哪个域
            • 特有方法
              • findAttribute(name).寻找的优先级
                • pageContext > request > session > application




      • config--->ServletConfig
      • out--->JspWriter
        • out和response.getWriter是不是同一个对象?区别是什么?
        • response.getWriter的对象的数据类型是PrintWriter
        • JspWriter和PrintWriter都有各自的缓冲区
          • response响应到页面的时候,是把PrintWriter的缓冲区写到页面,而加载的时候是把JSPWriter的缓冲区内容加载到PrintWriter缓冲区中,然后再响应到页面,所以要注意顺序.所有响应的东西都会封装到response对象,然后响应回客户端.

      • exception--->Throwable :设置isErrorPage 的值为 true;

  • JSP的动作标签:至少记住6个
    • 一系列动作标签
    • 为了代替一部分Java代码:简化书写
    • 都是标签
    1,<jsp:forward />:用于页面转发
  • 2,<jsp:include />:用于页面包含,动态包含
  • 3,<jsp:param />:用于带有路径的标签下,传递参数
  • .4,<jsp:usrBean />:
  • 5,<jsp:setProperty />
  • 6,jsp:getProperty />
    • 动态包含和静态包含的区别(<jsp:include page="路径" />)
      • 静态包含是赋值被包含的页面代码到主页面,然后再翻译,编译,执行
      • 动态包含是各自翻译,编译,然后主页面把被包含的页面的结果拿来使用
      • 静态的变量在主页面可以使用,动态的不可以使用,他只是把输出结果拿来使用.




0 个回复

您需要登录后才可以回帖 登录 | 加入黑马