今天是佟刚老师Cookie和Session的第二个课时,主要以练习为主。
一.Java Web 中的 "/"的区别:
1. 在 超链接 href 属性, 表单的 action 属性中的 "/" 代表 web 站点的根目录: http://localhost:8080/
2. 在 response.sendRedirect() 方法参数中的 "/" 也代表 web 站点的根目录: http://localhost:8080/, 因为该方法
实际上就是一个自动的超链接
3. request.getRequestDispatcher() 方法参数中的 "/" 代表当前 web 应用的根目录,因为该方法只能访问当前 web 应用下的
资源, 所以 "/" 代表当前 web 应用的根目录
4. <c:url value='' /> 标签中 value 属性值以及 <c:redirect url=""> 中的 url 属性 中 "/" 代表当前 web 应用的根目录. 因为它们是 JSTL 标签
而 JSTL 是为当前 web 应用定制的标签, 所以 "/" 代表当前 web 应用的根目录. 实际上 JSTL 中的带地址的标签中的 "/" 都是如此.
二.url编码解码
1.JSTL中的<c:url></c:url>标签可以对url进行编码
2.URLEncoder.encode()方法可以对url进行编码
3.URLDecoder.decode()方法可以对url进行解码
三.url重写
1. JSTL中的<c:url></c:url>标签可以自动的选择是否进行url的重写
2.encodeURL()方法可以对url进行重写
四.在IE6中实现两个浏览器窗口共用一个session对象(也就是让Cookie持久化)
Cookie cookie = new Cookie(“JSESSIONID”,session.getId());
cookie.setMaxAge(60);
response.addCookie(cookie);
五.表单重复提交的定义
前提: 在 Servlet 中调用 RequestDispatcher.forward() 方法派发页面, 会导致浏览器所保留的 URL 是先前的表单提交的 URL,
此时点击"刷新", 浏览器将再次提交用户先前输入的数据,引起重复提交
1) 若已经提交表单, 在之后的页面点击 "刷新" 或 "F5" 算重复提交.
2) 若在之后的页面点击 "回退", 然后不仅过 "刷新" 直接点解 "提交" 也算重复提交
3) 若在之后的页面点击 "回退", 然后 "刷新" 表单页面, 再点击 "提交", 相当于重新打开一个页面, 不算重复提交.