本帖最后由 巴拉巴拉x 于 2018-5-21 10:40 编辑
Session&JSP
Session
- Cookie本身有大小和个数的限制.,Session没有限制
- Cookie的数据是保存在客户端,Session的数据保存在服务器端
- Session的执行原理: 基于Cookie的,在服务器端创建一块区域,把这块区域的地址以Cookie的形式,保存到客户端.
- HttpSession(Session的全名),如何使用
- Session也是一个域对象
- 作用范围
- 创建:服务器第一次调用getSession()
- 销毁:三种情况
- session过期:默认的过期时间为30分钟
- 非正常关闭服务器(直接关电源),如果点击stop server ,则会把session序列化,再次启动服务器会再次加载
- 手动调用session.invalidate();
- 范围:多次请求,(一次会话:根本原因:存储SessionID的cookie的默认范围是一次会话)
- 配置
<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的异常信息,
- 通常设置全局的错误友好页面:
<error-page> <error-code>404</error-code> <location>/路径</location></error-page>
- include指令--->静态包含
- 属性file="路径",路径是相对路径.被包含部分是不需要些结构体的,只需要些代码.
- taglib指令:指示JSP引入标签库
- JSP的内置对象:可以直接使用.不用new 或者 get.
- 九大内置对象:名称,真实的类型
- request--->HttpServletRequest
- response--->HttpServletResponse
- session--->HttpSession
- application-->ServletContext.
- page--->Object
- pageContext-->PageContext
- 域对象.只在JSP中可以引用.
- 功能
- 获得其他的8个内置对象
- 编写通用性代码或者框架的时候:写方法的时候可以只传入一个参数,然后获取其他的8个内置对象,不用传入多个参数,简化方法中参数的数量.
- 向JSP的四个域中存取数据
- JSP的四个域范围
- PageScope
- RequestScope
- SessionScope
- ApplicationScope
- 三个方法都有重载方法,多的那个参数是确定是哪个域
- 特有方法
- 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="路径" />)
- 静态包含是赋值被包含的页面代码到主页面,然后再翻译,编译,执行
- 动态包含是各自翻译,编译,然后主页面把被包含的页面的结果拿来使用
- 静态的变量在主页面可以使用,动态的不可以使用,他只是把输出结果拿来使用.
|
|