servlet中的请求转发,重定向,cookie,session,servletContext,servletConfig

学习主题:Servlet
学习目标:
1 掌握 请求转发
2 掌握 请求重定向
3 掌握cookie
4 掌握session
5 掌握servletContext
6 掌握servletConfig

1.请求转发介绍

(1)为什么需要请求转发?
一次请求的处理需要多个Servlet的联动操作,第一个Servlet需要用到其 他Servlet已经声明的逻辑处理代码,这时就需要使用请求转发。

(2)请求转发的本质是什么?
其实就是在一个Servlet中调用其他的Servlet

2.请求转发的特点和request作为数据载体进行数据流转

(1)请简要说明请求转发的特点
1、降低Servlet之间的代码繁杂
2、一次请求转发内的Servlet共享此次请求的request和response对象
3、浏览器地址栏信息不改变,一次请求

(2)使用request对象作为请求转发的数据的载体的方法是什么?(存储和获取)
存储:setAttribute(String name,Object obj)
获取:getAttribute(String name)

3.请求转发之request对象总结

(1)总结说明request作用域的特点
一次请求转发内的servlet,request对象可以作为数据流转的载体。

(2)总结说明请求转发的特点
1、降低Servlet之间的代码繁杂
2、一次请求转发内的Servlet共享此次请求的request和response对象
3、浏览器地址栏信息不改变,一次请求

4.重定向的作用和特点

(1)总结说明重定向的特点
保护第一次的请求,避免因为用户的刷新动作频繁的触发A的执行。
两次请求,地址栏信息改变。

5.cookie的介绍和特点和作用

(1)简要说明为什么需要cookie
不同的请求使用相同的请求数据,但是请求只要结束,数据就会被销毁,其他的请求需要将公共数据更新书写发送,这样就需要cookie技术,告诉浏览器将其他请求会的请求数据保存下来,并在其他请求中附带上保存的数据。

(2)cookie的特点是什么
1、浏览器端的数据存储技术
2、哪些数据需要被存储在服务器端进行声明,以响应的方式告诉浏览器进行存储
3、不适合大量数据的存储
作用是解决了不同请求之间请求数据共享的问题

6.cookie的代码实现

(1)怎么获取Cookie对象。
将浏览器保存的请求数据存入数组中,然后遍历这个数组,然后判断在数组中获取的数据是否和我们想要获取的数据相等,如果相等则被获取。

(2)书写代码获取请求中的键名为a的cookie信息的值

//获取请求数据
String bc=null;
			//获取Cookie数据
			Cookie[] cookies=req.getCookies();
			for(Cookie ck:cookies){
				if("a".equals(ck.getName())){
					bc=ck.getValue();				}
			}
			String c=req.getParameter("c");

7.cookie的有效期和有效路径设置

(1)声明一段代码,设置Cookie的有效期为三天
//设置Cookie有效期
c.setMaxAge(3600243);//设置Cookie有效期为3天

(2)创建一个Cookie信息并设置其访问路径为/虚拟项目名/a
//设置有效路径
c.setPath("/cookie/a");

8.session的介绍和基本使用流程

(1)根据视频,说出你对session对的理解及其作用
原理:
用户使用浏览器第一次向服务器发送请求,服务器在接受到请求后,调 用对应的 Servlet 进行处理。在处理过程中会给用户创建一个 session 对 象,用来存储用户请求处理相关的公共数据,并将此 session 对象的 JSESSIONID 以 Cookie 的形式存储在浏览器中(临时存储,浏览器关闭即失 效)。用户在发起第二次请求及后续请求时,请求信息中会附带 JSESSIONID, 服务器在接收到请求后,调用对应的 Servlet 进行请求处理,同时根据 JSESSIONID 返回其对应的 session 对象。

特点:
Session 技术是依赖 Cookie 技术的服务器端的数据存储技术。
由服务器进行创建
每个用户独立拥有一个 session
默认存储时间为 30 分钟

作用:解决了一个用户的不同请求的数据共享问题。

(2)解决了一个用户的不同请求的数据共享问题。根据视频,如何保证不同请求获取到同一个session对象
给每个session对象设置一个标识码,将这个标识码用cookie获取, 浏览器会通过这个标识码去访问数据

