响应消息:服务器端发给客户端的消息
响应行:
- 组成:协议、状态码、状态码描述
- 响应状态码: 服务器发给客户端浏览器当前请求与响应的一个状态
1 1xx表示服务器接收客户端消息,当前没有接收完成
2 2xx表示成功
3 3xx表示重定向,302(重定向)、 304(访问缓存)
4 4xx表示客户端错误,404(请求路径没有对应资源)、405(请求方式没有对应方法)
5 5xx表示服务端错误,500(服务器端内部出现异常)
响应头:
1.Content-Type:服务器告诉客户端本次响应体数据格式与编码格式
2.Content-disposition:服务器告诉客户端以什么格式打开响应体数据
Response对象
功能:1.设置响应行、2.设置响应头、3.设置响应体
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/demo01")
public class ResponseDemo01 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("demo01....");
resp.setStatus(302);
resp.setHeader("location","/demo02");
//resp.sendRedirect("/demo02"); //第二种方法
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
}
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/demo02")
public class ResponseDemo02 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("demo02....");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
}
重定向与转发的特点:
服务器输出字符、字节数据到浏览器:
@WebServlet("/demo03")
public class ResponseDemo03 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("utf-8");
resp.setHeader("content-type","text/html,charset=ytf-8");
//resp.setContentType("text/html,charset=ytf-8"); //简单方式
//1.获取字符输出流
PrintWriter pw = resp.getWriter();
//2.输出数据
pw.write("hello world");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
}
@WebServlet("/demo03")
public class ResponseDemo03 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setHeader("content-type","text/html,charset=ytf-8");
//resp.setContentType("text/html,charset=ytf-8"); //简单方式
ServletOutputStream outputStream = resp.getOutputStream();
outputStream.write("你好".getBytes("utf-8"));
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp);
}
}
案例----验证码
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
@WebServlet("/demo04")
public class CheckCodeServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
BufferedImage image = new BufferedImage(50,100,BufferedImage.TYPE_INT_RGB);
Graphics graphics = image.getGraphics();
graphics.setColor(Color.BLUE);
graphics.fillRect(0,0,50,100);
graphics.setColor(Color.green);
graphics.drawRect(0,0,49,99);
String str = "1234567890QWERTYUIOPASDFGHJKLZXCVBNMqwertyuioplmknjbhvgcfxdzsa";
Random r = new Random();
for(int i=1;i<5;i++){
int index = r.nextInt(str.length());
char c = str.charAt(index);
graphics.drawString(c+"",20*i,50);
}
graphics.setColor(Color.PINK);
for (int i=0;i<7;i++){
int x1 = r.nextInt(100);
int x2 = r.nextInt(100);
int y1 = r.nextInt(50);
int y2 = r.nextInt(50);
graphics.drawLine(x1,y1,x2,y2);
}
ImageIO.write(image, "jpg", resp.getOutputStream());
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
}