1.http応答メッセージ
httpプロトコルは、次の2つの部分に分かれてい
ます。1。要求メッセージ:クライアントからサーバーに送信されるデータ
2.対応するメッセージ:サーバーからクライアントに送信されるデータ
データ形式
1.応答ライン
構成:プロトコル+バージョン+対応するステータスコード
HTTP / 1.1(404、200、500など)
2、响を头
Content-Type:text / html:charset = utf-8
Content-Language:en
Content-Length:1085
3.対応する空白行
4.応答本文応答で
送信されるデータ
2.応答オブジェクト
機能:応答メッセージ
1.1を設定し、応答行を設定し、ステータスコードを設定しますsetStatus(int sc);
//设置状态码302
response.setStatus(302);
1.2、応答ヘッダーを設定します
setHeader(String name,String value)
1.3。応答本文を設定します。
package sc;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/test4")
public class test4 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setStatus(302);
response.setHeader("location","/test5");
//设置响应体 以流的方式输出
PrintWriter writer = response.getWriter();
writer.write("我是response");
//以字节流的方式传输
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write("我是responser".getBytes("utf-8"));
}
}
応答フローチャートは
3.リダイレクト
リダイレクト機能
1.アドレスバーが変更されます
。2。リダイレクトは他のサーバーのリソース(他のWebサイトで記述されたhttp URLなど)にアクセスできます。3。
リダイレクトは2つの要求であるため、要求ドメインを使用してデータを共有することはできません。
転送機能
1.転送アドレスバーのパスは変更されません
。2。転送は現在のサーバーの下のリソースにのみアクセスできます。3。
要求は1回転送され、要求オブジェクトを使用してデータを共有できます。
//测试是否能共享数据
request.setAttribute("user","usernamezhangshan");
System.out.println("得到的共享数据servlet4中:"+request.getAttribute("user"));
response.sendRedirect("/test5");
package sc;
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("/test5")
public class test5 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("重定向过来的");
Object user = request.getAttribute("user");
System.out.println("通过共享数据获得:"+user);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
4.ServletContextオブジェクト
package sc;
import cn.dsna.util.images.ValidateCode;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
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("/test6")
public class test6 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// response.setContentType("text/html:charset=utf-8");
// ServletOutputStream outputStream = response.getOutputStream();
// outputStream.write("哈哈哈".getBytes("utf-8"));
//相应一个验证码
ValidateCode validateCode = new ValidateCode(200,100,4,10);
validateCode.write(response.getOutputStream());
}
}