Javaweb-response

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")

 

你可能感兴趣的:(Javaweb)