ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:287.36KB ,
资源ID:10947533      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10947533.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(day07笔记.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

day07笔记.docx

1、day07笔记今日任务:1、request介绍2、JSP相关技术简单介绍3、Cookie技术4、Seesion技术课堂笔记1、Request请求1.1、URL编码问题在浏览器端给服务器发送请求的时候,请求的数据URL,都会被浏览器先进行编码。然后把编码后的数据先通过请求发给tomcat服务器。服务器接收到数据之后会对其中的编码数据进行ISO8859-1解码。当在Servlet程序中我们通过HttpServletRequest对象获取到数据时已经是tomcat服务器解码后的乱码数据。浏览器为什么要进行URL数据的编码呢?浏览器把数据提交给服务器的时候,必须以安全数据的方式提交。安全数据ascii

2、码表中的数据。sex=%E7%94%B7 男-编码 -E794B7 -编码后的数据,每个字节使用%作为分割符服务器端拿到数据之后,会按照ISO-8859-1进行解码。我们也可以自己手段的进行URL编码:在学习js的时候,学习过全局函数。1.2、request利用请求转发传递数据演示请求转发:需要2个Servlet程序。在第一个Servlet程序中转到第二个Servlet中,然后在第二个Servlet中给用户响应数据。public class AServlet extends HttpServlet public void doGet(HttpServletRequest request, Ht

3、tpServletResponse response) throws ServletException, IOException response.setContentType(text/html;charset=utf-8); /在AServlet中转到BServlet中,给用户响应数据 /* * RequestDispatcher称为转发器,主要实现从一个Servlet中转到其他的Servlet中 * forward 转发,forward(request, response)接收的Request和response对象 * 就是当前这个Servlet中的request和response对象

4、* * request.getRequestDispatcher() * 我们通过request对象中的getRequestDispatcher方法,可以得到一个转发器,转到其他的Servlet中 * getRequestDispatcher方法需要一个字符串数据。这个字符串表示的是转发的目的地 * 转发的路径是给服务器使用的,在写路径的时候千万别加项目名 */ System.out.println(数据正在转发.); RequestDispatcher dispatcher = request.getRequestDispatcher(/b); dispatcher.forward(requ

5、est, response); /request.getRequestDispatcher(/b).forward(request, response); /* * 给客户端响应数据 * 在使用转发的时候,在forward之后,不要使用response给客户端写数据, * 只有在最后的那个Servlet中才能通过response给客户端写响应数据,数据才会写给客户端。 */ response.getWriter().write(转发之后数据不会到客户端); public void doPost(HttpServletRequest request, HttpServletResponse re

6、sponse) throws ServletException, IOException doGet(request, response); public class BServlet extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException System.out.println(转发过来的.); response.getWriter().write(转发后的数据在最后的一个Servlet

7、中是可以写给客户端的.); public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException doGet(request, response); 1.3、request对象在转发中当作容器使用ServletContext对象就可以保存项目中的共享数据。在任何一个Servlet中都可以取出其中的数据。用户的本次请求中需要保存一些参数,最后在响应到页面上的时候,把这些数据全部给当前用户这次请求而服务。当用户下次在请求的时候,就会是一个新的

8、request对象,保存新的数据,和上次的没有任何关系。* * 在当前的Servlet中通过requeset对象保存数据,然后转发到其他的Servlet中取出数据,并处理 * author 上海传智播客 * 2015年1月31日 上午10:46:28 * */public class ServletForward1 extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException /把reques

9、et对象当作容器来使用 request.setAttribute(name, 张三); request.setAttribute(addr, 天上人间); System.out.println(数据已经保存到request对象中); /转发过去 request.getRequestDispatcher(/forward2).forward(request, response); public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOExcep

10、tion doGet(request, response); /* * 处理转发过来的数据 * author 上海传智播客 * 2015年1月31日 上午10:47:16 */public class ServletForward2 extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException /取出request中的数据 Object name = request.getAttribute(

11、name); Object addr = request.getAttribute(addr); System.out.println(从request中取出的数据:+name+.+addr); response.setContentType(text/html;charset=utf-8); response.getWriter().write(从request中取出的数据:+name+.+addr); public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletExce

12、ption, IOException doGet(request, response); 1.4、客户端访问服务器的流程图解2、JSP相关技术简单介绍JSP:Java Server Page。jsp的出现主要是方便我们书写网页的。2.1、Servlet的缺点Servlet程序主要是用来处理用户的请求和响应。但是通过Servlet动态的给客户端响应html相关的数据时,十分的麻烦。直接通过html文件CSS文件、JS文件等书写的资源都属于静态的web资源。而通过Servlet程序生成的html数据都称为动态的web资源。使用Servlet书写html标签十分麻烦。并且网页的设计和维护一般不是后台

13、程序员管理。而是公司的美工(网站前端工程师)通过专业的软件来制作。在开发中一般是由美工写好静态的html页面,然后交给后台的程序员使用。后台程序员书写的代码如果在生成html数据,导致美工无法维护。后台书写的过程十分麻烦。并且美工是不懂后台程序,这样导致工作无法进行。sun公司也发现Servlet的缺点。因此研发了JSP技术。jsp技术,主要是用来书写html代码。同时在jsp文件中可以嵌入CSS、JS以及Java代码。JSP文件和html几乎一样。这样我们就可以在jsp中书写html代码。后期开发我们使用JSP显示Servlet处理完的数据。一般开发模式:用户请求Servlet程序程序,在S

14、ervlet中处理数据,处理完成之后,使用请求转发技术,转发到JSP页面上,在JSP页面上使用html代码显示处理完的数据(MVC设计模式)。2.2、JSP快速入门使用MyEclipse的模版创建JSP页面:修改MyEclipse打开JSP文件的默认方式:jsp文件的保存位置:jsp页面访问过程:JSP翻译完成之后,其中有三个方法,表示的是jsp的生命周期方法:在service中为用户服务。MyEclipse的jsp模版编码表修改:2.3、JSP三种脚本元素 % for( int i=0;i 总结三种脚本:1、脚本声明格式:2、脚本表达式格式: 表达式后面不能加分号3、脚本片段格式:html代

15、码html代码2.4、EL表达式入门EL表达式:expression language 表达式语言。它的主要作用是在jsp页面中取出不同范围(ServletContext,request容器)中保存的数据。使用EL表达式简化JSP页面上的Java代码。EL表达式的格式:$ 表达式 3、Cookie介绍&Cookie案例3.1、Cookie和Session技术概述会话技术:当用户打开浏览器开始访问某个网站,到用户关闭浏览器,不再做任何操作,这个过程称为一次会话。基于这次会话,用户的操作后台会有相应的数据需要通过用户的操作进行保存。在会话的过程中,每次的请求服务器都会记录住用户的操作,并把这些操作

16、写给浏览器,浏览器下次在进行其他操作时,就会显示上次的操作轨迹。在会话中要保存用户的操作,就需要使用到其他的对象来专门负责保存这些操作中的数据。sun公司给我们提供了2个对象:Cookie对象:Cookie对象主要是在服务器端把数据保存在其中之后,最后在给用户响应的时候,会把Cookie对象中保存的数据写给浏览器,然后浏览器会保存在自己的缓存目录中。当用户下次在访问服务器的时候,会携带上次服务器给用户写的Cookie信息,服务器接收到Cookie之后,就会知道用户上次的操作。Seesion对象:Seesion对象是在服务器端把用户的操作保存在其中,在给用户响应的时候,不会把Session对象中

17、的数据写给客户端,只要客户端不关闭浏览器,那么服务器端就一直会有一个Session对象和用户当前的这个浏览器一一对应。并保存当前浏览器所有会话期间操作的数据保存工作。3.2、Cookie案例演示3.3、Cookie的API介绍案例:记录用户的上次访问时间。需要一个Servlet程序专门处理每次用户的请求时间,和携带的上次访问时间的信息,以及给客户端回送访问时间。3.3.1、创建Cookie使用Cookie的构造方法就可以直接创建Cookie对象,在创建的时候,需要指定key和value值,当浏览器携带Cookie到服务器端,获取到Cookie对象之后,就需要根据key值判断是不是我们需要的Co

18、okie数据。3.3.2、获取Cookie当浏览器访问服务器的时候,只要访问的这个网站以前给客户端写过Cookie对象,那么浏览器在访问的时候,就会自动携带Cookie到服务端,在Servlet中我们可以使用Request对象中的getCookies方法拿到所有的携带Cookie对象。在Servlet中获取到Cookie数组之后,首先需要判断当前的数组是否存在,如果不存在,浏览器没有携带Cookie到服务器。如果存在,得到的是一个数组,需要遍历数组取出每个Cookie对象,然后获取Cookie的key值,判断是否是自己想要的Cookie数据。使用Cookie对象中的getName方法,可以取到

19、当前某个Cookie对的key值使用getValue方法取到某个Cookie的value值。3.3.3、发送Cookie在Servlet中给客户端写Cookie数据,直接使用response完成。3.3.4、Cookie分类Cookie分类:临时Cookie(会话级别的Cookie):临时Cookie,仅仅在浏览器运行的期间有效。关闭浏览器Cookie数据消失。Cookie是在服务端写给客户端的数据,在客户端下次访问服务器的时候会携带给服务器。持久Cookie:可以使用Cookie对象中的方法,把Cookie设置成持久的Cookie,那么在关闭浏览器之后Cookie数据会被保存在浏览器的缓存文

20、件中。setMaxAge(int expiry) 设置Cookie过期时间。3.3.5、设置路径3.3.6、Cookie的有效域名设置Cookie的有效域名。可以不设置。一般一个网站都会设置和自己网站相关的Cookie数据。如果设置的域名不是自己网站的域名,这样的Cookie我们称为第三方Cookie。一般的浏览器默认都会阻止第三方Cookie数据。3.3.7、删除Cookie删除持久Cookie信息:1、创建一个Cookie对象,key值和以前保存的Cookie的key值必须一致。然后value写“”2、把过期时间设置成-1.这样在浏览器关闭之后,持久的所有Cookie全部无效了。删除Coo

21、kie信息的时候,一定要保证新创建的Cookie的setPath和原始的path一定一致。Cookie cookie = new Cookie(“time”,”);cookie.setMaxAge(-1);cookie.setPath(“/day07”);response.addCookie(cookie);3.3.8、Cookie案例(商品浏览记录)案例:浏览记录1、jsp页面显示所有的商品,同时用户可以点击商品,进行查询和购买2、定义Servlet程序处理用户的请求,同时记录用户本次访问的商品信息,以Cookie的形式写给客户端 所有的商品 显示所有的商品 笔记本 手机 电视机 空调 冰箱

22、 您曾经浏览过的商品是 /* * 处理用户的单个商品请求 * author 上海传智播客 * 2015年1月31日 下午4:30:15 */public class GoodsServlet extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException /获取用户携带的商品的id信息 String id = request.getParameter(id); /获取携带的Cookie Cook

23、ie cookies = request.getCookies(); /Cookie(good,1) Cookie cook = null; String old_id = null; /判断是否获取到Cookie if( cookies !=null ) /遍历数组,取出和商品相关的Cookie对象 for (Cookie cookie : cookies) / 遍历会获取到某个单独的Cookie对象 /获取Cookie的名字,判断是否和商品相关 if( cookie.getName().equals(good) ) cook = cookie; /说明用户以前已经访问过某个商品了,获取访问

24、过的商品的id信息 /Cookie(good,1) String goodId = cookie.getValue(); /判断当前拿到的这个商品是否已经是访问过的商品 if( !(goodId.contains(id) ) old_id = goodId +,+id; else old_id = goodId; if( cook = null ) cook = new Cookie(good,id); else cook = new Cookie(good,old_id); /把Cookie写给客户端 cook.setMaxAge(60*60); cook.setPath(/day07); response.addCookie(cook); /重定向到显示所有商品的页面上 response.sendRedirect(/day07/allGoods.jsp); public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException doGet(request, response); 4、Session原理和案例

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1