zoukankan      html  css  js  c++  java
  • Java Web知识梳理

    今天给内部做了个培训,貌似搞错了对象,不该对新人讲这么原理性的东西。

    anyway,还是放上来吧,不知道有没有人能理清其中的逻辑 ^ _ ^


    问题:为什么要用tomcat
    tomcat: servlet container
    servlet + container

    web的基础是什么?
    网络编程:链接、数据
      链接:Socket/ServerSocket
      数据:InputStream/OutputStream Stream
    数据是什么?网络中传输的Bits!
    但是,Bits不是我们想要的,我们想要的是信息Information!
      Information是什么?Bits + Context! CSAPP
    web编程的Context是什么?
      TCP、UDP...
    但是,这只是最底层面的!
      TCP、UDP等协议本身是为了传输数据
    怎么解读?还是Context!
      HTTP!

    所以,java web 网络编程就是:创建链接,然后按照HTTP协议格式来解析那些由用TCP协议传输的数据!务必理解这个。
    所以,必须熟悉HTTP协议的格式!

      是<html>...</html>吗?
      NO!
    这只是HTTP协议中的body部分!务必理解这个。

    问题来了:每次都要自己负责链接,累不累?还得考虑并发负载等优化,需要足够专业的知识才行。
    Java编程的特点是什么?让专业的人负责专业的事!
    于是JavaEE社区提出了Servlet + Servlet Container的概念。
    Servlet负责业务逻辑,而Servlet Container负责资源的申请、释放,请求的路由等功能!分工明确,可以更专注于自己的部分。

    此外,还有Filter、Listener的概念,这是因为容器的特性而出现的!

    容器服务器、app server、web server       APACHE cgi

    ServletContextLoaderListener、RequestAttributeListener

    既然容器负责了链接、路由等功能,那完全可以在项目加载之前或之后、Servlet加载之前或之后、链接创建之后、路由之前或之后等生命周期的不同阶段进行不同的处理。这非常有用,可以更简洁的实现一些需求 - 类似于创建对象时执行的构造方法、静态代码块、动态代码块等情况。另外,Spring的bean也有类似的生命周期。

    对了,还有JSP,为什么还需要这个呢?
    因为Servlet中要返回什么页面是很麻烦的,使用字符串来拼接html语句。
    JSP就简单的多,但实际上,最后它还是被转成servlet的class文件,不同的是,里面要输出的内容都已经由容器帮你转成了字符串。
    就是说,这是一种帮你简化Servlet返回html内容的技术。


    问题又来了:既然有了Servlet、Servlet Container,为什么还有Struts、Spring MVC等框架?
    这是因为Servlet只有最基础的功能,更深层次的需求就需要用户自己去实现,包括同步异步处理、编解码、参数/实体类对象之间的转换、国际化等功能。

    Struts的核心类是什么?web.xml PreparexxxxFilter Action 多例
    Spring MVC的核心类是什么?web.xml DispatcherServlet url-mapping /** 单例


    为什么要有自己的核心类?
    为什么二者是不同的? - Struts的核心类能否换成类似SpringMVC的?


  • 相关阅读:
    QTP 11.05下载并完成+皴
    ZOJ Monthly, June 2014 月赛BCDEFGH题题解
    Linux makefile 教程 很具体,且易懂
    oracle中imp命令具体解释
    html5实现摇一摇
    AfxMessageBox和MessageBox差别
    Android传感器概述(六)
    线性代数之矩阵与坐标系的转换
    測试新浪微博@小冰 为代码机器人的一些方法
    破解中国电信华为无线猫路由(HG522-C)自己主动拨号+不限电脑数+iTV
  • 原文地址:https://www.cnblogs.com/larryzeal/p/7827396.html
Copyright © 2011-2022 走看看