黑马程序员技术交流社区

标题: 【石家庄校区】Session的概述 [打印本页]

作者: Victoria花花    时间: 2018-2-4 15:47
标题: 【石家庄校区】Session的概述
本帖最后由 小石姐姐 于 2018-2-8 14:47 编辑

Session的概述

【Session的概述】
Cookie本身是有大小和个数的限制.
Session没有限制.
Cookie的数据保存在客户端,
Session数据保存在服务器端.
Session的执行原理:基于Cookie的.
使用Session:
获得Session:
request.getSession();
Session是域对象:
setAttribute();
getAttribute();
removeAttribute();
session何时创建和销毁?作用范围:
服务器第一次调用getSession();是创建session
----->如果携带的cookie有JSSESSIONID的话,就会打开对应的区域,如果没有JSSESSIONID,就会创建一个区域
销毁:三种情况销毁session:
1.session过期. 默认过期时间为30分钟.
在Tomcat的conf中找到web.xml找到session把30改为0 则可以永久保存session        
2.非正常关闭服务器.如果正常关闭session将序列化到硬盘. -->如果session存有对象,这个对象需实现先序列化接口
3.手动调用session.invalidate();
--> 一般用不到,我们平时销毁一个数据使用removeAttribute();
作用范围:多次请求.(一次会话)
【JSP的概述】
什么是JSP:
Java Server Pages(Java服务器端的页面)
HTML +Java代码+jsp内置对象
为什么要学习JSP:
SUN公司推出的Servlet自身有缺陷,没有办法与ASP,PHP进行竞争.推出了动态网页开发技术JSP.
使用JSP:
JSP = HTML + Java代码 + JSP自身的东西.
执行JSP的过程:
JSP翻译成Servlet,编译这个Servlet的类,生成class文件.得到执行.
【JSP的脚本】
<%!   %>    :翻译成Servlet中的成员内容. 定义变量,方法,类. -- 不建议,会存在线程安全问题.
<%    %>    :翻译成Servlet中service方法内部的内容. 定义类,变量
<%=   %>    :翻译成Servlet中service方法中out.print(); --- 不能加分号;
【JSP的注释】-了解
HTML的注释      :<!-- 注释 -->
会一直存在至生成的HTML文件中
注意:HTML注释注释不了Java的片段
Java代码的注释   :// 单行注释 /*多行注释*/ /** 文档注释*/
单行注释,翻译成servlet后注释存在,但是执行完JSP后生成HTML后,注释就消失了
JSP的注释       :<%-- JSP的注释 --%>
JSP注释:只会存在于JSP中,翻译成Servlet后,JSP注释就消失了
【JSP的指令】
指令的语法:
<%@ 指令名称 属性名称=”属性值” 属性名称=”属性值” ...%>
JSP中有三个指令:
page指令
include指令
能够将其他页面包含进来
taglib指令.
JSP中page指令:<%@ page %> -- 设置JSP的.
language  :JSP脚本中使用的语言.现在只能写java.
contentType :设置浏览器打开这个JSP的时候采用的默认的字符集的编码.
pageEncoding :设置文件保存到本地硬盘,以及生成Servlet后,Servlet保存到硬盘上的编码.不需要更改
import  :在JSP中引入类对象.但是import可以出现多次.(其余只能出现一次)
    <%@pageimport="java.util.ArrayList"%>
    <%@page import="java.util.List"%>
extends      :设置JSP翻译成Servlet后继承的类,默认值:org.apache.jasper.runtime.HttpJspBase,这个值要想修改,这个类必须是HttpServlet的子类
---------缓存区域的设置--------
autoFlush :设置JSP的缓存自动刷出.true:自动刷出.
buffer :设置JSP的缓冲区的大小,默认8kb.
session :设置在JSP中是否可以直接使用session对象.默认值是true.
isELIgnored   :设置在JSP中是否忽略EL表达式.默认值是false不忽略.
--------errorPage与isErrorPage 一起使用-----------
errorPage  :设置错误友好页面的提示.
isErrorPage  :通过这个设置显示JSP的错误信息.
------------以下是全局的,在公司中-------------
设置全局的错误友好页面:
在web.xml中设置:
  <error-page>
    <error-code>404</error-code>
    <location>/404.jsp</location>
  </error-page>
  <error-page>
    <error-code>500</error-code>
    <location>/500.jsp</location>
  </error-page>
