HttpServletResponse 对象
request 和 response 对象代表请求和响应:获取客户端数据,需要通过 request 对象;向客户端
输出数据,需要通过 response 对象。 HttpServletResponse 的主要功能用于服务器对客户端的请求进行响应,将 Web 服务器处理后的
结果返回给客户端。service()方法中形参接收的是 HttpServletResponse 接口的实例化对象,这个对象
中封装了向客户端发送数据、发送响应头,发送响应状态码的方法
一、输出数据
1)、getWriter()获取字符流(只能响应回字符);
2)、getOutputStream()获取字节流(能响应一切数据)。响应回的数据到客户端被浏览器解析。注意:两者不能同时使用。
PrintWriter out = resp.getWriter();
out.write("<h1>Hello World</h1>");
ServletOutputStream out = resp.getOutputStream();
out.write("<h1>Hello World</h1>").getBytes());
二、乱码解决
resp.setContentType("text/html;charset=utf-8");
三、重定向跳转
重定向是一种服务器指导客户端的行为。客户端发出第一个请求,被服务器接收,经过处理服务器
进行响应,与此同时,服务器给客户端一个地址(下次请求的地址 resp.sendRedirect(“url”);),从描述中可以看出重定向当中有两个请求存在,并且属于客户端行为。
请求转发(req.getRequestDispatcher().forward()) | 重定向(resp.sendRedirect()) |
---|---|
一次请求,数据在 request 域中共享 | 两次请求,request 域中数据不共享 |
服务器端行为 | 客户端行为 |
地址栏不发生变化 | 地址栏发生变化 |
绝对地址定位到站点后 | 绝对地址可写到 http:// |
四、路径问题
相对路径: | 绝对路径: |
---|---|
书写路径时,无论是哪类请求相对路径都是相对当前资源的路径 | 格式:以 http:// 开头,或者以 / 开头 |
书写格式:直接从当前路径开始写,目录前不加任何符号;a.html html/b.html | 浏览器中:“/”代表的是 http://主机 |
相对路径在请求转发时可能会失效,在请求转发的情况下,因为地址栏不会发生改变,因此开发中不推荐使用相对路径 | 服务器中:“/”代表的是 http://主机 |