浅谈Web发展

一个SQL boy开始搞前后端开发了?

静态Web

HTML :网络传输的全都是html,展示的全部内容
CSS:配合HTML ,做静态的 多样化 规范化 展示
JavaScript:页面动态响应方面的展示,运行在前端

一. Socket

在这里插入图片描述

Socket相当于TCP UDP提供给外部的访问接口,客户端 & 服务端 都可以利用Socket来操作 TCP UDP 协议的通信,。
最终全部前后端的传输都需要走Socket

二 . Servlet

web server 本质上是一个 Http(TCP)响应的 .html

处理TCP连接,解析HTTP协议这些底层工作统统扔给现成的Web服务器去做,我们只需要把自己的应用程序跑在Web服务器上。为了实现这一目的,JavaEE提供了Servlet API
在这里插入图片描述

把这种程序打成war(Java Web Application Archive)包,然后交给支持Servlet API的Web服务器

在这里插入图片描述

Servlet相当于服务器中的控制器

三.JSP

JSP : Java Server Pages

JSP在执行前,会被编译成一个Servlet

在这里插入图片描述

3.2 session

用来控制用户的认证,不用反复登陆 等等

3.3 Model1

https://www.javatpoint.com/model-1-and-model-2-mvc-architecture

在这里插入图片描述

在JSP中有View 和 逻辑处理功能,可以再次解耦合,于是Model2

3.4 Model2

在这里插入图片描述

JSP 仅仅 View,这也就是MVC模式

四. MVC

4.1 MVC 1.0

Servlet 适合编写Java 实现逻辑
JSP适合编写HTML

MVC : Model View Controller

                   ┌───────────────────────┐
             ┌────>│Controller: UserServlet│
             │     └───────────────────────┘
             │                 │
┌───────┐    │           ┌─────┴─────┐
│Browser│────┘           │Model: User│
│       │<───┐           └─────┬─────┘
└───────┘    │                 │
             │                 ▼
             │     ┌───────────────────────┐
             └─────│    View: user.jsp     │
                   └───────────────────────┘

HttpServletRequest
  .getRequestDispatcher("/WEB-INF/user.jsp")
  .forward(req, resp);

origin MVC 的缺点:

  • JSP还是有些麻烦了,可以用前端框架
  • Controller业务逻辑必须extend Servlet
  • Servlet 提供的接口偏底层,模版引擎替代比较好

这样将会产生很多Servlet
在这里插入图片描述

前端会给众多Servelt发请求

4.2 MVC 2.0

在这里插入图片描述

前端只能给DispatcherServlet 发请求,再由DispatcherServlet 发请求给其他Servlet
这里其他的Servlet改名为Controller

在这里插入图片描述

3.2 advanced MVC

   HTTP Request    ┌─────────────────┐
──────────────────>│DispatcherServlet│
                   └─────────────────┘
                            │
               ┌────────────┼────────────┐
               ▼            ▼            ▼
         ┌───────────┐┌───────────┐┌───────────┐
         │Controller1││Controller2││Controller3│
         └───────────┘└───────────┘└───────────┘
               │            │            │
               └────────────┼────────────┘
                            ▼
   HTTP Response ┌────────────────────┐
<────────────────│render(ModelAndView)│
                 └────────────────────┘

DispatcherServlet 功能分为:

  1. 根据请求的url ,判定调用哪一个Controller
URL: http://localhost:8080/pro15/hello.do
ServletPath : /hello.do
/hello.do -> hello
hello -> HelloController

具体实现:
String servletPath = request.getServletPath();
servletPath = servletPath.substring(1);
int lastDotIndex = servletPath.lastIndexOf(".do");
servletPath = servletPath.substring(0,lastDotIndex);

Object contrallerBeanObj = beanMap.get(servletPath);

  1. 解析加载的配置文件applocationContent.xml 获取servletPath对应的classPath
  2. 根据classPath 反射调用invoke ,得到对应的bean -> View

4.3 IOC

IOC:Inversion of Control

bean的创建 & 销毁 ,完全交给BeanFactory来控制
在Contraller中需要调用bean 就通过反射的方式获取

DI

DI:Dependency Injection
各个bean之间存在依赖关系,简单可以通过DI的方式在.xml文件中配置好

<beans>
    <bean id="dataSource" class="HikariDataSource" />
    <bean id="bookService" class="BookService">
        <property name="dataSource" ref="dataSource" />
    </bean>
    <bean id="userService" class="UserService">
        <property name="dataSource" ref="dataSource" />
    </bean>
</beans>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

oifengo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值