response
response与客户端连在一起,通过该对象可以对客户端发送响应
一.状态码
200表示成功、302表示重定向、404表示客户端错误(访问的资源不存在)、500表示服务器端错误
- sendError(int sc) -> 发送错误状态码,例如404、500
- sendError(int sc,String msg) ->发送错误状态码,还可以带一个错误信息
- setStatus(int sc) -> 发送成功的状态码,可以用来发送302
状态码实例:
public class AServlet extends HttpServlet{
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.sendError(404,"您访问的资源存在,就不给你看!");
}
}
二.响应头
响应头:ContenType、Refresh、Location等等
头就是一个键值对
- setHeader(String name,String value):适用于单值的响应头
- addHeader(String name,String value):适用于多值的响应头
- setIntHeader(String name,int value):适用于单值的int类型的响应头
- addIntHeader(String name,int value):适用于多值的int类型的响应头
- setDateHeader(String name,long value):适用于单值的毫秒类型的响应头
- addDateHeader(String name,long value):适用于多值的毫秒类型的响应头
响应头实例:
重定向:
(1).设置Location
(2).发送302状态码
public class AServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setHeader("Location", "/temp/BServlet");
resp.setStatus(302);
System.out.println("AServlet");
}
}
public class BServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("BServlet");
}
}
快捷重定向:
public class AServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.sendRedirect("/temp/BServlet");
}
}
定时刷新:
(1).设置Refresh
public class AServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
resp.getWriter().print("5秒后跳转到BServlet");
resp.setHeader("Refresh", "5;URL=/temp/BServlet");
}
}
public class BServlet extends HttpServlet {
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
resp.getWriter().print("欢迎来到 BServlet!");
}
}
三.响应体
通常是html、也可以是图片
response的两个流
- ServletOutputStream,用来像客户端发送字节数据
- PrintWriter,用来向客户端发送字符数据,需要设置编码
- 两个流不能同时使用
四.响应编码
解决办法:
在使用getWriter()方法之前,先调用下面方法:
response.setContentType("text/html;charset=utf-8")