response对象
1.代表的响应的对象(从服务器端到客户端),由Tomcat服务器创建的.
2.ServletResponse接口,子接口HttpServletResponse
重定向的例子
1.重定向,完成页面的跳转!!
2.登陆的例子
* 设置302的状态码
* 设置location的响应头(客户端绝对路径--包含项目名称)
3.response提供了方法
* 直接完成重定向 sendRedirect("路径")
refresh头
1.完成页面定时刷新
2.值response.setHeader("refresh","5;url=客户端绝对路径")
禁用浏览器的缓存
1.记住三个头 C E(值-1) P
2.设置日期的头方法 setDataHeader(-1)
response对象乱码的问题
1.输出中文两种方式
* 字节流
* response.getOutputStream().print("哈罗我的".getBytes());
* 可能会有乱码的问题(编码不一致)
* getBytes("UTF-8")
* 设置浏览器打开文件的时采用的编码
* response.setHeader("Content-Type","text/html;charset=UTF-8")
* 字符流
* 一定会产生。
* response缓冲区输出内容,response对象由Tomcat服务器创建的,Tomcat服务器默认编码ISO-8859-1
* 设置response缓冲区的编码
* setCharacterEncoding("UTF-8")
* 设置浏览器打开文件的编码
* response.setHeader("Content-Type","text/html;charset=UTF-8")
* 简便的方式
* response.setContentType("text/html;charset=UTF-8");
文件下载的案例
1.记住一句话:两个头,一个流
2.两个头
* Content-Type 使用ServletContext.getMimeType(文件名称);
* Content-Disposition 值是固定的:attachment;filename= +文件名称
3.一个流
* 获取下载文件的输入流
验证码的案例
1.BufferedImage 画布
2.获取画笔
3.画一些内容
4.ImageIO
request对象
1.从客户端到服务器端
获取客户端的信息
1.http://locatlhost:8080/demo1?username=xxx&password=yyy
2.就可以通过一些方法来获取上面链接的中的每一块的信息
3.获取IP,获取项目名称 request.getContentPath()
获取请求头的信息
1.request.getHeader("")
2.referer 记住当前网页的来源
* 防止盗链
3.user-agent 判断浏览器的版本
* 文件下载的时候
获取请求的参数
1.获取text password request.getParameter("name")
2.Map map = request.getParameterMap();
* map的key是表单中name的名称
* map的value是用户输入的内容
3.request.getPatameterValues("name") 获取的复选框
获取请求参数会乱码
1.分成两种情况
* POST
* 设置request缓存的编码
* request.setCharacterEncoding("UTF-8")
* GET
* 设置Tomcat整体环境(不推荐)
* 先获取到请求的参数
* name = new String(name.getBytes("ISO-8859-1"),"UTF-8")
request域对象
1.域对象的范围
* 代表的一次请求的范围!!(发送一次请求,得到一次响应)
* 传递一些数据(提示的信息,或者展示的数据)
转发和重定向的区别
1.会编写转发的代码,理解转发的含义。
2.掌握转发和重定向的区别(什么使用转发,什么使用重定向)
3.转发:和重定向的功能比较类似的,转发也可以完成页面的跳转的功能!!
4.转发代码怎么写?
* 重定向 response.sendRedirect("路径");
* 转发,找request对象,提供了一个方法
* RequestDispatcher getRequestDispatcher(String path) ,返回的是RequestDispatcher一个对象
* RequestDispatcher提供了一个方法,void forward(ServletRequest request, ServletResponse response)
* forward帮咱们转发的功能!!
* 代码怎么写?
* request.getRequestDispatcher("").forward(request,response) -- 转发的代码的编写!!
5.转发和重定向路径的写法
* 重定向的地址(客户端的绝对路径,包含项目名称)
* 转发的路径(服务器端的绝对路径,不包含项目名称)
6.转发和重定向区别
* 共同点:都可以完成页面跳转的功能!
* 不同点
* 重定向是两次请求,两次响应,转发是一次请求,一次响应,就可以request域来传递一些数据!!
* 重定向的地址栏会发生变化,转发的地址栏不会发生变化。
* 重定向可以定向到任何的页面(项目的中的页面,网络上的资源),转发只能在服务器的内部完成跳转!!
JSP的简介
1.SUN公司提供Servlet的技术,后来提供JSP的技术。这两个技术都属于动态WEB资源的技术。
2.为什么有Servlet,又提供了JSP的技术?
* Servlet存在缺点
* Servlet技术需要配置的。
* 在Servlet中向页面输出一个表单。response.getWriter().write("
JSP的执行原理(理解)
1.执行的原理
* 把demo1.jsp的程序翻译成.java的文件
* 把页面上写的HTML的内容,使用输出流输出到页面上。
* 以后输出的内容不用咱们自己编写,JSP后台的源文件帮咱们去输出了
* 正常编写HTML的代码。
* 把.java的文件编译成.class的文件
* 执行了
JSP的脚本元素
1.JSP中提供脚本元素,目的:就可以在脚本元素中编写Java代码!!
2.JSP的脚本元素
* <%! %> -- 不常用,把JSP的文件翻译.java的文件,翻译类的全局的变量
* <%= %> -- 输出的语句
* <% %> -- 定义的变量,编写语句(if for)
JSP开发中占用的角色
1.JSP已经入门了,Servlet学习两天了!!
2.JSP的功能和HTML的功能是一样的,但是不同点是JSP属于服务器端的技术,在JSP的页面中就可以读取域对象中的内容,就可以完成前后台的页面的交互工作!!
3.JSP的功能
* 收集用户输入的数据
* 显示提示的信息
会话的概念(理解)
1.概念:打开浏览器,点击超链接(发送请求,得到响应),可以点击多次链接。最后把整个浏览器都关闭,这个过程称为一次会话!!
2.什么的样的应用?
* 使用会话的技术可以保存用户相关的数据(每个不同的用户)
3.例子:去网上的商城购买商品,第一次点击了手电筒的商品,把手电筒保存起来,下一次购买了冰箱,冰箱保存起来。最后去结账,需要把手电筒和冰箱同时拿出来,去结账!!
* 讨论的问题:Servlet把手电筒和冰箱保存在哪呢?
理解cookie原理(理解)
1.cookie的原理
* 基于客户端的技术。把数据保存到客户端上!!
* cookie的技术基于Http的头信息来完成的。(set-cookie(从服务器端到客户端) cookie(从客户端到服务器端))
* 点击购买商品,在后台程序中把商品保存到cookie中,回写cookie(把cookie回写到客户端上)
* 客户端默认把cookie的内容保存在浏览器的缓存中。
* 下一次再点击购买其他的商品,默认携带cookie的信息过去的,在后台,通过cookie来获取之前购买的商品。再回写
* 浏览器就把最新的cookie的内容覆盖掉缓冲区的cookie的内容!!
cookie对象的api
1.查找JavaEE的文件,搜索Cookie的类。
2.Cookie提供的一些方法
* Cookie(String name, String value) -- 例子:Cookie c = new Cookie("product","sdt");Cookie中不能存在中文!
* String getName() -- 获取的Cookie的名称,c.getName() 返回的内容 product
* String getValue() -- 获取的Cookie的值,c.getValue() 返回的内容 sdt
* response.void addCookie(Cookie cookie) -- 回写Cookie,把创建的Cookie回写到浏览器端!
* Cookie[] getCookies() -- 获取所有的Cookie,返回的是Cookie的数组!!
显示用户上次访问的时间(和Cookie的原理)
1.需求:显示用户上一次的访问时间!!弄明白需求!!
2.看图
cookie的api(另外)
1.设置Cookie的相关的信息!!
2.方法
* void setValue(String newValue) -- 设置Cookie的值
* void setMaxAge(int expiry) -- 设置有效时间
* 默认的Cookie,把Cookie默认的保存在浏览器的缓存中。一旦关闭浏览器,Cookie就被清除了。
* 通过setMaxAge(秒),把Cookie持久的Cookie。把Cookie保存在磁盘上。关闭浏览器是不会清除掉。
* 应用在哪?保存用户名。
* void setPath(String uri) -- 设置有效路径
* 有效路径决定什么问题?
* 访问其他资源的时候,是否会携带cookie的信息!!
* 现在没有设置过有效路径,说明默认的有效路径。/day11
* 结论:现在访问/day11/目录下的任何的资源,都会携带cookie的信息!!
* 修改内容:LasttimeServlet的访问路径。/web/lasttime
* 默认的有效路径已经改变了:/day11/web
* 现在再去访问demo1.jsp 没有携带cookie.
* 下面我要手动设置有效路径了。
* c.setPath("/day11")
3.删除持久的cookie
* 假如:cookie.setMaxAge(60*60*24); 设置过一天的时间。如果之前设置过有效路径的话
* 时间刚过3个小时,就想把刚才的cookie删除掉。需要再设置一遍有效路径。cookie.setMaxAge(0);
商品的浏览记录
1.需求:显示商品的浏览记录。
2.分析:
/**
* 1.先判断是否是第一次访问
* 2.如果是第一次
* * 创建cookie,把点击的商品的id保存在cookie中。回写cookie
* * Cookie c = new Cookie("product","1");
* 3.如果不是第一次访问
* * 从cookie中获取到手电筒
* * 判断cookie中是否包含点击的商品的id。
* * 如果cookie中包含,不用处理
* * 如果不包含,做追加的操作
* * 用户点击了冰箱。获取冰箱的id。追击的操作。product=1,2
* 4.可以使用重定向获取转发
* 5.在页面中可以cookie中获取值。显示到页面上就可以了!!
*/
3.代码:看程序!!
seesion的原理
1.session的概述
* 大家去访问服务器,服务器为每一个用户的浏览器持久一个session(在服务器的内部创建的)。
* 大家就可以把和用户相关的一些数据,保存在各自的浏览器中。
* cookie基于客户端的技术,session基于服务器端的技术
2.session的原理
* 服务器为浏览器创建一个session的空间,有一个为唯一的id值。就可以把东西存入在session的空间中。返回到页面上,把id通过cookie的方式保存在浏览器的缓存中。下一次再访问,通过cookie的头信息传递id值。通过id的值就可以找到session的空间。
* session的空间创建在服务器端。
* 如果我关闭了浏览器,session空间还有吗?有!!但是钥匙没了!!唯一的id值没有了!!会你再创建一个session的空间。
* session有默认的销毁的时间30分钟。
session对象的api
1.相关的方法
* HttpSession getSession() -- HttpServletRequest接口中的一个方法。如果第一次访问服务器端,调用该方法,那么为你的浏览器创建一个session的空间。如果是的第二次访问(钥匙没丢呢),不会创建session的空间,找空间。如果是第二次访问,但是钥匙丢了,会你再创建一个新的session的空间。
2.HttpSession接口的方法
* Object getAttribute(String name)
* void setAttribute(String name, Object value)
* void removeAttribute(String name)
* String getId() -- session有一把钥匙,获取钥匙。
* void invalidate() -- 销毁session
购物车的案例(代码需要编写)
1.需求:完成购物的功能。
2.分析
/**
* 1.传过来参数,接收参数,但是传过来好像是id。购物车中存的是商品的名称和数量。
* 2.向购物车中存放商品
* * 先判断是否是第一次访问
* * 如果是第一次访问,创建一个购物车,把商品和数量存放在购物中,存放在session。
* * 如果不是第一次访问,判断购物车中是否已经包含该商品了
* * 如果包含,数量+1
* * 如果不包含,直接存放商品和数量就OK了。
* 3.继续购物还是去去结算
*/
session的追踪(了解)
1.session的追踪的技术?
2.session基于cookie的技术,使用cookie技术传输钥匙。如果浏览器关闭了,钥匙丢了。但是session的空间还存在!session的追踪通过钥匙找到session的空间。
session域对象(掌握)
1.session域对象的范围
* 一次会话范围(可以发送多次请求,得到多次响应)
2.学习3个域对象
* 域对象的作用传递数据(可以每个域对象中存入值,从域对象中取值,不同每个域对象的范围不同 )
* request -- 代表一次请求的范围,显示提示的信息,前台后数据的交互。
* session -- 代表一次会话的范围,每个用户,为每个用户的浏览器创建一个独享的session空间。保存用户相关的数据。
* ServletContext -- 代表整个WEB应用。所有的资源都共享该对象。共享的信息存放该对象。
session的创建和销毁(掌握)
1.session的创建
* 发送请求,第一次访问后台,request.getSession()方法执行了,为浏览器创建session的空间。
2.session的销毁
* 手动销毁,调用invalidate()方法。
* 非正常原因关闭服务器。
* 默认的销毁的时间(30分钟,不操作)
1