Web项目
Srevlet
概念:Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客 户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
定位:Java Servlet用Java编写的服务器端程序(web application)。
作用:其主要功能在于交互式地浏览和修改数据,生成动态Web内容。
理解:狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一 般情况下,我们将Servlet理解为后者
HttpServlet 是 Servlet 接口的一个实现类,但它本身是个抽象类,主要负责的是 HTTP 请求的处理,根据我们要支持的方法,选择覆写 doGet 或者 doPost 或者其他 合适的方法即可。
-
配置资源映射:路径必须是/开头,否则启动报错,后边的部分保证唯一 的英文就行
-
tomcat查找url,查找某个项目中的服务/资源的过程:
- 匹配uri (接着的资源路径)
- 通过uri查找对应的Servlet
-
生命周期:
Servlet 通过调用 init () 方法进行初始化。
Servlet 调用 service() 方法来处理客户端的请求。
Servlet 通过调用 destroy() 方法终止(结束)。
最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。
实际在编写servlet程序的时候,不再需要覆盖Service方法了,只要覆盖doGet或者doPost即可。
-
Servlet非线程安全:同一个Servlet,多线程在http请求时,调用serclet.service()方法,存在Servlet中实例变量和静态变量的线程安全问题
Cookies和Session
Cookies
定义: Cookies 是存储在客户端计算机上的文本文件,并保留了用户的各种跟踪信息
作用: 会话保持,如完成用户的登录与状态保持
应用场景:在登录页面使用,勾上remember me/记住我/多少天内免登录选项,下次可以直接登录
原理:
- 客户端向服务区发起登录请求
- 服务器脚本向浏览器发送一组 Cookies。例如:姓名、年龄或识别号码等。
- 浏览器将这些信息存储在本地计算机上,以备将来使用。
- 当下一次浏览器向 Web 服务器发送任何请求时,浏览器会把这些 Cookies 信息发送到服务器,服务器将使用 这些信息来识别用户。
- 如果用户的浏览器指向任何匹配该 Cookie 的路径和域的页面,它会重新发送 Cookie 到服务器。
- Servlet 就能够通过请求方法 request.getCookies() 访问 Cookie,该方法将返回一个 Cookie 对象的数组。
Session
定义: session 是存储在服务器上的文本文件,并保留了用户的各种跟踪信息
作用: 会话保持,如完成用户的登录与状态保持,因为在服务器端,所以相对安全一些
HttpSession 对象
- Servlet 还提供了 HttpSession 接口,该接口提供了一种跨多个页面请求或访问网站时识别用户以及存储有关 用户信息的方式
- Servlet 容器使用这个接口来创建一个 HTTP 客户端和 HTTP 服务器之间的 session 会话。会话持续一个指定 的时间段,跨多个连接或页面请求。
- 我们可以通过调用 HttpServletRequest 的公共方法 getSession() 来获取 HttpSession 对象
- 一般情况下,session是直接存储在指定服务器的内存中的,一般使用够了,但是在集群场景当中,可能需要通过 session共享,来保证用户在不同的服务器上都可以得到认证
- 将session保存在服务器数据库或者文件中的行为称之为session持久化
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oXmRQDEg-1595412621235)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1595411354433.png)]
Cookies和Session的区别
session | cookie | |
---|---|---|
使用场景 | 访问敏感url通过session判断用户身份 | 在登录页面使用,勾上remember me/记住我/多少天内免登录选项,下次可以直接登录 |
原理 | 服务器的实现:(1)数据存在服务器(2)服务器重启会消失 | 客户端的实现:(1)数据都是保存在客户端浏览器本地文件(2)关闭浏览器不影响 |