请求转发
作用:实现多个servlet联动操作处理请求,这样能避免代码冗余,让servlet的职责更加明确
使用:req.getRequestDispatcher("要转发的地址").forward(req, resp);
地址:相对路径,直接书写servlet的别名即可
特点:
- 一次请求,浏览器地址栏信息不改变
- 请求转发后直接
return结束即可
重定向
作用:解决了表单重复提交的问题,以及当前servlet无法处理的请求的问题
使用:resp.sendRedirect(String uri);
时机:
- 如果请求中有表单数据,而数据又比较重要,不能重复提交,建议使用重定向
- 如果请求被Servlet接收后,无法进行处理,建议使用重定向定位到可以处理的资源
特点:
- 两次请求,两个request对象
- 浏览器地址栏信息改变
Cookie技术
作用:解决了发送的不同请求的数据共享问题
Cookie的创建和存储:
- 创建Cookie对象
Cookie c=new Cookie(String name, String value); - 设置cookie(可选)
设置有效期c.setMaxAge(int seconds);
设置有效路径c.setPath(String uri); - 响应Cookie信息给客户端
resp.addCookie(c);
Cookie的获取
- 获取Cookie信息数组
Cookie[] cks=req.getCookies(); - 遍历数组获取Cookie信息,使用for循环遍历即可,示例:
if(cks!=null){ for(Cookie c:cks){ String name=c.getName(); String value=c.getValue(); System.out.println(name+":"+value); }}
特点:
- 一个Cookie对象存储一条数据。多条数据,可以多创建几个Cookie对象进行存储。
- 浏览器端的数据存储技术。
- 存储的数据声明在服务器端。
- 临时存储:存储在浏览器的运行内存中,浏览器关闭即失效。
- 定时存储:设置了Cookie的有效期,存储在客户端的硬盘中,在有效期内符合路径要求的请求都会附带该信息。
- 默认cookie信息存储好之后,每次请求都会附带,除非设置有效路径
本文深入解析了请求转发和重定向在Servlet中的应用,对比了它们的特点与使用场景,同时介绍了Cookie技术解决数据共享问题的方法。

219

被折叠的 条评论
为什么被折叠?



