JAVA-EE解析Http请求协议内容讲解响应部分------计算机网络经典

堆内存中的字符串常量池,如果有,直接拿来用,如果没有则先创建后放入常量池
堆内存中的整数型常量池由-128到127一共256个Integer的引用,没有超出这个范围,则直接拿去,若超出,则新建对象
连接池:连接数据库的connection对象,进程和进程之间建立连接是非常消耗资源的,所以我们建立一部分连接,需要的时候直接取,大大提升效率
对数据库也起保护作用,避免访问量过大导致崩溃
线程池:服务器本身就是支持多线程的,tomcat启动的时候就会创建好N个线程对象Thread,然后将线程对象放到集合中,用户发送请求过来时
就可以直接调用现有的线程来处理请求,效率比较高
大部分web服务器或者应用服务器都是支持多线程的
redis:noSql,非关系型数据库,缓存数据库
先ServletContext对象中添加应用域,也等于是将数据存放到cache中
HttpServlet是专门针对Http协议设计的Servlet
什么是协议,某些人某些组织指定的规范,通过这套规范就可以做到沟通无障碍
HTTP协议就是这样一套协议,由W3C指定的一种超文本传输协议
W3C是万维网联盟组织,超文本是指不是普通文本,可以是流媒体视频音乐图片等等
HTTP协议都支持传输
这种协议在BS之间,两者通过协议得以实现解耦合
这个协议包括了请求协议和相应协议的两套标准
Http请求协议包括四部分B->S
请求行,请求头,空白行,请求体
Http相应协议也包括四部分S->B
状态行,响应头,空白行,响应体
请求行对应状态行,请求头,空白,请求体,响应头,空白行,响应体
请求行对应状态行
Http的请求报文
Http的响应报文如下
状态行:三部分组成,协议版本号,状态码(200成功,404资源丢失,405表示前端后端不一致(get和post错误),500代码出错),状态描述信息(ok,notFound)
HTTP/1.1 200 ok
响应头:(响应的内容类型,响应的内容长度,响应的时间)
Content-Type: text/html;charset=UTF-8
Content-Length: 139
Date: Sat, 23 Sep 2023 08:18:29 GMT
Keep-Alive: timeout=20
Connection: keep-alive

空白行:(用来分割响应头和响应体)

响应体:(这些内容就是响应正文,这些内容被浏览器渲染解释并执行,最终展示出效果)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
  <h1>Get</h1>
</body>
</html>

堆内存中的字符串常量池,如果有,直接拿来用,如果没有则先创建后放入常量池
堆内存中的整数型常量池由-128到127一共256个Integer的引用,没有超出这个范围,则直接拿去,若超出,则新建对象
连接池:连接数据库的connection对象,进程和进程之间建立连接是非常消耗资源的,所以我们建立一部分连接,需要的时候直接取,大大提升效率
对数据库也起保护作用,避免访问量过大导致崩溃
线程池:服务器本身就是支持多线程的,tomcat启动的时候就会创建好N个线程对象Thread,然后将线程对象放到集合中,用户发送请求过来时
就可以直接调用现有的线程来处理请求,效率比较高
大部分web服务器或者应用服务器都是支持多线程的
redis:noSql,非关系型数据库,缓存数据库
先ServletContext对象中添加应用域,也等于是将数据存放到cache中
HttpServlet是专门针对Http协议设计的Servlet
什么是协议,某些人某些组织指定的规范,通过这套规范就可以做到沟通无障碍
HTTP协议就是这样一套协议,由W3C指定的一种超文本传输协议
W3C是万维网联盟组织,超文本是指不是普通文本,可以是流媒体视频音乐图片等等
HTTP协议都支持传输
这种协议在BS之间,两者通过协议得以实现解耦合
这个协议包括了请求协议和相应协议的两套标准
Http请求协议包括四部分B->S
请求行,请求头,空白行,请求体
Http相应协议也包括四部分S->B
状态行,响应头,空白行,响应体
请求行对应状态行,请求头,空白,请求体,响应头,空白行,响应体
请求行对应状态行
Http的请求报文
Http的响应报文如下
状态行:三部分组成,协议版本号,状态码(200成功,404资源丢失,405表示前端后端不一致(get和post错误),500代码出错),状态描述信息(ok,notFound)
HTTP/1.1 200 ok
响应头:(响应的内容类型,响应的内容长度,响应的时间)
Content-Type: text/html;charset=UTF-8
Content-Length: 139
Date: Sat, 23 Sep 2023 08:18:29 GMT
Keep-Alive: timeout=20
Connection: keep-alive

空白行:(用来分割响应头和响应体)