9.session机制代码实现

(1)请简述req.getSession()的作用
获取session对象

(2)获取session对象的id的方法是什么?
System.out.println(“ServletA.session:”+session.getId());

10.session的特点和流程总结

(1)简述session使用流程
1、浏览器发起请求到Aservlet,在Aservlet中使用req.getSession() 获取Session对象,如果此次请求中没有SessionID则创建一个新Session 对象,如果有SessionID则将其对应的Session对象返回(前提是该session 对象没有到期)对象到期销毁了,就算有sessionID也会重新创建Session。
2、校验session是否失效,存储数据到session对象中或者获取 session中的数据或者删除session中的数据
(2)简述session的特点
session解决了同一个用户不同请求的数据共享问题。

(3)简述session的作用域
浏览器不关闭,session不失效,则同一用户的任意请求获取的都是同 一个session

11.session的有效期设置和强制销毁

(1)session的默认有效期?怎么设置session的有效期
session默认有效时间为30分钟,可以在tomcat下的web.xml中进行配置
注意:此种配置方式是所有的tomcat下的项目默认为30分钟
也可以在代码中使用:
session.setMaxInactiveInterval(int seconds);//设置 session有效期时间,参数为整数类型的秒
session.invalidate();//强制销毁session

(2)怎么强制销毁session?
session.invalidate();//强制销毁session

12.session之优化登录案例

(1) 简述是如何优化的
当我们用户名或密码输入错误的时候会给用户一个提示,此时我们把提示信息以键值对的方式存储在session对象内,LoginServlet需要用到UserServlet的提示数据,获取session中的信息,但是session的生命周期是一次会话结束,我们需要删除session对象的信息以及强制销毁session对象才能保证下一次访问LoginServlet时才不会出现提示数据。

13.简述ServletContext对象的作用(application)

(1)简述ServletContext对象的作用
解决了不同用户的数据共享问题

(2)获取ServletContext对象的三种方式是?
使用作用域进行共享数据流转
获取web.xml中的全局配置
获取webroot下的项目资源流对象
获取webroot下资源绝对路径

14.ServletContext对象存储和获取共享数据


//TestServletContextA
//获取请求信息
		//处理请求信息
			String str="我是用户共享数据";
			//获取ServletContext对象
			ServletContext src1 = this.getServletContext();
			ServletContext src2 =this.getServletConfig().getServletContext();
			ServletContext src3 =req.getSession().getServletContext();
		//	System.out.println(src1==src2);//true
		//	System.out.println(src2==src3);//true
			//获取数据
			src1.setAttribute("str", str);
		//响应处理结果
			//直接响应
				resp.getWriter().write("我是ServletContext中共享数据");
			//请求转发
			//重定向
//TestServletContextB
//获取请求信息
			//获取ServletContext对象
			ServletContext sc = this.getServletContext();
			//获取共享数据
			String s=(String) sc.getAttribute("str"); //如果获取的数据没有,不会报错,会返回null
		//处理请求信息
			System.out.println("TextServletContextB.service()"+s);
		//响应处理结果
			//直接响应
			//请求转发
			//重定向

15.ServletContext特点&获取web配置文件全局属性&获取资源流对象和绝对路径

(1)简述ServletContext对象的作用和特点。
作用: 解决了不同用户之间的数据共享问题
特点: 服务器创建 所有用户共享

(2)web.xml中的全局属性数据的配置方式是;
获取web.xml中的全局配置属性,作用:将部分动作和源文件进行解耦,我们只需要在xml配置文件中进行相关配置就会改变代码的执行效果。
sc.getInitParameter(String name);注意返回的是String类型数据
获取webRoot下的资源流对象
sc.getResourceAsStream(String path);
注意:
path为相对路径,写从webRoot开始查找资源的路径即可。
获取webRoot下的资源绝对路径
sc.getRealPath(String path);
注意:path为相对路径,写从webRoot开始查找资源的路径即可。

16.ServletConfig对象学习

(1)说说ServletConfig对象的作用
ServletConfig 对象是 Servlet 的专属配置对象,每个 Servlet 都
单独拥有一个 ServletConfig 对象,用来获取 web.xml 中的配置信
息。

你可能感兴趣的:(Servlet)