Servlet学习笔记(回送字符&传递数据)

part1

getWriter() 和getOutputStream() 都可以回送字符数据

区别在于:
1. getWriter() 用于向客户机回送字符数据
2. getOutputStream() 返回的对象,可以回送字符数据,也可以回送字节数据(二进制数据)

/*getWriter()*/
PrintWriter out=response.getWriter();
out.println("abc");


/*getOutputStream()*/
OutputStream os=response.getOutputStream();
os.write("abc".getBytes());

但需要注意的是,同时使用printWriter和outputstream,则会发生错误:

OutputStream os=response.getOutputStream();
os.write("hello,world".getBytes());
PrintWriter out=response.getWriter();
out.println("abc");

报错内容:
java.lang.IllegalStateException: getOutputStream() has already been called for this response

原因:当发现os.write()时,就会把回送的信息封装到response对象中,返回给web服务,web服务器将response拆解成http响应信息,之后web服务器会检测response相关的流是否关闭,如果没有关闭,则关闭。(这也是为什么我们没有主动关闭流,程序也没问题的原因)

part2

传递数据部分
方法:
1. 使用java基础 static
2. 使用sendRedirect()
3. 使用session 传递

(1)sendRedirect()

response.sendRedirect("/UsersManager/MainFrame?username="+username+"&pwd="+password);

基本格式:

response.sendRedirect("servlet的地址?参数名=参数值&参数名=参数值...");

在接受数据的Servlet中:

String 参数=request.getParameter("参数名");

(2)使用session()来传递字符参数和对象

A.传递字符串
放入session

request.getSession.setAttribute("loginUser",username); 

取出session 在JSP中通过session取出

request.getSession.getAttribute("loginUser");

B.传递对象

User user= new User();
user.setName(“xiaoli”);
user.setPassWord(“123”);

放入session

request.getSession.setAttribute("userObj",user); 

取出session

User user=(User)request.getSession.getAttribute(“userObj”);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值