JavaWeb-web开发核心知识点-Servlet02

Servlet开发时需要使用的5种工具对象

一、概述:

  1. HttpServletResponse接口:负责将运行结果写入到响应包
  2. HttpServletRequest接口:负责读取请求包中相关信息
  3. ServletContext接口:可以为当前网站中所有的Servlet提供【共享数据】
  4. Cookie:在一次会话过程中,存储浏览器在服务端产生的私人数据
  5. HttpSession接口:在一次会话过程中,存储浏览器在服务端产生的私人数据

二、HttpServletResponse接口:

  1. 【介绍】:
    1)一个来自于Servlet规范中接口;由Tomcat负责提供这个接口实现类
    2)负责在servlet运行完毕后,将相关数据写入到【响应头】和【响应体】
    3)开发人员习惯将HttpServletResponse接口修饰对象,称为【响应对象】
  2. request.setCharacterEncoding()与response.setContentType()
    1)相同点:都可以设置响应头中【字符集】
    2)不同点:response.setContentType()还可以设置【内容类型】

三、HttpServletRequest接口:

  1. 【介绍】:
    1)来自于Servlet规范中的一个接口,接口实现类由Tomcat负责提供的
    2)由HttpServletRequest接口修饰对象,可以帮助开发人员读取【请求协议包】信息相当于【Scanner】
    3)一般习惯于将HttpServletRequest接口修饰对象称为【请求对象】

  2. 【作用】:
    1)读取【请求行】信息
    String url = request.getRequestURL();
    String method = request.getMethod();
    2)读取【请求头】或者【请求体】中所有的【请求参数名】
    request.getParameterNames();
    3)读取请求头或者请求体中的【参数内容】
    http://localhost:555/myWeb/two.do?name=mike
    String value = request.getParameter(“请求参数名”)

         http://localhost:555/myWeb/two.do?uname=mike&uname=allen&uname=smith
         String array[] = request.getParameterValues("请求参数名")
    

四、请求对象与响应对象生命周期:

  1. 都是由Tomcat负责创建的
  2. 每当Tomcat收到一个【请求协议包】时,就会为这个请求协议包创建一对【请求对象和响应对象】
  3. 一次请求对应一对【请求对象和响应对象】
  4. 在Tomcat调用被请求的Servlet中的服务方法(doGet和doPost)时,负责将本次【请求对象和响应对象】作为参数传入到服务方法
  5. 在服务方法工作完毕后,Tomcat销毁本次请求相关的request和response
  6. Tomcat负责将【响应包】推送到浏览器上

五、中文请求方式乱码问题

  1. 【原因】:跟浏览器采用【请求方式】
    如果浏览器以【Get方式】发送请求,【请求参数】在【请求头】存放
    在请求协议包到达服务端之后,【请求头】内容由Tomcat负责解析
    Tomcat9.0 在解析数据时,默认采用的字符集是【utf-8】
    所以如果浏览器以【Get】方式发送中文参数,此时在服务端不会出现中文乱码问题

    如果浏览器以【Post方式】发送请求,【请求参数】在【请求体】存放
    在请求协议包到达服务端之后,【请求体内容】是由对应【请求对象request】负责解码的。request对象默认使用的是【ISO-8859-1】字符集
    所以如果浏览器以【Post】方式发送中文参数,此时在服务端一定会出现中文乱码问题

  2. 【解决方案】:在request对象解析数据之前,重新设置request对象字符集【utf-8】即可
    request.setCharaterEncoding(“utf-8”);
    request.getParameter(“参数”);

六、ServletContext接口

  1. 【介绍】:
    1)Servlet规范中的一个接口,接口实现类由Tomcat负责提供
    2)负责为当前工程中所有Servlet提供【共享数据】
    3)开发人员习惯于将ServletContext接口修饰对象称为【全局作用域对象】
  2. 【生命周期】:
    1)【全局作用域对象】在Tomcat启动时,由Tomcat为当前网站来创建的
    2)一个网站中只能有一个全局作用域对象
    3)从网站启动开始一直到网站关闭时,由Tomcat负责销毁当前网站的全局作用域对象
  3. 【使用】:
    1)如何得到当前工程中的【全局作用域对象】
    ServletContext application = request.getServletContext():
    向Tomcat索要当前工程的全局作用域对象
  4. 【共享数据来源方式一】:
    在网站启动之前,开发人员可以将网站中绝大多数Servlet需要使用的数据添加到web.xml中

    共享数据名称
    共享数据内容

    在网站启动时:Tomcat首先为当前网站创建一个【全局作用域对象】
    Tomcat然后将web.xml配置共享数据添加到【全局作用域对象】
    在网站运行时,当前某一个Servlet需要使用【共享数据】时
    可以从全局作用域对象索要数据
    共享数据内容 = application.getInitParameter(“共享数据名称”)
    此时共享数据只能读取使用,但是不能修改
  5. 【共享数据来源方式二】:
    在Tomcat运行期间,可以将某一个Servlet提供的数据保存到全局作用域对象中,仅当前网站中其他的Servlet来使用
    AServlet:提供共享数据
    application.setAttribute(“共享数据名”,共享数据); object
    BServlet:
    共享数据=application.getAttribute(“共享数据”);
    由Servlet存入共享数据可以被修改

