笔记

今天内容:
	1.jsp介绍(了解)
	2.cookie(重点)
	3.session(重点)
	
====================================================
	复习:
		response
			处理http响应
			setStatus(int c)
			setHeader()
			ServletOutputStream	response.getOutputStream();
			PrintWriter	response.getWriter();
		
			响应数据的乱码:
				setCharacterEncoding();
				setHeader("Content-Type","");
				setContentType();				
				
		request
			getMethod();
			getRequestURI();
			getRequestURL();
			getProtocol();
			
			getRemoteAddr();
			getContextPath();
			
			获取请求参数
				String getParameter(String name);
				String[] getParameterValues(String name);	
				Enumeration getParameterNames();
				Map<String,String[]> getParameterMap();
				
		重要概念
			request域
				生命周期:请求发送到服务器,创建request,response对象,当响应产生时,request,response销毁。
				它的作用域,是在请求转发的练中.
				
			请求转发:
				RequestDispatcher rd= request.getRequestDispatcher("/资源路径");
				rd.forward(request,response);
				
			重定向
				response.sendRedirect("/虚拟目录/资源路径");
				
	=====================================================================			
	1.jsp
		jsp:java server page
		jsp作用:jsp本质上也是一个servlet,它解决了servlet做展示不方便问题.
		
		jsp可以简单理解成:在html中嵌入了java代码.
		servlet:在java代码中嵌入了html代码.
		
		jsp基本原理:
			查看图
			
		jsp脚本元素
			<%!   %>  所写的内容会生成成员位置上。
			<%     %>  所写的代码会生成_jspService方法中,也就是局部位置。
			<%=    %>  它是将信息直接输出到页面  out.println():
			
		获取各种域中存储的数据
		<%=request.getAttribute(“name”);>
		 ${requestScope.name}
		 
	=====================================================	 
	2.会话技术
		什么是会话?			
			会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。
		会话技术有什么用?
			通过会话技术可以存储用户在一次会话过程中产生的数据。
			
		对于我们开发,使用的是http协议,它是无状态协议。	
		
	========================================================
	会话有两种:
		cookie:客户端会话技术
		session:服务器端会话技术。
		
	3.cookie		
		Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。

	4.关于cookie的API
		
		1.创建cookie
			javax.servlet.http.Cookie类
			
			Cookie cookie=new Cookie(String name,String value);
			
		2.通过cookie对象获取name,value
			String cookie.getName();获取名称
			String cookie.getValue();获取值.
			
		3.怎样将cookie携带到浏览器与怎样从请求中获取cookie。
			response.addCookie(Cookie c);			
			Cookie[] request.getCookies();
			
	问题:为什么第二次访问时,cookie信息会带到服务器端?
		原因:是因为cookie是有path的。
		setPath()去设置其cookie的路径,那么当访问这样的路径时,cookie信息就会携带到服务器端。
		
		可以简化写成 setPath("/");
		
	5.cookie示例---显示用户上一次访问时间
	
	6.cookie持久化问题
		默认情况cookie是会话级别,它是存储在浏览器内存中,如果关闭浏览器,cookie消失.
		
		可以通过setMaxAge这个方法来将cookie设置为持久化.
		
	7.删除持久化cookie
		setMaxAge(0); 直接删除
		setMaxAge(负数); 浏览器退出时,才删除cookie文件.
		
		注意:要想删除,必须要保证path值一致.
		
	==========================================================
	cookie示例:显示浏览商品信息
		
		
===============================================================================================
	session
		服务器端的会话技术.
		session也是一个域对象.setAttribute()  getAttribute();
		它的真实类型是HttpSession.要想获取一个session对象,通过request对象获取 
			HttpSession session=request.getSession();
			
			getSession()这个方法,它会根据http请求中的cookie是否存在jsessionid这样的值,如果存在,
			会在服务器中根据jsessionid值去查找内存中是否存在对应id的session对象。如果有,直接拿来使用,
			如果没有,创建一个新的session对象。
			
	session示例--购物车功能	
		
	=======================================================
	1.关于session失效
		1.session有默认失效时间
			在tomcat/conf/web.xml
			<session-config>
				<session-timeout>30</session-timeout>
			</session-config>
			这个就是session的默认失效时间 30分钟.
			
		2.关闭服务器
			当正常关闭服务器时,会将session持久化到文件中。
			
		3.HttpSession类中提供session销毁操作方法	
			public void invalidate()
			销毁session。
			
		4.HttpSession类中设置session失效时间
				public void setMaxInactiveInterval(int interval)
					以秒为单位
			
	2.禁用浏览器后的session处理
		例如:
			http://localhost:8080/day12_2/one 它会创建一个session,并向session中存储 setAttribute("username","张三");
			这次创建session时的id 是 804C967456B1D4318E76F17D6E2C0123
			
			在次访问
			http://localhost:8080/day12_2/two,它会得到一个session,并从session中获取 getAttribute("username");
			如果cookie没有禁用,那么会得到张三.
			
			但是cookie禁用了,第二次得到的又是一个新的session对象,就得到了null.
			
			现在
			http://localhost:8080/day12_2/two;jsessionid=804C967456B1D4318E76F17D6E2C0123;
			就会在two这个servlet中得到张三信息.
			
		解决方案是使用url重定.
			URL重写
			response. encodeRedirectURL(java.lang.String?url) 
			用于对sendRedirect方法后的url地址进行重写。
			response. encodeURL(java.lang.String?url)
			用于对表单action和超链接的url地址进行重写 
			
	===============================================================================
	示例----一次性验证码
		
		
	===================================================
	Servlet中的三个域对象
		
		ServletContext  生命周期   与web应用是一样。
		HttpSession     生命周期    
		HttpServletRequest  生命周期  请求来创建,响应回去销毁。	
		
		
		这三个都是域对象.
			setAttribute()
			getAttribute()
			removeAttribute();
			
	问题:什么时候使用域对象?
		 只要能使用request解决的就使用request.
		 
		ServletContext用于存储全局数据---与当前工程有关信息.
		HttpSession,用于存储会话过程产生的数据,一般情况下,是与用户相关的信息。
		HttpServletRequest 这个只有在请求转发过程中才存在。它一般存储错误信息。
		
	===================================================================================	
	总结:
		cookie
			1.创建cookie
			2.怎样将cookie携带到浏览器端
			3.怎样从请求中获取cookie.
			4.cookie的持久化与删除
				setMaxAge()
				setPath();
			5.关于cookie信息(浏览器中最多可以有300个cookie,每个站点有20个cookie,cookie最大4kb)
				
			代码要求:浏览记录	
			
		session
			1.session获取   request.getSession();
			2.session原理
				它是需要cookie支持.
				
			3.session域对象使用
				购物车
				
			4.关于session的销毁.
				
			5.关于session笔试题
				1.禁用cookie后使用session 
					url重写
				2.关于浏览器关闭,session销毁。
					
		会话是什么,它解决什么问题?
		
	==============================================
	补充:
		关于RequestDispatcher中的include方法.
			RequestDispatcher.include方法用于将RequestDispatcher对象封装的资源内容作为当前响应内容的一部分包含进来,从而实现可编程的服务器端包含功能
			一般情况是用于页面的布局.
			
			
			
		
	======================================
	作业:
		1.自己写出商品浏览记录显示代码
		
		2.session实现购物车
		
		3.一次性验证码会使用
		


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值