JavaWeb学习笔记2

转发与重定向

转发

  • RequestDispatcher对象
  • forward()方法

语法

request.getRequestDispatcher("url").forward(request.response);
<jsp:forward page="url"/>

重定向

  • 将用户请求重新定位到一个新的URL

语法

response.sendRedirect(''url'');

转发的工作方式

java重定向设置session丢失 java重定向session变了_重定向

重定向的工作方式

java重定向设置session丢失 java重定向session变了_服务器_02

转发与重定向的区别

比较项

转发

重定向

URL变化



重新发出请求

不会


目标URL要求



目标URL要求

仅本Web应用

任意URL

注意: 重定向是客户端行为,转发是服务器行为

session的原理与使用

session可以在多次请求中保存和使用数据

语法

session.setAttribute("userName","张三丰");
String userName=(String)session.getAttribute("userName");

session的工作方式

每个session都有一个唯一的sessionid

  • session.getId();
  • public String getId();

java重定向设置session丢失 java重定向session变了_服务器_03

会话的清除和过期

  • 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>

小结

  1. 用浏览器访问服务器–产生会话
  2. 通过浏览器在网站东路–在会话中保存数据
  3. 登陆成功后用个人身份进行访问–会话有效期内
  4. 关闭了浏览器–结束会话
  5. 服务器主动结束会话–会话到期
  6. 使会话失效、删除属性–及时释放会话资源
  7. 程序主动结束会话、会话到期–会话中的数据丢失

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项目中可用