从2018年初的寒假到2020年5月,一直在学用java构建Web应用的相关知识,在2020年新冠疫情之前,因为白天要工作,学习总是断断续续,也直到2020年因为新冠疫情的超长寒假,才真正摸到了构建Web的一些门道,这里总结如下。

1、Web编程和构建Windows应用的区别

     我本人之前是有使用C#编写Windows程序的经验,大脑中已有事件驱动编程的固有思维,因为在刚开始编程的时候,总是摆脱不了这种思维,即认为点击Web页面中的某一个按钮,在后台相应这个事件就可以完成Web编程。在这种思维的影响下,就一直不能入门Web编程,想在想想,事件驱动编程中的事件,是有Windows系统来封装事件,Web协议中,哪里有封装事件的部分呢?Web编程是基于HTTP协议的,HTTP协议就是用地址来连接HTTP请求到相应的Servlet,HTTP请求中在请求头或者请求体中会负载相应的数据,通过HTTP地址连接到Servlet,就可以处理数据,然后返回HTTP响应。

2、如何理解HTTP协议

     HTTP协议有请求和响应两部分,请求通过请求中的路径连接到Servlet,请求中会带有数据的负载,Servlet处理请求生成相应,返回给浏览器。基于HTTP协议,我们在构建Web应用的时候,实际上就是编写接收HTTP请求的地址和响应程序。比如Servlet,就需要配置<Servlet-Mapping>来配置地址,编写Servlet来处理请求。比如SpringMVC,就是把所有HTTP请求都由DispatcherServlet来处理,然后通过XML配置或者注解的方式,来编写一个个的Controller。比如SpringBoot,通过自动化配置,即可以通过注解配置地址,编写Controller,来完成程序的编写。

3、什么是Servlet

     Servlet实际上就是一个接口,就是一个规范。

JavaWeb中的关键概念与学习之路

 

4、我们编写Web程序,写一个Servlet是什么意思?

      这句话的意思,实际上是我们写代码实现HttpServlet的doGet或者doPost方法,HttpServlet继承自GenericServlet,GenericServlet实现了Servlet接口。然后Tomcat拿到我们编写的实现了doGet或者doPost方法的HttpServlet去相应地工作。这种编写实现方法的编程方法,和我们之前使用的JDBC正好想法。使用JDBC,我们直接使用接口操作数据库,接口的实现,不需要我们考虑。而这种写Servlet相当于让我们来写接口的实现,如果操作接口不需要我们考虑。

5、Tomcat是什么?

     Tomcat是Apache公司的开源项目,Tomcat最接近HTTP协议,相当于实现了HTTP协议,将HttpRequest封装成接口HttpServletRequest,然后Servlet就可以处理HttpServletRequest,处理完成后,生成HttpServletResponse,Tomcat又会将HttpServletResponse转换成HttpResponse传回浏览器。我之前做过OPC开发,OPC是工业领域的一个协议,我所使用的软件KepServer相当于实现了OPC协议,然后为我们的编程提供一些类和接口。

JavaWeb中的关键概念与学习之路

JavaWeb中的关键概念与学习之路

6、Tomcat、Servlet这一套技术是什么?

     Tomcat是Apache公司的开源项目,Servlet是javax.servlet包中的一个接口,这一套相当于Java语言构建Web应用的一套技术。相应地,若是ASP.NET也会有相应角色的技术、PHP、Python也会类似。

7、什么是JavaWeb?

     在刚开始,我理解JavaWeb就是使用Java语言来构建Web应用,这也没有错,但是这是广义的JavaWeb。狭义的JavaWeb是就是Servlet、JSP这些。因此在搜索“JavaWeb学习教程”的时候,搜索出来的结果就是Servlet、JSP这些。不会出现涉及到Spring。

