session:
1.什么时候创建session对象:
1)对于jsp而言:
①若当前的jsp是客户端访问的当前web 应用的第一个资源,且jsp的page指定session
的属性值为FALSE,则服务器就不会为jsp创建一个Httpsession对象;
②若当前jsp不是客户端访问的当前web应用的第一个资源,且其他页面已经创建一个
httpsession对象,当前jsp页面会返回一个会话的httpsession对象,而不会创建一个新的。
2)对于servlet而言:
若servlet是客户端访问的第一个web应用的资源,则只有调用了request.getSession或request.getSession(true)才会创建HttpSession对象。
3)在servlet中如何获取Httpsession对象:
①request.getSession(Boolean create):
>当create为FALSE,若没有和当前jsp关联的Httpsession对象返回null,有返回Httpsession对象;
>当create为true,一定返回Httpsession对象;
②request.getSession()等同于request.getSession(true);
4)session="false" 意思是jsp页面禁用session隐含变量。
2.什么时候销毁Httpsession对象:
1)直接调用Httpsession 的 invalidate()方法:使Httpsession失效。
2)服务器卸载了当前web应用。
3)超出Httpsession的过期时间,session.setMaxInactiveInterval(int)可以设置过期时间,默认为半小时。
4)在web.xml文件中设置Httpsession的过期时间:单位为分钟。
<session-config>
<session-timeout>30</session-timeout>
</session-config>
5)并不是关闭了浏览器就销毁了Session。
3.URL重写:
1)不支持cookie的情况下也浏览器也可以与web服务器保持连续的会话
2)将会话标号以参数形式附加在超链接的URL地址后面的技术称为URL重写
3)代码:
<a href="<%= response.encodeUrl("login.jsp")%>">重新登录</a>
4.跳转到其他页面一定要用绝对路径:request.getContextPath() / 文件名
5.利用向 session 中放标记的方式避免表单的重复提交:
1)在原表单页面,生成一个随机值token
2)在原表单页面,把token值放入session属性中
3)在原表单页面,把token值放入到隐藏域中
4)在目标的servlet中:获取session和隐藏域中的token值
5)比较两个值是否一致:若一致,受理请求,且把session域中的token属性销毁
6)若不一致,则直接相应提示页面
6.使用Httpsession实现验证码功能原理:
1)在原表单页面,生成一个随机的验证码图片,并把验证码中的字符串传人session中
2)在原表单页面,创建一个文本,用来输入验证码信息
3)在目标页面,获取文本输入的字符串和session中的字符串做比较,若一致则受理请求并销毁session中的字符串
4)若不一致则直接返回原表单页面,并提示验证码错误
1.什么时候创建session对象:
1)对于jsp而言:
①若当前的jsp是客户端访问的当前web 应用的第一个资源,且jsp的page指定session
的属性值为FALSE,则服务器就不会为jsp创建一个Httpsession对象;
②若当前jsp不是客户端访问的当前web应用的第一个资源,且其他页面已经创建一个
httpsession对象,当前jsp页面会返回一个会话的httpsession对象,而不会创建一个新的。
2)对于servlet而言:
若servlet是客户端访问的第一个web应用的资源,则只有调用了request.getSession或request.getSession(true)才会创建HttpSession对象。
3)在servlet中如何获取Httpsession对象:
①request.getSession(Boolean create):
>当create为FALSE,若没有和当前jsp关联的Httpsession对象返回null,有返回Httpsession对象;
>当create为true,一定返回Httpsession对象;
②request.getSession()等同于request.getSession(true);
4)session="false" 意思是jsp页面禁用session隐含变量。
2.什么时候销毁Httpsession对象:
1)直接调用Httpsession 的 invalidate()方法:使Httpsession失效。
2)服务器卸载了当前web应用。
3)超出Httpsession的过期时间,session.setMaxInactiveInterval(int)可以设置过期时间,默认为半小时。
4)在web.xml文件中设置Httpsession的过期时间:单位为分钟。
<session-config>
<session-timeout>30</session-timeout>
</session-config>
5)并不是关闭了浏览器就销毁了Session。
3.URL重写:
1)不支持cookie的情况下也浏览器也可以与web服务器保持连续的会话
2)将会话标号以参数形式附加在超链接的URL地址后面的技术称为URL重写
3)代码:
<a href="<%= response.encodeUrl("login.jsp")%>">重新登录</a>
4.跳转到其他页面一定要用绝对路径:request.getContextPath() / 文件名
5.利用向 session 中放标记的方式避免表单的重复提交:
1)在原表单页面,生成一个随机值token
2)在原表单页面,把token值放入session属性中
3)在原表单页面,把token值放入到隐藏域中
4)在目标的servlet中:获取session和隐藏域中的token值
5)比较两个值是否一致:若一致,受理请求,且把session域中的token属性销毁
6)若不一致,则直接相应提示页面
6.使用Httpsession实现验证码功能原理:
1)在原表单页面,生成一个随机的验证码图片,并把验证码中的字符串传人session中
2)在原表单页面,创建一个文本,用来输入验证码信息
3)在目标页面,获取文本输入的字符串和session中的字符串做比较,若一致则受理请求并销毁session中的字符串
4)若不一致则直接返回原表单页面,并提示验证码错误