黑马程序员技术交流社区
标题:
【石家庄校区】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