(cookie和session、jsp)day30javaEE基础查漏补缺

cookie和session、jsp

1.用文档记录自己的bug

2.session有一个jsessionID

购物车是一个map集合

3.防止cookie丢失

cookie.setMaxAge(10*60);

4.cookie产生在服务器端,写在响应头,返回数据。

Cookie c2 = new Cookie("bb","22");         resp.addCookie(c2);//Set-Cookie:"aa=11bb=22"(响应头) 

再次访问服务器端的时候,cookie在请求头里。

5.cookie的数据结构??

相当于js的数组

Set-Cookie: NAME=VALUE;Expires=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE

name:cookie 的名称 

value:cookie 对应的值,动态生成的 

domain:服务器域名 

expiry:Cookie 有效终止日期 

path:Path 属性定义了 Web 服务器上哪些路径下的页面可获取服务器设置的 Cookie 

httpOnly:防脚本攻击 

secure:在 Cookie 中标记该变量,表明只有当浏览器和 Web Server 之间的通信协议为加密 认证协议时, 浏览器才向服务器提交相应的 Cookie。当前这种协议只有一种,即为 HTTPS。

6.cookie什么时候被销毁??

手动销毁,服务器设置cookie销毁时间

7.在Cookie产生的路径下 ,访问浏览器会携带Cookie,访问其他路径不会被携带

以后没有特殊的需求,Cookie携带的路径都会设置为项目的根目录,目的是为了项目下所有的资源都可以携带Cookie

8.cookie里面有自己的逻辑判断???

9.一次会话:浏览器不关闭

10.cookie占内存,要随时清理。

11.内存cookie与持久cookie,可以设置生存时间。

记住密码持久cookie

12.reqset和session没有父子关系。

13.sessionid服务器端创建session对象的时候自动生成(生成唯一的ID值)。

只要创建Session,就会在Cookie中保存一个Id

14.网站访问量过大,session会出现很多问题怎么解决?

1)将session用cookies 替换了,或者使用QuseryString

2)解决并发问题最好的方法就是锁住资源sychronized

3)可以做负载均衡,分散到不同的机器上

4)可以持久化到磁盘或者数据库,减少内存占用。

5)如果允许,适当缩短过期时间,这个是临时的方案。

网站访问量过大,session会出现很多问题怎么解决?_weixin_45378094的博客-CSDN博客_session过多

15.session持久化,其实是把sessionID存到cookie中,持久化cookie。

16.session持久化原理:

1)获取Session对象中的JSESSIONID

​ 使用Session对象中的方法session.getId();获取JSESSIONID

2)把JSESSIONID保存到Cookie对象中
3)设置Cookie对象的生命周期

在这里插入图片描述

17.购物车存储在什么位置比较合适?Session?Cookie?数据库?

1)Session(Memcached)方式
优点:购物车信息保存在服务端,可以保存1M 信息。
缺点:对于大型网站会占有过多的服务器内存资源,造成服务器压力过大。Session保存的信息会在用户退出登录后丢失。用户下次登录,购物车中商品信息丢失,用户只能从新选择。
2)Cookie方式
优点:购物车信息存储在客户端,不占用服务器资源,基本可以到达持久化存储。
缺点:Cookie有大小的限制,不能超过4K,而且不够安全。如果是个人PC机,Cookie能很好的保存购物车信息,但如果是公共办公环境,Cookie保存的信息基本就失效了(会被其他人购物车信息覆盖)。对一个大型的电子商务网站,我们需要对用户的购买行为进行分析,需要对用户推荐用户感兴趣的商品,如果把购物车信息保存在Cookie中,则不能对用户购买行为分析统计。
3)数据库存储
优点:持久化存储,可以分析用户购买行为。
缺点: 网站速度变慢,成本和维护增加。

购物车存储在什么位置比较合适?Session?Cookie?数据库?_浪子城-CSDN博客

18.服务器重启,Session数据会不会丢失呢(钝化)?

  • tomcat有没有配置钝化选项。配置了,不会丢失;不配置,会丢失
    钝化:我们tomcat服务器在关闭时,将内存的session数据,序列化到磁盘文件
    活化:我们tomcat服务器在重新启动时,将磁盘文件,反序列化到,服务器内存中…
  • 我们如果存放的对象,类必须实现序列化接口…

19.活化之后会不会清理这些存储序列化对象的文件

会,这些都是临时的文件。

20.session生命周期?

  • session对象什么时候创建
    • request.getSession()方法,Cookie中id和服务器的id匹配不上(没有id,id值不同)就创建
  • session对什么时候销毁
    • 默认30分钟销毁(一次会话), tomcat全局配置文件web.xml
      在这里插入图片描述

    • 调用方法session.invalidate();

21.如果一直用的话,30分钟会重新计算,不用了之后30分钟后会session对象被销毁。

21.Session:服务器用于存储数据 Cookie:浏览器用于存储数据

服务器持久的直接是session对象,浏览器持久是cookie

22.正常cookie只能存一个key=value。存多个值怎么办?

多个值存储到一个cookie中:

