Servlet传递数据方式
来源:互联网 发布:ubuntu 安装打印机 编辑:程序博客网 时间:2024/04/30 02:58
Servlet传递数据方式
基本概述
Servlet传递数据的方式有很多,这里提供五种方式:
1、静态变量
2、HttpServletResponse的sendRedirect()方法
3、HttpServletRequest的getRequestDispatch()方法
4、HttpServletRequest的getSession()方法
5、HttpServletRequest的setAttribute()方法
静态变量
通过建立一个数据类来进行传递。
案例:
public class MyData{
public static String data; //通过使用该类来实现数据传递
}
HttpServletResponse的sendRedirect()方法
sendRedirect()方法是让浏览器重定向到另一个链接。其内部原理是设置状态码为303,并设置相应的Location响应头。
基本语法:
response.sendRedirect("/Web应用名/资源名?uname="+username+"&pwd="+password);
response.sendRedirect(“servlet的地址?参数名=参数值&参数名=参数值...”);
参照值是String , 参数名应当使用 字母组合
在接受数据的Servlet中:
String 参数=request.getParameter(“参数名”);
基本原理图
PS:使用重定向不能使用PrintWrite,ServletOutputStream这样的流。因为重定向已经将消息返回给浏览器,其数据流也就没必要使用了。
HttpServletRequest的getRequestDispatch()方法
getRequestDispatch()方法是使WEB服务器从当前Servlet转发到当前应用下的另一个Servlet。
基本语法:
request.getRequestDispatcher(资源地址).forward(request,response);
资源地址:不需要项目名。因为它只能在WEB服务器内部转发。
基本原理图
PS:getRequestDispatcher()请求转发可以一直转发下去,只要最终会处理并给服务器相应内容就行了。而且请求转发不会改变浏览器的URL,sendRedirect()会改变URL。
注意事项:
1、使用forward不能转发到该WEB应用外的URL
2、因为forward发生在文本服务器内,所以Servlet1、Servlet2等等,只要一直转发,使用的都是相同的request和response
HttpServletRequest的getSession()方法
getSession()方法会获取一个会话,这个内容会在另一篇博客会话技术中详细说明。
基本语法:
1、放入session:request.getSession.setAttribute("loginUser",username);
2、取出session:request.getSession.getAttribute("loginUser");
PS:该方法可以传递对象
案例:
放入:
User user= new User();
user.setName(“zs”);
user.setPassWord(“123”);
request.getSession.setAttribute("userObj",userObj);
取出:
User user=(User)request.getSession.getAttribute(“userObj”);
HttpServletRequest的setAttribute()方法
setAttribute()方法可以设置一个键值对,该键值对在该request的有效期内都可以使用。相应的还有removeAttribute()注销键值对的方法。该方法经常和getRequestDispatch()一起使用。
基本语法:
setAttribute(name, value);
PS:request的Attribute在一次请求中有效。一次请求:没有将响应消息返回给浏览器就视为一次请求。
比较sendRedirect()和forward(request,response)
1、sendRedirect()重定向,forward()转发
2、实际发生的位置不一样
sendRedirect 发生在浏览器
forward 发生在web服务器
3、使用用法不一样
request.getRequestDispatcher(“/资源URI”).forward(request,response)
response.sendRedirect(“/web应用/资源URI”);
4、能够去URL范围不一样
sendRedirect可以去任意URL
forward 只能去当前的WEB应用的资源
----------参考《韩顺平.细说Servlet》
- Servlet传递数据方式
- Servlet之间传递数据
- Json数据 传递方式
- Android 数据传递方式
- Android数据传递方式
- servlet和表单数据传递
- Jsp-Servlet常见 两种 页面间传递数据方式(request转发和session)
- servlet中参数的传递方式
- JSP传递值给servlet的方式
- activity之间数据传递方式
- MVC传递数据的方式
- Intent传递数据的方式
- 表单的数据传递方式
- 数据传递的多种方式
- Activity之间传递数据方式
- matlab的数据传递方式
- Serializable方式实现数据传递
- Servlet(Action)之间的数据传递
- 给Smartisan OS的建议和反馈-1
- centos 设置双网卡,双网关
- mysql触发器
- vi查找到关键字后怎么取消这个关键字的颜色?
- 工厂三兄弟之简单工厂模式(二)
- Servlet传递数据方式
- struct 的使用...#include <string.h>...char*strcpy(char *, const char *);
- java Comparable接口和Comparator接口的区别
- 服务端构架干货:快节奏多人游戏的技术实现
- 快速排序(殷人昆版)
- Bacula网络备份环境搭建
- 有趣的Linux命令行:随机输出唐诗宋词
- 2015,探索的一年
- 2015年,关于品牌经营的收获