在一个servlet的请求中,响应的方式的通常有四式,response.getWriter()
,response.getOutputStream()
, request.getRequestDispatcher("ajax.jsp").forward(request, response)
和 response.sendRedirect("ajax.jsp")
。 其中
- response.getWriter() 输出页面
- response.getOutputStream() 输出二进制流文件
- request.getRequestDispatcher("ajax.jsp").forward(request, response) 页面跳转
- response.sendRedirect("ajax.jsp") 重定向
getWriter
返回可将字符文本发送到客户端的 PrintWriter
对象。
/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 单独这一块,输出Welcome to Servlet PrintWriter out = response.getWriter(); out.println("<body><h1>"); out.println("Welcome to Servlet"); out.println("</h1></body>"); }
getOutputStream
getOutputStream 返回适用于在响应中编写二进制数据的ServletOutputStream
。
/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { OutputStream os = response.getOutputStream(); InputStream is = new FileInputStream(new File("D:\\pic\\P41004-154736.jpg")); byte[] buf = new byte[1024]; while (is.read(buf) > 0) { os.write(buf); } os.flush(); is.close(); os.close(); }
getRequestDispatcher("ajax.jsp").forward(request, response)
/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.getRequestDispatcher("ajax.jsp").forward(request, response); }
sendRedirect("ajax.jsp")
/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.sendRedirect("ajax.jsp"); }