8、构建Web应用的两个层次?

     第1个层次是经典的JavaWeb,即Servlet+JSP。第2个层次是使用了Spring框架,即SpringMVC+Spring+Mybatis,或者SpringBoot+Spring+Mybatis。

 9、如何理解Spring?

      Spring是一个大的框架,包含了各个部分,比如Web、安全等等。Spring的核心就是降低编程的耦合度。传统的编程,各层之间会有嵌套,比如网络层会用到new Service,服务层会用到new Query,Spring把这些嵌套关系全部放到Spring容器中,通过@autowired注入容器,在容器中形成嵌套关系,而非我们的代码当中。

 10、如何理解SpringMVC?

     SpringMVC是Spring框架中用于解决网络层的方案,实际上就是解决了Servlet配置地址繁琐的问题,即解决了<Servlet-Mapping>有很多的问题。通过DispatcherServlet,处理所有的HTTP请求,再通过处理器映射器传递给处理器适配器,处理器适配器执行完controller之后,将ModelAndView返回给Dispatcher,然后再传递给视图解析器,返回给浏览器。

 11、如何理解SpringBoot?

     SpringBoot,我理解就是对于SpringMVC+Spring的进一步整合,加入了一些自动配置,可以进一步快速构建Web应用,在开发使用中,应该较多地使用SpringBoot。

 12、如何理解前后端分离?

      前后端分离是随着构建的Web应用越来越复杂而产生的,复杂的Web应用如果不分离,会很复杂,难以构建。前后端分离和所使用的的技术无关,但是经典的早期技术不支持,比如传统的Servlet中,会有Response.write(“HTML”),JSP也不支持。但是纯Servlet也可以输出JSON,实际上也是支持的。当然了有了Spring加持的SpringMVC或者SpringBoot对于前后端分离,实现起来会更加的容易。前后端分离时间上就是HTML+AJAX,通过JSON和后端往返数据。

 13、Web开发技术的时间顺序?

      这是我理解的Web开发技术时间顺序,不一定十分准确,确实我的理解。

    (1)Servelt

     (2)JSP

     (3)SpringMVC,考虑到传统的SpringMVC中有视图解析器这些,就没有用到前端去渲染数据,因此在AJAX之前。

     (4)AJAX+SpringMVC

     (5)AJAX+SpringBoot

 14、对于新手来说,如何学习呢?

应按照如下顺序:

第一部分:纯JavaWeb,用以掌握JavaWeb原理

(1)学习HTML、CSS、JavaScript,这是前端的知识,首次学习的时候,了解即可;

(2)学习经典JavaWeb,掌握Servlet,了解JSP。目的是借此理解HTTP协议、Tomcat;

第二部分:框架的学习

(1)学习SpringMVC,在掌握Servlet之后,就可以理解SpringMVC的核心DispatcherServelt;

(2)学习Spring框架,在初探了SpringMVC之后,就可以更好地理解Spring框架;

(3)学习AJAX,可以更好地理解前后端分离的思想;

(4)学习Mybatis,掌握此持久层框架,当然在学习之前,需要先学习JDBC。

第三部分:SpringBoot的学习,这是实际开发中要使用的框架。

附下图是我自己学习的一些比较好的书籍和教程,也在图中标明了我自己的学习进度。

JavaWeb中的关键概念与学习之路

15、实际开发过程中,如何开发?

        我们虽然学习了这么多技术,包括经典的JavaWeb,SpringMVC等等,但是在实际开发过程中,主要有两种开发方式:

     (1)SpringBoot直接构建;

     (2)使用一些成熟的快速开发框架,加快开发速度。成熟的快速开发框架,实际上就是对于SpringMVC或者SpringBoot的进一步封装,能够加速开发过程。

结语:

       回头看来,使用Java开发Web应用的掌握关键是掌握Web原理,这也是比较难的,在掌握原理之后,加持一些框架,这个不难。学习,是要花费大量的时间的,对于还在读书的大学生来说,我觉得是非常值得投入的,也是非常有趣的一件事。但是对于我这种工作了的人,投入这么多时间精力真得很难。也在学写完技术之后,多思考思考做事儿吧!

 

 

相关文章:

  • 2021-09-22
  • 2021-04-10
  • 2021-06-11
  • 2022-01-19
  • 2021-10-12
  • 2021-10-11
  • 2021-12-01
  • 2021-10-04
猜你喜欢
  • 2021-04-12
  • 2022-01-12
  • 2022-12-23
  • 2022-01-03
  • 2022-01-18
  • 2022-12-23
相关资源
相似解决方案