1、sendError()发送状态码
package cn.itcast.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 演示发送状态码
* @author cxf
*
*/
public class AServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.sendError(404, "您访问的资源存在,就不给你看!");
}
}
2、重定向
1)设置Location
2)发送302状态码
资源路径:项目名+文件访问路径(web.xml的配置路径)
public class BServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("BServlet");
/*
* 重定向:
* 1. 设置Location
* 2. 发送302状态码
*/
// response.setHeader("Location", "/day10_1/CServlet");
// response.setStatus(302);
//快捷的重定向方法
response.sendRedirect("/day10_1/CServlet");
}
}
3、演示定时刷新
package day10_1;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Cservlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//定时刷新Refresh
//以下用来发送响应体
PrintWriter writer=response.getWriter();
writer.print("欢迎XXX登录!5秒钟后会自动跳转到主页!");
//设置名为Refresh的响应头
response.setHeader("Refresh", "5;URL=/day10_1/servlet/Dservlet");
}
}
4、禁用浏览器缓存(开发时禁用比较方便)
package cn.itcast.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 禁用浏览器缓存
* @author cxf
*
*/
public class FServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/*
* Cache-Control、pragma、expires
*/
response.setHeader("Cache-Control", "no-cache");
response.setHeader("pragma", "no-cache");
response.setDateHeader("expires", -1);
response.getWriter().print("hello hello!");
}
}
5、响应字节数据:
response的两个流(都是输出):
ServletOutputStream,用来向客户端发送字节数据。 ServletOutputStream out = resopnse.getOutputStream();
PrintWriter,用来向客户端发送字符数据!需要设置编码。PrintWriter writer = response.getWriter();
两个流不能同时使用!
package day10_1;
import java.io.FileInputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
public class Eservlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//显示图片
String path="C:\\Users\\Administrator\\Desktop\\psb.jpg";
FileInputStream in=new FileInputStream(path);
//将输入流的内容 读取到字节数组中,使用commons-io里面的方法
byte[] bytes=IOUtils.toByteArray(in);
ServletOutputStream so=response.getOutputStream();
so.write(bytes);
}
}