Servlet基础梳理(四)

本篇说一下session和路径的问题。

session:

是一种在服务器端保存http状态信息的方案,目前有两种实现方式:基于Cookie或者URL重写。

基于cookie:第一次访问服务器,服务器给响应的cookie中带有sessionid,再次请求时把cookie带回。匹配sessionID。

URL重写:在请求的url中将sessionid以参数形式进行提交,服务器获取并进行匹配。action="<%response.encodeURL("welcome.jsp")%>"

创建时机:

并非第一次访问服务器jsp都会创建session,如果jsp设置session=false不创建

如果访问的页面不是第一次访问服务器的第一个资源,那么返回本次会话的session,自身不再创建

如果第一次访问的是Servlet,只有调用request.getsession()或request.getsession(true)才会创建session。

销毁:

调用session.invalidate()直接销毁

卸载web应用

超过session的过期时间默认半个小时:(session.getMaxInactiveInterval());可以设置(session.setMaxInactiveInterval()),在 web.xml中设置,时间单位为分钟。

对于session,最重要的两个方法:session.setAttribute(arg0, arg1);session.getAttribute(arg0)。

URL路径:

开发中尽量使用绝对路径,因为绝对路径一定没问题,相对路径可能有问题。写法如下:

response.sendRedirect(request.getContextPath()+"/shoppingCart/person.jsp");

在Servlet/jsp中,因为路径中/问题引发很多路径问题,这里主要说一下/的两种含义:

当前web应用的根路径:由Servlet容器处理则web应用的根路径->请求转发时->web.xml中url配置时->各种定制标签中当前web站点的根路径:浏览器解析->超链接->表单中的action中->请求重定向时候

避免这些错误的方式就是使用绝对路径。

最后提一下①表单重复提交和验证码的机制问题:

因为这两个运行的原理相同,基本上一起提一下:

1 在表单原始界面生成验证码图片(①产生字符串),并把图片中字符放入session

2 表单中输入验证码(①不用输入自己产生)

3 Servlet中获取两个值比较,一致则受理成功,销毁session中验证码,不一致则打回重新

OK,,这一篇暂时说这些吧





你可以很有个性,但某些时候请收敛。

Servlet基础梳理(四)

相关文章:

你感兴趣的文章:

标签云: