在一个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");
}