Http和応答

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());
    }
}

おすすめ

転載: blog.csdn.net/s001125/article/details/111479599