响应体:(这些内容就是响应正文,这些内容被浏览器渲染解释并执行,最终展示出效果)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
  <h1>Get</h1>
</body>
</html>

package com.powernode.javaweb.servlet;

import jakarta.servlet.*;
import jakarta.servlet.annotation.*;

import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "PostServlet", value = "/PostServlet")
public class PostServlet extends GenericServlet
{
    @Override
    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException
    {
        //响应内容到浏览器
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter writer = response.getWriter();
        writer.println("<!DOCTYPE html>\n" +
                "<html lang=\"en\">\n" +
                "<head>\n" +
                "    <meta charset=\"UTF-8\">\n" +
                "    <title>Title</title>\n" +
                "</head>\n" +
                "<body>\n" +
                "  <h1>Post</h1>\n" +
                "</body>\n" +
                "</html>");
    }
}
package com.powernode.javaweb.servlet;

import jakarta.servlet.*;
import jakarta.servlet.annotation.*;

import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "PostServlet", value = "/PostServlet")
public class PostServlet extends GenericServlet
{
    @Override
    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException
    {
        //响应内容到浏览器
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter writer = response.getWriter();
        writer.println("<!DOCTYPE html>\n" +
                "<html lang=\"en\">\n" +
                "<head>\n" +
                "    <meta charset=\"UTF-8\">\n" +
                "    <title>Title</title>\n" +
                "</head>\n" +
                "<body>\n" +
                "  <h1>Post</h1>\n" +
                "</body>\n" +
                "</html>");
    }
}
package com.powernode.javaweb.servlet;

import jakarta.servlet.*;
import jakarta.servlet.annotation.*;

import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "GetServlet", value = "/GetServlet")
public class GetServlet extends GenericServlet
{
    @Override
    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException
    {
        //响应内容到浏览器
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter writer = response.getWriter();
        writer.println("<!DOCTYPE html>\n" +
                "<html lang=\"en\">\n" +
                "<head>\n" +
                "    <meta charset=\"UTF-8\">\n" +
                "    <title>Title</title>\n" +
                "</head>\n" +
                "<body>\n" +
                "  <h1>Get</h1>\n" +
                "</body>\n" +
                "</html>");
    }
}
package com.powernode.javaweb.servlet;

import jakarta.servlet.*;
import jakarta.servlet.annotation.*;

import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "GetServlet", value = "/GetServlet")
public class GetServlet extends GenericServlet
{
    @Override
    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException
    {
        //响应内容到浏览器
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter writer = response.getWriter();
        writer.println("<!DOCTYPE html>\n" +
                "<html lang=\"en\">\n" +
                "<head>\n" +
                "    <meta charset=\"UTF-8\">\n" +
                "    <title>Title</title>\n" +
                "</head>\n" +
                "<body>\n" +
                "  <h1>Get</h1>\n" +
                "</body>\n" +
                "</html>");
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
         version="6.0">
    <servlet>
        <servlet-name>GetServlet</servlet-name>
        <servlet-class>com.powernode.javaweb.servlet.GetServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>GetServlet</servlet-name>
        <url-pattern>/GetServlet</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>PostServlet</servlet-name>
        <servlet-class>com.powernode.javaweb.servlet.PostServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>PostServlet</servlet-name>
        <url-pattern>/PostServlet</url-pattern>
    </servlet-mapping>
</web-app>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"
         version="6.0">
    <servlet>
        <servlet-name>GetServlet</servlet-name>
        <servlet-class>com.powernode.javaweb.servlet.GetServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>GetServlet</servlet-name>
        <url-pattern>/GetServlet</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>PostServlet</servlet-name>
        <servlet-class>com.powernode.javaweb.servlet.PostServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>PostServlet</servlet-name>
        <url-pattern>/PostServlet</url-pattern>
    </servlet-mapping>
</web-app>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>get</h1>
    <form action="/GetServlet" method="get">
        username:<input type="text" name="username"><br>
        password:<input type="password" name="password"><br>
        <input type="submit" value="submit">
    </form>
    <h1>post</h1>
    <form action="/PostServlet" method="post">
        username:<input type="text" name="username"><br>
        password:<input type="password" name="password"><br>
        <input type="submit" value="submit">
    </form>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>get</h1>
    <form action="/GetServlet" method="get">
        username:<input type="text" name="username"><br>
        password:<input type="password" name="password"><br>
        <input type="submit" value="submit">
    </form>
    <h1>post</h1>
    <form action="/PostServlet" method="post">
        username:<input type="text" name="username"><br>
        password:<input type="password" name="password"><br>
        <input type="submit" value="submit">
    </form>
</body>
</html>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旧约Alatus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值