黑马程序员技术交流社区
标题:
【石家庄校区】Session&JSP
[打印本页]
作者:
巴拉巴拉x
时间:
2018-5-21 10:38
标题:
【石家庄校区】Session&JSP
本帖最后由 巴拉巴拉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="路径" />)
静态包含是赋值被包含的页面代码到主页面,然后再翻译,编译,执行
动态包含是各自翻译,编译,然后主页面把被包含的页面的结果拿来使用
静态的变量在主页面可以使用,动态的不可以使用,他只是把输出结果拿来使用.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2