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,模拟浏览器
    Java 模拟浏览器与服务器之间请求与响应的过程_第1张图片
  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,模拟服务器
    Java 模拟浏览器与服务器之间请求与响应的过程_第2张图片
  • 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. 若是静态资源: 就直接将文件中的内容返回给浏览器

Java 模拟浏览器与服务器之间请求与响应的过程_第3张图片

效果展示

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

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

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

请输入账号
zgh

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

完整代码获取

  • 代码:github

你可能感兴趣的:(#,Java案例)