servlet 是一个从 post&get 获取数据并将数据传递到 Web 应用程序的视图部分的对象,因此可以用作:
- 处理或存储从 HTML 表单提交的数据
- 提供动态内容,例如数据库查询的结果
但是在维基百科中也可以看到:
- 管理无状态 HTTP 协议中不存在的状态信息,例如将商品填充到相应客户的购物车中
那么这里所说的将商品填充到相应客户的购物车中是什么意思呢?
这是否意味着 servlet 是 Session 变量?有人可以解释这种行为并更好地举一个例子吗?谢谢。
servlet 是一个从 post&get 获取数据并将数据传递到 Web 应用程序的视图部分的对象,因此可以用作:
但是在维基百科中也可以看到:
那么这里所说的将商品填充到相应客户的购物车中是什么意思呢?
这是否意味着 servlet 是 Session 变量?有人可以解释这种行为并更好地举一个例子吗?谢谢。
HTTP 是无状态的。这意味着服务器返回的数据不依赖于用户之前的任何操作。Cookie 和其他非 HTTP 方法使 Web 看起来是有状态的,例如使用户能够在网站上登录和退出。
查看: http ://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html
对于应用程序开发人员来说,它始终是无状态的。
对于最终用户来说,它似乎是有状态的
现在,
每个 HTTP 请求都会导致一个新的 servlet 调用(即,一个线程调用 servlet 的服务和 doXxx 方法),无论连接是否保持活动。
编辑:
HttpSession 对象用于设置与特定会话相关的信息,例如当前会话的购物车中的产品数量。请注意,如果浏览器关闭或清除 cookie,会话将关闭。
网络服务器如何知道它是同一个会话?
Webservers 以 cookie 的形式向浏览器发送 sessionId。并且,浏览器将具有 sessionId 的 cookie 发送回服务器以供后续请求。
浏览器如何识别为链接/请求发送哪些 cookie?
它基于这些参数。如果请求与这些参数匹配,则浏览器会发送该特定 cookie:
域:发出请求的域名。
路径:如果上下文根路径名称相同。
安全:如果给定的 cookie 可以在此非安全通道上发送,则服务器发送
如果 cookie 被禁用,则它使用 URL 重写。
即使在浏览器关闭和打开后也可以保留会话吗?是的。答案是 cookie + DB + 谷歌搜索 :)
servlet 还可以通过以下方式访问由您的容器(appsrver)创建的会话request.getSession()
使用会话,servlet 可以进行会话管理,例如将购物车项目存储在会话中,并使其在来自客户端的不同请求时可访问。
可从 HttpServletRequest 访问 HttpSession 对象 对象作为 Servlet 的 doXXX() 方法中的方法 arg 传递。此会话是有状态的
在 java Servlet 中,
我们可以将 get/post 请求参数中的变量值存储在
请求状态或会话状态。
对于请求状态变量 -
request.setAttribute("requestvariable", "My Value");
将值保存在一个完整的请求 - 响应周期中。
在会话状态变量中 -
request.getSession().setAttribute("sessionvariable", "My Value");
将在同一浏览器会话中保存多个请求 - 响应周期中的值。
变量的值也可以通过
request.getSession().removeAttribute("sessionvariable");
此会话变量值可以在应用程序中的多个 jsp/servlet 中提供,例如会话中的用户购物车信息。
因此 Servlet 在这里作为控制器工作,变量的状态存储在框架指定的 api 和变量中的会话或请求中。