首先存储在一块的数值应该是相关联的。就是把多个值用一个特殊字符连接起来,(特殊字符就是为了截取字符),然后用一个键来存储连接的字符串。

23.JSP本质就是Servlet,内置对象9个

jsp页面,执行的时候被转成.java文件,编译为.class JSP本质就是Servlet,使用service方法获取请求,回复响应

内置对象,9个:

  • request**
  • response
  • ServletContext对象,在JSP写对象,只能写 application
  • ServletConfig对象,在JSP写对象,只能写config
  • HttpSession session:域对象存储数据,作用域一次会话,只要浏览器不关闭,数据就一直有效(默认值30分钟)
  • JspWriter out:字符输出流 ,可以在jsp页面中输出数据
  • Object page:当前对象,就是当前的Servlet,就是this
  • pageContext 最小域对象,作用范围是当前页面(打开jsp页面有对象,关闭页面对象就消失)
  • exception异常:在页面中输出异常信息

24.ServletContext(名字application)对象代表整个项目

只要项目(服务器)不关闭,就一直存在

特点:上下文环境对象:对应整个web应用的。一个web应用只能有一个ServletContext对象:

25.EL作用: 从域对象取出数据

自动从最小的域中找。

四个域对象中尽量不要存同名的键

26.在工作中,域对象中一般存储的都是什么信息呢?

错误|异常信息,和一些集合用于遍历。

27.后端,自己先写一个简单的页面,来测试自己的功能,然后再跟前端配合。

28.out.write("<script>…</script>")可以写吗?

可以

<%="<script>alert(\"hello\");</script>"%>

29.可以嵌入的语言叫做脚本语言。

30.url加时间戳,是为了欺骗浏览器,以为是访问不同的路径(如果是相同的路径,就会只加载缓存,不会获取新的数据了)。

31.req.getAttribut和req.getParameter的区别??

request.getAttribute()方法

而request.getParameter()方法是,如通过GET/POST等提交。

getParameter()方法—获取http提交过来的数据(String
该方法是用于客户端传递过来的参数,它的返回值类型永远是是字符串类型这个赋值动作是有客户端完成的。

getAttribute()方法—返回reques(sessiont)范围内存在的对象(Object),setAttribute设置的attribute
该方法是专用在请求传到服务器端后,在去使用其进行存取一些附加数据。它的返回类型永远是Object.

32.parameter和attribute都是传递参数,为什么不直接使用parameter呢?

1)getParameter获取的是客户端发送的参数,而且在服务器端不能通过setParameter(key, value)来添加参数,因为没有这个函数

所以如果需要在服务器端进行跳转,并需要想下个页面发送新的参数时,则没法实现。但是attribute可以,可以通过setAttribute(),将值放入到request对象,然后在其他页面使用getAttribute获取对应的值,这样就达到一次请求可以在多个页面共享一些对象信息

2)parameter返回值是字符串,意味着不能传递其他的对象,如List,但是attribute则可以存放任意类型的Java对象
原文链接:https://blog.csdn.net/weixin_40927436/article/details/101159009

33.web下的访问路径问题??

1)先说明请求页面的写法,在web中,页面路径主要写的有以下几种

请求重定向、转发、超链接、form表单提交的action

2)路径的写法主要注意以两点:

1、路径是谁发起的(浏览器,服务器)

2、路径开头直接 “/” 表示当前路径(主要就是这个当前路径)

转发是服务器发起的,其他都是由浏览器发起的。

3)当前路径

  • “http://localhost:端口号/项目名/xxx文件”,tomcat的项目都是在–tomcat根目录/webapps文件夹下,浏览器发起的请求,代码中的**“/”表示的当前路径就应该表示的是webapps的根目录**

  • “转发”,是由浏览器向服务器发起请求,“/”表示当前目录是idea中项目的Web的根目录(也可理为–tomcat/webapps/Web根目录

4)总结:

1、由浏览器发起的路径,“/”表示%tomcat根目录%/webapps根目录

2、由服务器发起的路径,“/”表示项目中的WebRoot根目录

博文地址:http://www.cnblogs.com/fnz0/p/5595546.html

34.out.print和out.write有啥区别:

out对象的类型是JspWriter。JspWriter继承了java.io.Writer类。
1)print方法是子类JspWriter,write是Writer类中定义的方法;

2)重载的print方法可将各种类型的数据转换成字符串的形式输出,而重载的write方法只能输出字符、字符数组和字符串等与字符相关的数据;

java中有这个方法:print(Object),没有这个方法:write(Object)
但是却有这个方法:write(String)

3)JspWriter类型的out对象使用print方法和write方法都可以输出字符串,但是,如果字符串对象的值为null时,print方法将输出内容为“null”的字符串,而write方法则是抛出NullPointerException异常。

总结:
out.print()方法,可以输出java对象。 //print为打印,可以打印任何东西
out.write()方法,只能输出字符串。== //write为写字,只能写出字符==
原文链接:https://blog.csdn.net/weixin_51631278/article/details/122005081

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值