功能:设置响应消息
- 设置响应行1.格式HTTP/1.1 200 ok,设置状态码:setStatus(int sc)
- 设置响应头:setHeader(String name,String value)
- 设置响应体:获取流输出流,
- 字符输出流getWriter(),2.字节输出流getOutputStream()
- 使用输出流,将数据输出到客户端
案例:
- 完成重定向:资源跳转的方式
-
代码实现
//设置状态码
// resp.setStatus(302);
// resp.setHeader("location","/loginDemo/failServlet");// 简单的重定向方法
resp.sendRedirect("/loginDemo/failServlet");
转发forward的特点:- 地址栏路径不变;
- 转发之恩呢访问当前服务器下的资源;
- 转发是一次请求,可以使用request对象来共享数据
重定向Redirect特点: - 地址栏发生变化;
- 重定向可以访问其他站点(服务器)的资源;
- 重定向是两次请求;不能使用request对象来共享数据;
路径的写法: - 路径分类
- 相对路径:通过相对路径不可以确定唯一资源;./index.html不以/开头以.开头
规则:找到访问当前资源和目标资源之间的相对位置关系;./代表当前目录,../后退一级目录; - 绝对路径:通过绝对路径可以确定唯一资源;以/开头的路径
如:localhost/loginDemo/failServlet
规则:判断定义的路径是给谁用的?判断请求将来从哪儿发出;- 给客户端浏览器使用:需要加虚拟目录(项目的访问路径)如重定向;
- 给服务器使用:不需要加虚拟目录;如转发
r如果服务器的虚拟路径变化,则需要一个一个修改代码,可以采取动态获取虚拟目录,getContextPath可以有效避免;
- 相对路径:通过相对路径不可以确定唯一资源;./index.html不以/开头以.开头
-
- 服务器输出字符数据到浏览器
- 步骤:获取字符输出流,输出数据;
- 注意乱码问题: //告诉浏览器应该使用什么进行解码,同时设置流编码
resp.setHeader("Content-type", "text/html;charset=UTF-8");
//简单的形式来设置编码
resp.setContentType("text/html;charset=UTF-8");
//设置流编码
// resp.setCharacterEncoding("UTF-8");
- 服务器输出字节数据到浏览器
// 1获取字节输出流
ServletOutputStream outputStream = resp.getOutputStream();
//输出数据
outputStream.write("holle你好".getBytes(StandardCharsets.UTF_8));
// resp.setCharacterEncoding("UTF-8"); - 验证码