(JavaWeb笔记)B/S架构模式——Browser+Tomcat+Servlet+Java+MySQL——五者关系分析

目录

一.浏览器(Browser)

二.Tomcat(Server)

三.Servlet(处理请求和响应)

四.Java(开发者)

思考与解答

五.MySQL(JDBC)

六.关系图 ​


一.浏览器(Browser)

         解析web应用前端返回的HTML、CSS、JavaScript功能代码,渲染成用户操作界面,采用HTTP协议通过Tomcat服务器请求(request)和响应(response)web应用前端,同时借助JSON数据实现web系统数据的传输。


二.Tomcat(Server)

        Java语言编写开源的一套规范的业务接口类库,根据Browser指定URL信息,负责Browser的Servlet实现类交互,web前端和web后端的服务者(类私中介转发消息的作用)。


三.Servlet(处理请求和响应)

        是sun公司制定的Java语言与Tomcat服务器进行通信的一套规范的业务接口类库,提供给开发者处理web应用的Java小程序功能。


四.Java(开发者)

        思考与解答

        Tomcat如何根据URL路径去准确找到Servlet的?

        例如:UserServlet中有login()和register()的两个Java小程序(登录或注册),URL是“http://localhost:8080/项目名/login.html”,当触发前端的form表单的action="/UserServlet/login",或者Ajax的url:"/UserServlet/register"、type:"post/get"。

        再次思考:为什么触发url的路径就能找到对应的UserServlet呢?

        (1)UserServlet(xxxServlet)都必须遵守Tomcat接口规范,《实现Servlet接口》这是规范!!!如---> public UserServlet impleament Servlet{ xxx},好比浏览器与Tomcat规范是HTTP协议,而Tomcat与Java语言规范就是Servlet

        (2)实现Servlet后必须通过web.xml方式来注册UserServlet的完全限定名称"com.dhrj.zs.UserServlet"。(或@webservlet)注解方式。

        (3)Tomcat是Java语言开发,启动Tomcat的“startup.bat”命令是,命令文件内容指向一个bootstrap.jar包,源码底层启动Tomcat是Java主方法main(),在main方法中启动服务(8080服务端口)后,接受到前端的请求,根据URL路径信息找到对应的Servlet,同时读取web.xml,根据键获取对应Servlet的完全限定名称赋值给String类型变量,用Map集合来存储对应关系,利用Java反射机制的Class类的静态方法fromName("完全限定名称")+和newInstance()创建Object对象,此对象使用Method +Filed+Constructor来获取调用类的属性和方法,再通过JDK动态代理的Proxy.newProxyInstance(类加载器、接口数组、InvocationHandler接口),实现InvocationHandler接口,调用invoke()动态返回代理结果给代理实例对象(Proxy)。

        (4)根据Java语言的多态机制,UserServlet是肯定实现了sun公司的Servlet规范接口,因此Tomcat启动后main()方法执行,在编译阶段实现类UserServlet指向规范接口Servlet,运行时动态绑定UserServlet以及动态调用实现类UserServlet中重写@override方法。init()/service()/destroy()/getServletInfo()/getServletConfig()——>servlet生命周期和配置类


五.MySQL(JDBC)

        JDBC(好比HTTP和Servlet是sun公司制定Java语言连接数据库的规范接口类库,使用MySQL驱动包+JDBC来完成。


六.关系图 (JavaWeb笔记)B/S架构模式——Browser+Tomcat+Servlet+Java+MySQL——五者关系分析_第1张图片

图片来源:动力节点老杜2022-JavaWeb

你可能感兴趣的:(JavaWeb笔记,B/S架构,java-ee,tomcat,servlet,mysql)