七、会话

  1. 【定义】:一个浏览器与一个服务端的一次完整的交流
  2. 【特点】:
    1)在一次会话过程中,经历多次请求与响应
    2)在一次会话过程中,同一个浏览器往往访问多个Servlet
  3. 【需求】:在一次会话过程中,在浏览器要访问的Servlet之间进行数据共享
  4. 【解决方案】:Cookie和HttpSession

八、Cookie:

  1. 【介绍】:
    1)Cookie是Servlet规范提供一个工具类
    2)在参与一个会话过程中Servlet之间,进行【数据共享】
    3)Cookie存储在浏览器上,保存本次会话的【共享数据】
  2. 【工作原理】:
    1)在浏览器访问【OneServlet】时。
    【OneServlet】负责将当前浏览器产生的私人数据保存到Cookie。
    然后【OneServlet】负责将Cookie推送到当前浏览器上
    2)在浏览器再次来访问当前网站【TwoServlet】时,需要无条件将服务端之前推送过来的Cookie推送回去,这样TwoServlet就得到【OneServlet】提供的共享数据
  3. 【Cookie使用】:
    1)如何创建一个Cookie对象,来保存共享数据
    Cookie c1 = new Cookie(“key”,“共享数据”);
    一个Cookie对象只能存储一个键值对
    Cookie对象只能存储String类型共享数据
    2)如何将Cookie写入到响应包的【响应头】
    response.addCookie(c1);
    3)如何从请求协议包的【请求头】读取浏览器返还的Cookie
    Cookie array[] = request.getCookies();
  4. 【cookie对象的生命周期】:
    1)【默认情况】:cookie保存在浏览器内存中
    所以在浏览器关闭时,cookie会被windows进行销毁
    2)【人工干预】:要求将Cookie保存在客户端计算机的【硬盘上】
    同时制定Cooike在硬盘上的存活时间
    在存活时间范围之内,关闭浏览器甚至关闭计算机,都不会导致Cookie被销毁
    cookie.setMaxAge(以秒为单位时间)
  5. 【cookie缺点】:
    1)一个cookie对象只能存放一个键值对,如果存储的数据较多,需要管理多个cookie
    2)cookie只能存放String类型数据,无法存放【高级类型Java数据,比如List,Map】

九、HttpSession接口

  1. 【介绍】:
    1)来自Servlet规范中的接口,接口实现类来自于Tomcat
    2)为参与同一个会话的Servlet之间提供共享数据
    3)习惯于将HttpSession接口修饰的对象称为【会话作用域对象】也可以叫做【session对象】

  2. 【HttpSession与Cookie区别】:
    【相同点】:为参与同一个会话的servlet之间提供共享数据
    【不同点】:
    存储位置:cookie存储在客户端浏览器内存中或者硬盘上
    HttpSession存储在服务端计算机的内存中
    存储内容:cookie只能存储String类型数据
    HttpSession可以存储任意类型的数据
    存储数量:一个Cookie只能存储一个键值对
    一个HttpSession对象可以存储任意数的键值对

  3. 【使用】:
    1)在浏览器来访时,Tomcat不会主动为当前浏览器创建对应的HttpSession对象
    2)只有浏览器所访问的Servlet向Tomcat提出要求时,Tomcat才会为当前浏览器创建一个HttpSession对象
    3)如何在Servlet中为当前浏览器,申请一个HttpSession对象
    a) HttpSession session = request.getSession();
    b) HttpSession session = request.getSession(true);
    c) HttpSession session = request.getSession(false);

  4. getSession()与request.getSession(true)与getSession(false)
    1)getSession():如果当前浏览器在服务端已经拥有了一个SESSION对象,
    此时Tomcat需要将这个session对象进行返回
    如果当前浏览器在服务端尚未拥有SESSION对象
    此时Tomcat需要创建一个全新的session对象返回
    2)getSession(true):与getSession()完全一致
    3)getSession(flase):如果当前浏览器在服务端已经拥有了一个SESSION对象,
    此时Tomcat需要将这个session对象进行返回
    如果当前浏览器在服务端尚未拥有SESSION对象
    此时返回一个NULL
    如果来访的用户身份已经确认合法了,此时可以使用getSession()或getSession(true)
    如果来访的用户身份尚未确认,此时只可以使用getSession(false)

  5. Tomcat是如何将浏览器与SESSION对象关联
    在Tomcat创建一个SESSION对象时,为SESSION对象生成一个唯一编号
    然后将这个编号保存到cookie中,推送到当前浏览器内存中
    等到浏览器再次发送请求时,Tomcat就可以通过读取浏览器返回的cookie来判断浏览器在服务端是否有session对象

  6. 如何使用HttpSession对象
    在本次会话中,AServlet需要为本次会话中其他Servlet提供共享数据
    session.setAttribute(“key”,共享数据)
    在本次会话过程中,BServlet需要得到当前浏览器session的数据
    session.getAttribute(“key”)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值