session何时会被创建

session何时会被创建

  • 1、 请求JSP页面时自动创建session,利用request.getSession(true);语句 原因: 由于HTTP是无状态协议,这意味着每次客户端检索网页时,都要单独打开一个服务器http连接,如果我同一个浏览器,不同页面打开你的主页10次,那就要进行10次连接和断开(TCP3次握手,4次挥手),浪费系统资源,http提供了一种长连接,keep-alive,相同会话的不同请求可以用同一连接,故jsp默认创建session。而session的创建过程中会自动将sessionId写入cookie的JSESSIONID中的,这样,只要不关闭浏览器,你在同一网站的任意网页跳转,由于每次请求都会携带同一个sessionId,不会重新创建新的会话,防止创建多个会话浪费系统资源。 否则:黑客利用几台主机,疯狂的点击某一个JSP页面,如果每次点击都创建一个新的会话,可能使服务器崩溃。

例子: 登录函数:

代码语言:javascript
复制
// 用户登录操作
	public void login(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("gb2312");
		String account = request.getParameter("account");
		consumerDao = new ConsumerDao();
		ConsumerForm consumerForm = consumerDao.getConsumerForm(account);
		if (consumerForm == null) {
			request.setAttribute("information", "您输入的用户名不存在,请重新输入!");
		} else if (!consumerForm.getPassword().equals(request.getParameter("password"))) {
			request.setAttribute("information", "您输入的登录密码有误,请重新输入!");
		} else {
		request.setAttribute("form", consumerForm);
	}
	RequestDispatcher requestDispatcher = request.getRequestDispatcher("dealwith.jsp");
	requestDispatcher.forward(request, response);
}</code></pre></div></div><p>登录主页:</p><div class="rno-markdown-code"><div class="rno-markdown-code-toolbar"><div class="rno-markdown-code-toolbar-info"><div class="rno-markdown-code-toolbar-item is-type"><span class="is-m-hidden">代码语言:</span>javascript</div></div><div class="rno-markdown-code-toolbar-opt"><div class="rno-markdown-code-toolbar-copy"><i class="icon-copy"></i><span class="is-m-hidden">复制</span></div></div></div><div class="developer-code-block"><pre class="prism-token token line-numbers language-javascript"><code class="language-javascript" style="margin-left:0">&lt;body onselectstart=&#34;return false&#34;&gt;
&lt;table width=&#34;800&#34; height=&#34;496&#34; border=&#34;0&#34; align=&#34;center&#34; cellpadding=&#34;0&#34; cellspacing=&#34;0&#34; background=&#34;images/login.jpg&#34;&gt;
	&lt;tr&gt;
		&lt;td valign=&#34;top&#34;&gt;
			&lt;table width=&#34;658&#34; border=&#34;0&#34;&gt;
				&lt;tr&gt;
					&lt;td colspan=&#34;2&#34;&gt;&amp;nbsp;&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr&gt;
					&lt;td width=&#34;92&#34; height=&#34;358&#34;&gt;&amp;nbsp;&lt;/td&gt;
					&lt;td width=&#34;550&#34; valign=&#34;bottom&#34;&gt;
						&lt;form name=&#34;form1&#34; method=&#34;post&#34; action=&#34;ConsumerServlet?method=0&amp;sign=0&#34;
							onSubmit=&#34;return userCheck()&#34;&gt;
							&lt;table width=&#34;291&#34; border=&#34;0&#34; align=&#34;center&#34; cellpadding=&#34;0&#34; cellspacing=&#34;0&#34;&gt;
								&lt;tr&gt;
									&lt;td width=&#34;66&#34; height=&#34;30&#34;&gt;用户名:&lt;/td&gt;
									&lt;td width=&#34;225&#34;&gt;&lt;input name=&#34;account&#34; type=&#34;text&#34; class=&#34;inputinput&#34; id=&#34;account&#34; size=&#34;30&#34;&gt;&lt;/td&gt;
								&lt;/tr&gt;
								&lt;tr&gt;
									&lt;td height=&#34;30&#34;&gt;密&amp;nbsp;&amp;nbsp;码:&lt;/td&gt;
									&lt;td&gt;&lt;input name=&#34;password&#34; type=&#34;password&#34; class=&#34;inputinput&#34; id=&#34;password&#34; size=&#34;30&#34;&gt;&lt;/td&gt;
								&lt;/tr&gt;
								&lt;tr&gt;
									&lt;td height=&#34;30&#34; colspan=&#34;2&#34; align=&#34;center&#34;&gt;&lt;input type=&#34;image&#34; class=&#34;inputinputinput&#34; src=&#34;images/land.gif&#34;&gt;
										&amp;nbsp;&amp;nbsp; &lt;a href=&#34;#&#34; onClick=&#34;javascript:document.form1.reset()&#34;&gt;&lt;img src=&#34;images/reset.gif&#34;&gt;&lt;/a&gt; &amp;nbsp;&amp;nbsp; &lt;a
										href=&#34;consumer/accountAdd.jsp&#34;&gt;&lt;img src=&#34;images/register.gif&#34;&gt;&lt;/a&gt;&lt;/td&gt;
								&lt;/tr&gt;
							&lt;/table&gt;
						&lt;/form&gt;
					&lt;/td&gt;
				&lt;/tr&gt;
			&lt;/table&gt;
		&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;

</body>