JavaWeb学习笔记2
转发与重定向
转发
- RequestDispatcher对象
- forward()方法
语法
request.getRequestDispatcher("url").forward(request.response);
<jsp:forward page="url"/>
重定向
- 将用户请求重新定位到一个新的URL
语法
response.sendRedirect(''url'');
转发的工作方式
重定向的工作方式
转发与重定向的区别
比较项 | 转发 | 重定向 |
URL变化 | 否 | 是 |
重新发出请求 | 不会 | 会 |
目标URL要求 | 是 | 否 |
目标URL要求 | 仅本Web应用 | 任意URL |
注意: 重定向是客户端行为,转发是服务器行为
session的原理与使用
session可以在多次请求中保存和使用数据
语法
session.setAttribute("userName","张三丰");
String userName=(String)session.getAttribute("userName");
session的工作方式
每个session都有一个唯一的sessionid
- session.getId();
- public String getId();
会话的清除和过期
- session的数据是在服务端的,服务器保存的会话数据量会原来越大,从而导致性能问题。
- 若没有清理机制,会导致性能问题或服务器崩溃
- 程序主动清除session数据
- 服务器主动清除长时间没有再次发出请求的session
程序主动清除session数据
- 设置会话失效:session.invalidate();
- 移除会话的一个属性
session.removeAttribute("userName");
服务器主动清除长时间[默认30分钟]没有再次发出请求的session
- 设置会话过期时间
- 方法一
//单位:秒
public void setMaxInactiveInterval(int interval);
- 方法二
<session-config>
<!--单位:分钟-->
<session-timeout>30</session-timeout>
</session-config>
小结
- 用浏览器访问服务器–产生会话
- 通过浏览器在网站东路–在会话中保存数据
- 登陆成功后用个人身份进行访问–会话有效期内
- 关闭了浏览器–结束会话
- 服务器主动结束会话–会话到期
- 使会话失效、删除属性–及时释放会话资源
- 程序主动结束会话、会话到期–会话中的数据丢失
cookie
cookie以文件方式保存数据
- 添加数据
public void addCookie(Cookie cookie);
- 获取数据
public Cookie[] getCookies();
- 设置有效期
public void setMaxAge(int expiry);
- 用户可以禁用cookie
- cookie保存在客户端
application
主要方法
public void setAttribute(String name,Object object);
public Object getAttribute(String name);
三个对象对比
request、session、application
- 相同点
- 都可以存储属性
- 不同点
- request中存储的数据仅在一个请求中可用
- session中存储的数据在一个会话的有效期内可用
- application中存储的数据在整个Web项目中可用