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