相当于在web.xml中配置了servlet的元素中的的配置,而且
它继承了HttpServlet类之上,属于类级别的注解
① 服务端决定哪些数据是其他请求要是用的公共的请求数据
② 服务端以响应的方式通知浏览器将公共的请求数据存储起来,存在浏览器
③ 浏览器再次发送请求时需要携带公共的请求数据
① 服务端决定哪些数据是其他请求要使用的公共的请求数据
② 服务端以响应的方法通知浏览器将公共的请求数据存储起来,存在浏览器端
③ 浏览器再次发送的新的请求中需要携带公共请求即可。
①Cookie是浏览器端的数据存储技术。
②浏览器会以请求数据的方式将Cookie存储的数据发送给服务器端使用。
③Cookie不适合大量数据的缓存。
④不安全,不适合存储重要的数据到浏览器端。
//创建Cookie对象存储要让浏览器缓存的数据,一个Cookie对表明一组键值对 Cookie cookie=new Cookie(“uname”,uname); 默认将Cookie数据存储到浏览器的内存中,浏览器关闭Cookie数据即销毁 除非设置了Cookie的有效期 注意: 设置了有效期后,Cookie信息被浏览器存储在客户端的硬盘中。 cookie.setMaxAge(2436003);//设置Cookie的有效期,秒为单位被浏览器存储缓存的Cookie信息默认在访问同一个项目的时候就会被浏览器以请求数据的方式携带。除非设置了Cookie的有效路径。 cookie.setPath("/01_cookie_war_exploded/aa");//设置Cookie的有效路径//响应Cookie到浏览器 resp.addCookie(cookie);
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ekRzn09U-1599046228039)(E:\有道云图片\qq433A8C57C88B51E6DF4A4B18D16012EA\7b0b8722145649a4a7465da9f6e37dcc\clipboard.png)]
Cookie[] cookies = req.getCookies();
if(cookies!=null){
for(Cookie cookie:cookies){
String name = cookie.getName();
String value = cookie.getValue();
System.out.println(“Cookie数据为:”+name+"="+value);
}
}
创建
HttpSession session = req.getSession();
存储数据
session.setAttribute(“user”,user);
session.setAttribute(String name,Object value);session对象可以缓存任意类型的 数据。此语句可以重复使用,一次存储一组键值对数据。
获取数据
session.getAttribute(“user”);
session.getAttribute(“存储的数据的键名”);返回值类型为Object,需要手动强制 转换。如果获取的数据不存在,返回null.
①如果请求中携带session的ID,并且后台session没有被销毁,则会将session对 应的session对象返回。
②如果请求中没有携带session的ID,则重新重建一个新的session对象返回。
③如果请求中带有session的id,但是session对象被销毁了,则重新创建新的session 对象返回。
session的销毁方式有哪些
① 通过web.xml文件指定超时时间
② 通过HttpServlet对象中的invalidate()方法销毁当前HttpServlet对象
③ 还有就是用户关闭浏览器
① cookie不安全,而session安全
② cookie数据存在在客户端,session在服务器端,所以也会占用服务器资源
③ 单个cookie保存的数据不能超过4k,很多浏览器都限制一个域名保存cookie的数量,session没有数量的限制
④ Cookie的数据都以字符串的形式保存,session中可以保存对象信息
⑤ Session会在一定时间内保存在服务器上,当访问增多会占用服务器的性能
① 降低代码的冗余,提升代码的重用性。
② 提升代码的阅读性。
C:控制层(程序的入口层): com.bjsxt.controller
M:逻辑层(业务层):com.bjsxt.service
M:数据库层(持久层):com.bjsxt.mapper
M:实体类层:com.bjsxt.pojo
V:视图层:一般由Jsp的页面组成
ServletContext对象,又名:application对象
特点:
① ServletContext对象由TOMCAT服务器在启动加载项目的时候即完成创建。
② ServletContext对象一个项目只有一个,任意方式的获取获取到的都是同一个。
③ ServletContext对象中缓存的数据是多用户共享的。
//方式一: ServletContext servletContext = this.getServletContext(); //方式二: ServletContext servletContext1 = req.getSession().getServletContext(); //方式三: ServletContext servletContext2 = req.getServletContext();
//将数据缓存早ServletContext对象中
servletContext.setAttribute(“str”,“哈哈,ServletContext对象好棒哦~!”);
//获取ServletContext对象的缓存数据
String str = (String) servletContext.getAttribute(“str”);
String realPath = servletContext.getRealPath("/image/a.png");
servletContext.getResourceAsStream("/1.txt");//编译根目录下
servletContext.getResourceAsStream("/files/1.txt");//子目录下
InputStream is = servletContext.getResourceAsStream("/1.txt");
BufferedReader bufferedReader=new BufferedReader(
new InputStreamReader(is,“utf-8”));
String s = bufferedReader.readLine();
InputStream is2 =
ServletContextServlet.class.getClassLoader().getResourceAsStream("/2.txt");
BufferedReader bufferedReader2=new BufferedReader(
new InputStreamReader(is2,“utf-8”));
一个context-param可以配置一组键值对数据,可以配置多组。
filename
1.txt
filename2
1.txt
当容器启动时会创建ServletContext对象并一直缓存该对象,直到容器关闭后该对象生命周
期结束。ServletContext对象的生命周期非常长,所以在使用全局容器时不建议存放业务数
据。
Request域 对应 HttpServlettRequest对象 也叫请求域
Session域 对应 HttpSession对象 也叫会话域
Application域 对应 ServletContext对象 也叫应用域