Web开发学习20200801

会话对象的使用

  1. 检索会话对象
  2. 存储会话属性
  3. 访问会话属性
  4. 销毁会话
    可使用部署描述符控制所有会话的生命周期
<session-config>
	<session-timeout>10</session-timeout>
</session-config>

Cookie 的定义

HTTP 允许一个 Web 服务器在客户机器上存储信息的机制,叫做 Cookie

  • Cookie 存储在客户的计算机上,Session 存储在服务器端
  • Cookie 在 Web 服务器的响应中发出
  • Cookie 的内容主要包括:名字,值,过期时间,路径和域
  • 该域(及路径)的所有 Cookie 在每一个请求中均发送给 Web 服务器
  • 不设置过期时间,Cookie 的生命期为浏览器会话期间,会话 Cookie一般不存储在硬盘上而是保存在内存里
  • 设置了过期时间,浏览器就会把 Cookie 保存到硬盘上
  • Cookie 具有生命周期,且在生命周期的最后由客户浏览器清除

Cookie API

HttpServletResponse 接口:addCookie(Cookie)
HttpServletRequest 接口:getCookies() : Cookie[]
Cookie 类:

定义
public class Cookie implements Cloneable

构造函数:
public Cookie(String name, String value);
用一个 name-value 对定义一个 cookie。这个 name 必须能被 HTTP/1.1 所接受。


使用 Cookies

通过将 Cookies 加到响应对象中,可将其存储在客户计算机上:

String name = request.getParameter("firstName");
Cookie c = new Cookie("yourname", name);
c.setMaxAge(24*60*60);
response.addCookie(c);

可从请求对象中检索 Cookies:

Cookie[] arr=request.getCookies();
for(Cookie c:arr){
	System.out.println("c.key="+c.getName()+",value="+c.getValue());
}

  1. 客户端第一次向服务器端发出请求,没有带 Cookie
  2. 服务器端检查请求中是否带有 Cookie–没有,在服务器端创建新的 session,并且为它绑定一个 sessionid
  3. 服务器端向客户端返回数据—resp。将 sessionid 加入到 Cookie 中,将 cookie 加入到 response 中,返回给客户端
  4. 返回的 Cookie 没有设置 MaxAGE,所以保存在浏览器的内存中
  5. 当客户端第二次向服务器端发送请求时,带着内存中的 cookie 一起到服务器端
  6. 服务器端检查请求中是否带有 Cookie—根据 Cookie 中的 jsessionid 查找对应的session

JSP页面的处理过程

  1. 请求进入 Web 容器,如果第一次访问 jsp 页面,JSP Parser 将 JSP 页面翻译成 Servlet 代码;如果不是第一次访问执行4
  2. 编译 Servlet 代码,并将编译过的类文件装入 Web 容器(JVM)环境
  3. Web 容器为 JSP 页面创建一个 Servlet 类实例,并执行 jspInit 方法
  4. Web 容器为该 JSP页面调用 Servlet实例的_jspService 方法,将结果发送给用户

开发及部署 JSP 页面

开发期间将 JSP 文件放在 web 目录下

部署时将其拷贝到如下层次中

webapps/
	 project/
 		WEB-INF/
			 web.xml
			 classes/
			 lib/
		index.html
		hello.jsp
		date.jsp

JSP脚本元素

脚本元素<% %>由 JSP 引擎处理;所有其它文本、脚本以外的元素均被作为响应的一部分

注释: <%-- comment --%>
指令标签: <%@ directive %>
声明标签:<%! Decl %>
脚本标签:<% code %>
表达式标签: <%=expr %>


将 jsp 翻译成 Servlet 的过程:

  • 指令标签 根据指令内容直接翻译到 Servlet 相应位置
  • 声明标签 定义的变量翻译成 Servlet 的属性;声明的方法翻译成 Servlet 的方法;定义的类翻译成 Servlet 的内部类;
  • 脚本标签 依照先后顺序,翻译到_jspservice 方法里
  • 表达式标签 封装 java 运行时表达式,其值直接到相应位置
  • 注释 不翻译到 Servlet 中

除上述脚本元素以外所有代码,按照先后顺序全部视为文本,翻译到_jspservice 方法里,
out.print 直接输出


Jsp 页面中的隐含对象

_jspService 方法中预定义的变量:

  • request 与请求相关的 HttpServletRequest 对象
  • response 与送回浏览器的响应相关的 HttpServletResponse 对象
  • out 与响应的输出流相关的 JspWriter 对象
  • session 与给定用户请求会话相关的 HttpSession 对象,该变量只在 JSP 页面参与一个 HTTP 会话时有意义
  • application 用于 Web 应用的 ServletContext 对象
  • config 与该 JSP 页面的 servlet 相关的 ServletConfig 对象配置
  • pageContext 该对象封装了一个 JSP 页面请求的环境
  • page 该变量与 Java 编程语言中的 this 变量等价
  • exception 由其它 JSP 页面抛出的 Throwable 对象,该变量只在―JSP 错误页面‖中可用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值