JSP中的include指令:指示JSP包含其他的页面.
<%@ include file="logo.jsp" %>
<%@ include file="menu.jsp" %>
<h1>BODY部分</h1>
<%@ include file="footer.jsp" %>
JSP中的taglib指令:指示JSP引入标签库.
<%@ taglib uri="标签的URI的路径" prefix="标签的别名" %>
【***JSP的内置对象***】
JSP的内置对象:在JSP中可以直接使用的对象.
JSP中有9大内置对象:
对象                       ***                                      方法举例
request               HttpServletRequest               getParameter(),setAttribute(String name,Object value);
1.作为域对象        2.获取客户节相关信息(请求方式,请求路径,请求ID,请求头)
response               HttpServletResponse       setHeader(String name,String
1.设置响应头
2.设置相应码
3.设置状态码
value);getOutputStream();getWriter();
1.作为域对象 ---->回话技术
注意:需要使用一把钥匙才能打开session,这个钥匙其实就是cookie这个cookie的JSESSION
session               HttpSession                       setAttribute();getAttribute();
1.获取全局函数        2.获取mime类型        3.作为全局域对象        4.读取web的资源文件
application        ServletContext               setAttribute();getAttribute();
pageContext        PageContext                      setAttribute();getAttribute();
1.获取其他八个内置对象
2.可以向四个域中存储东西
requestScop
sessionScope
applicationScope
pageScope
pageContext.findAttribute(); -- 从小到大检索四个域,直到找到符合要求的
page               Object                              toString();wait();
了解一下,他代表的就是jsp生成Servlet对象,他是单例的
config               ServletConfig                       getServletName();getServletContext();
out                       JspWriter                              write(),print();
JSPWriter 和 resopnse.getWrite()是有区别的
response.getWrite()才能真正的设置相应体
exception               Throwable                       getMessage(),getCause();          设置isErrorPage=”true”
        exception.printStackTrice();
page内置对象(是单例的) :
真实对象是Object,就是JSP翻译成Servlet后的类的引用.
out内置对象:
out和response.getWriter是不是同一个对象?区别是什么?
不是,out真实对象JspWriter ,response获得Writer是PrintWriter.

pageContext内置对象 :(也是域对象)
获得其他的8个内置对象  :
编写通用性代码或者框架的时候.
向JSP的四个域中存取数据 :
JSP的四个域范围:(从小到大)
对象                               真实对象
PageScope:当前页面中有效(转发无效).        pageContext               PageContext
RequestScope:一次请求范围.                      request                       HttpServletRequest
SessionScope:一次会话范围.                      session                       HttpSession
ApplicationScope:应用范围.                      application               ServletContext
【JSP的动作标签】列出6个.
<标签的作用:简化代码.>
<jsp:forward /> :用于页面的转发.
<jsp:forwardpage="/demo1-jsp/demo3-object/demo3.jsp"></jsp:forward>
<jsp:include /> :用于页面的包含.(动态包含
静态包含和动态包含的区别
静态包含:相当于复制原码 - 相当于多个jsp在同一个类中
静态包含:只要运行结果 - 多个jsp分别在不同类中
<jsp:param /> :用于带有路径的标签下,传递参数.(一般是getAttribute和setAttribute来传递参数)
<jsp:param name="" value=""/>
作用:        一般和路径结合使用
携带参数
<jsp:useBean /> :用于在JSP中使用JavaBean.
<jsp:setProperty /> :用于在JSP中向JavaBean设置属性的.
<jsp:getProperty /> :用于在JSP中获得JavaBean的属性.







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2