Java 模拟浏览器与服务器之间请求与响应的过程

环境与MVC分层架构思想

  • 编程语言:Java 14.0.1
  • IDE:intelliJ IDEA 2020.1.2
...
V:View视图层String html jsp
C:Controller控制层Servlet 控制的是相应信息
M:Model模型层数据模型(数据处理、数据读写、数据存储)
.Service数据处理
.Dao数据读写里面的代码都是JDBC+SQL+domain
.domain数据存储
DB数据库

模拟请求与响应的过程,为了突出逻辑,主要描述的是C层,其余层次就淡化处理了

仅涉及JavaSE的知识

首先使用IDE创建了两个Project,分别是 Browser 与 Server,分别模拟浏览器与服务器

模拟浏览器的请求过程

  • Browser,模拟浏览器
    在这里插入图片描述
  1. Browser 在控制台中输入url(只需要输入ip:port/资源名?key=value&key=value...
  2. Browser 解析url,获取ip,port,资源名和参数
  3. Browser 使用ip和port创建Socket,与服务器建立连接,并将资源名和参数发送给服务器
  4. Browser 等待服务器的响应…
  5. Browser 接收服务器回写的响应消息(这里模拟了html标签的使用)
  6. Browser 解析响应信息,并展示出来(解析html标签)
  7. Browser 如果服务器返回来的是form表单,那么浏览器继续发送请求

模拟服务器的响应过程

  • Server,模拟服务器
    在这里插入图片描述
  • Server 服务器先启动,服务器是多线程的
  • Server 服务器线程参考server.properties配置文件,获取端口号,生成ServerSocket
  • Server 服务器线程等待浏览器的请求(即监听端口号)…
  • Server 收到浏览器的请求后,调用ServerHandler类(1.读取消息 2…解析 3.找人做事 4.响应回去)
    1. 读取资源名和参数信息
    2. 解析字符串,并生成HttpServletRequest来存放资源和参数信息
    3. 若是动态资源: 调用ServletController,参考web.properties配置文件,找到路径对应的controller类(->service->dao->…),将要返回的资源存放在HttpServletResponse中,然后将HttpServletResponse中的内容返回给浏览器
    4. 若是静态资源: 就直接将文件中的内容返回给浏览器

在这里插入图片描述

效果展示

展示的效果非常简陋,仅仅是为了模拟浏览器与服务器之间请求与响应的过程

  • 可以访问服务器的主页(在控制台中显示的信息暂且当作主页)
  • 可以进行登录
  1. 先启动服务器:
====启动服务器====
  1. 然后启动浏览器:
URL:
  1. 用户输入URL后,服务器返回主页,其中附带form表单
URL:localhost:8888/index
***********************
********银行系统********
***********************

请输入账号
  1. 用户输入账号与密码,传给服务器,进行登录操作
URL:localhost:8888/index
***********************
********银行系统********
***********************

请输入账号
zgh

请输入密码
666
  1. 服务器处理返回的表单信息
====启动服务器====
zgh---666

完整代码获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值