Servlet

  • 系统架构
    • B/S结构的系统通信原理(没有涉及到Java小程序)
    • 关于WEB服务器软件
    • 实现一个最基本的web应用(这个web应用中没有java小程序)
    • 对于一个动态的web应用来说,一个请求和响应的过程有多少个角色参与,角色和角色之间有多少个协议
  • 模拟Servlet本质
  • 使用idea开发第一个servlet程序
  • Servlet对象的生命周期
  • 适配器改造Servlet
  • ServetConfig
  • ServletContest

本文是观看动力节点老杜所写笔记,方便后面复习,这个是视频地址:
https://www.bilibili.com/video/BV1Z3411C7NZ?p=7

系统架构

  1. C/S和B/S结构的系统

    • 不同结构的系统在不同的业务场景下有不同的适用场景。
    • 娱乐性软件建议使用?
      • C/S 结构
    • 公司内部使用的一些业务软件建议使用?
      • 公司内部使用的系统,需要维护成本低。
      • 公司内部使用的系统,不需要很酷炫。
      • 公司内部使用的企业级系统主要是能够进行数据的维护即可。
      • B/S 结构。
  2. 注意了:开发B/S结构的系统,其实就是开发网站,其实就是开发一个WEB系统。

    • 开发一个WEB系统你需要会哪些技术?

      • WEB前端(运行在浏览器上的程序。)

        • HTML
        • CSS
        • JavaScript
      • WEB后端(WEB服务器端的程序。)
        • Java可以(Java做WEB开发我们称为JavaWEB开发。JavaWEB开发最核心的规范:Servlet【Server Applet服务器端的Java小程序。】)
        • C语言也可以
        • C++也可以
        • Python也行
        • PHP也可以
  3. JavaEE是什么?

    • Java包括三大块:

      • JavaSE

        • Java标准版(一套类库:别人写好的一套类库,只不过这个类库是标准类库,走EE,或者走ME,这个SE一定是基础,先学。)
      • JavaEE(WEB方向,WEB系统。)
        • Java企业版(也是一套类库:也是别人写好的一套类库,只不过这套类库可以帮助我们完成企业级项目的开发,专门为企业内部提供解决方案的一套(多套)类库。)
        • 别人写好的,你用就行了,用它可以开发企业级项目。
        • 可以开发web系统。
        • Java比较火爆的就是这个JavaEE方向。
      • JavaME
        • Java微型版(还是一套类库,只不过这套类库帮助我们进行电子微型设备内核程序的开发)
        • 机顶盒内核程序,吸尘器内核程序,电冰箱内核程序,电饭煲内核程序。。。。。
    • JavaEE实际上包括很多种规范,13种规范,其中Servlet就是JavaEE规范之一。学Servlet还是Java语言。

    B/S结构的系统通信原理(没有涉及到Java小程序)


  • WEB系统的访问过程

    • 第一步:打开浏览器
    • 第二步:找到地址栏
    • 第三步:输入一个合法的网址
    • 第四步:回车
    • 第五步:在浏览器上会展示响应的结果。
  • 关于域名:

    • https://www.baidu.com/ (网址)
    • www.baidu.com 是一个域名
    • 在浏览器地址栏上输入域名,回车之后,域名解析器会将域名解析出来一个具体的IP地址和端口号等。
    • 解析结果也许是:http://110.242.68.3:80/index.html
  • IP地址是啥?

    • 计算机在网络当中的一个身份证号。在同一个网络当中,IP地址是唯一的。
    • A计算机要想和B计算机通信,首先你需要知道B计算机的IP地址,有了IP地址才能建立连接。
  • 端口号是啥?

    • 一个端口代表一个软件(一个端口代表一个应用,一个端口仅代表一个服务)。
    • 一个计算机当中有很多软件,每一个软件启动之后都有一个端口号。
    • 在同一个计算机上,端口号具有唯一性。
  • 一个WEB系统的通信原理?通信步骤:

    • 第一步:用户输入网址(URL)
    • 第二步:域名解析器进行域名解析:http://110.242.68.3:80/index.html
    • 第三步:浏览器软件在网络中搜索110.242.68.3这一台主机,直到找到这台主机。
    • 第四步:定位110.242.68.3这台主机上的服务器软件,因为是80端口,可以很轻松的定位到80端口对应的服务器软件。
    • 第五步:80端口对应的服务器软件得知浏览器想要的资源名是:index.html
    • 第六步:服务器软件找到index.html文件,并且将index.html文件中的内容直接输出响应到浏览器上。
    • 第七步:浏览器接收到来自服务器的代码(HTML CSS JS)
    • 第八步:浏览器渲染,执行HTML CSS JS代码,展示效果。
  • 什么是URL?

    • 统一资源定位符(http://www.baidu.com)
  • 什么是请求,什么是响应?

    • 请求和响应实际上说的是数据的流向不同。
    • 从Browser端发送数据到Server端,我们称为请求。英语单词:request
    • 从Server端向浏览器Browser端发送数据,我们称为响应。英语单词:response
    • B --> S (请求request)
    • S --> B (响应response)

关于WEB服务器软件

  • WEB服务器软件都有哪些呢?(这些软件都是提前开发好的。)

    • Tomcat(WEB服务器)
    • jetty(WEB服务器)
    • JBOSS(应用服务器)
    • WebLogic(应用服务器)
    • WebSphere(应用服务器)
  • 应用服务器和WEB服务器的关系?
    • 应用服务器实现了JavaEE的所有规范。(JavaEE有13个不同的规范。)
    • WEB服务器只实现了JavaEE中的Servlet + JSP两个核心的规范。
    • 通过这个讲解说明了:应用服务器是包含WEB服务器的。
    • 用过JBOSS服务器的同学应该很清楚,JBOSS中内嵌了一个Tomcat服务器。
  • Tomcat下载
    • apache官网地址:https://www.apache.org/
    • tomcat官网地址:https://tomcat.apache.org
    • tomcat开源免费的轻量级WEB服务器。
    • tomcat还有另外一个名字:catalina(catalina是美国的一个岛屿,风景秀丽,据说作者是在这个风景秀丽的小岛上开发了一个轻量级的WEB服务器,体积小,运行速度快,因此tomcat又被称为catalina)
    • tomcat的logo是一只公猫(寓意表示Tomcat服务器是轻巧的,小巧的,果然,体积小,运行速度快,只实现了Servlet+JSP规范)
    • tomcat是java语言写的。
    • tomcat服务器要想运行,必须先又jre(Java的运行时环境)
  • Tomcat服务器要想运行,需要先有jre,所以要先安装JDK,配置java运行环境。
    • JAVA_HOME=D:\Program Files\Java\jdk1.8.0_131
    • PATH=%JAVA_HOME%\bin
    • 目前JAVA_HOME没有配置,思考一个问题,这样行不行呢?目前只运行java程序是没问题的。真的没问题吗?
  • Tomcat服务器的安装:
  • 绿色版本的安装很简单,直接zip包解压即可。解压就是安装。
  • 我们可以把java开发所有相关的工具都安装到固定的目录下,这样比较方便管理。
  • 启动Tomcat
    • bin目录下有一个文件:startup.bat,通过它可以启动Tomcat服务器。

      • xxx.bat文件是个什么文件?bat文件是windows操作系统专用的,bat文件是批处理文件,这种文件中可以编写大量的windows的dos命令,然后执行bat文件就相当于批量的执行dos命令。
      • startup.sh,这个文件在windows当中无法执行,在Linux环境当中可以使用。在Linux环境下能够执行的是shell命令,大量的shell命令编写在shell文件当中,然后执行这个shell文件可以批量的执行shell命令。
      • tomcat服务器提供了bat和sh文件,说明了这个tomcat服务器的通用性。
      • 分析startup.bat文件得出,执行这个命令,实际上最后是执行:catalina.bat文件。
      • catalina.bat文件中有这样一行配置:MAINCLASS=org.apache.catalina.startup.Bootstrap
        (这个类就是main方法所在的类。)
      • tomcat服务器就是Java语言写的,既然是java语言写的,那么启动Tomcat服务器就是执行main方法。
    • 我们尝试打开dos命令窗口,在dos命令窗口中输入startup.bat来启动tomcat服务器。
    • 启动Tomcat服务器只配置path对应的bin目录是不行的。有两个环境变量需要配置:
      • JAVA_HOME=JDK的根
      • CATALINA_HOME=Tomcat服务器的根
        我们来看看如果不配置这两个环境变量会有什么问题

        很明显,在Administrator下面,我们找不到startup.bat这个命令,Tomcat有bin目录,所以我们要把bin目录配置一下
        我们再来看一下,如果没有配置JAVA_HOME会有什么问题,当我们配置Tomcat下的bin目录后,再去启动看看。(这个时候没有配置CATALINA_HOME)

        因为上面讲过了,startup.bat文件得出,执行这个命令,实际上最后是执行:catalina.bat文件。所以CATALINA_HOME环境变量一定要配置,CATALINA_HOME是Tomcat服务器的根

        大家是不是认为这样就可以了,其实还不行,真是曲折啊。

        因为JAVA_HOME还没有配置

        CATALINA_HOME需要JAVA_HOME,但是此时还没有配置。我们没有告诉Tomcat服务器,JAVA在哪里,所以我们还需要通过JAVA_HOME告诉Tomcat服务器jdk在哪里,然后Tomcat服务器就可以启动了。

Tomcat是Java语言写的,我们执行startup的话,它就会去找catalina,catalina就会去执行Bootstrap这个类中的main方法,main方法一执行,就代表Tomcat服务器启动成功。

上面那个是我对Tomcat服务器启动原理的大概了解,毕竟刚开始学习,还没理解到位。关于Tomcat服务器的启动原理详解,我推荐大家看这篇Tomcat服务器启动原理详解

  • 关于Tomcat服务器的目录
  • bin : 这个目录是Tomcat服务器的命令文件存放的目录,比如:启动Tomcat,关闭Tomcat等。
  • conf: 这个目录是Tomcat服务器的配置文件存放目录。(server.xml文件中可以配置端口号,默认Tomcat端口是8080)
  • lib :这个目录是Tomcat服务器的核心程序目录,因为Tomcat服务器是Java语言编写的,这里的jar包里面都是class文件。
  • logs: Tomcat服务器的日志目录,Tomcat服务器启动等信息都会在这个目录下生成日志文件。
  • temp:Tomcat服务器的临时目录。存储临时文件。
  • webapps:这个目录当中就是用来存放大量的webapp(web application:web应用),webapp里面的一个目录就是一个项目。
  • work:这个目录是用来存放JSP文件翻译之后的java文件以及编译之后的class文件。
  • 配置Tomcat服务器需要哪些环境变量?

    • JAVA_HOME=JDK的根
    • CATALINA_HOME=Tomcat服务器的根
    • PATH=%JAVA_HOME%\bin;%CATALINA_HOME%\bin
  • 启动Tomcat: startup
  • 关闭Tomcat:stop (shutdown.bat文件重命名为stop.bat,为什么?原因是shutdown命令和windows中的关机命令冲突。所以修改一下。)不要写成shutdown,这个是windows关机命令
  • 怎么测试Tomcat服务器有没有启动成功呢?
    • 打开浏览器,在浏览器的地址栏上输入URL即可:

      • http://ip地址:端口号
      • ip地址是什么?端口号我知道,是8080
      • 本机的IP地址是:127.0.0.1,或者是localhost,都行。

实现一个最基本的web应用(这个web应用中没有java小程序)

  • 第一步:找到CATALINA_HOME\webapps目录

    • 因为所有的webapp要放到webapps目录下。(这是Tomcat服务器的要求。如果不放到这里,Tomcat服务器找不到你的应用。)
  • 第二步:在CATALINA_HOME\webapps目录下新建一个子目录,起名:oa

    • 这个目录名oa就是你这个webapp的名字。
  • 第三步:在oa目录下新建资源文件,例如:index.html

    • 编写index.html文件的内容。
  • 第四步:启动Tomcat服务器

  • 第五步:打开浏览器,在浏览器地址栏上输入这样的URL:

    • http://127.0.0.1:8080/oa/index.html

    • 这个时候,我们发现,其实我们直接找到index.html,双击用浏览器打开,它的效果其实和刚刚是一样的,那我们为什么还要这么费劲输入地址呢?
      其实,我们可以这样来想一下,这是一个项目,可能是其他主机来访问它,那怎么双击打开呢,肯定需要输入这个地址

  • 思考一个问题:

    • 我们在浏览器上直接输入一个URL,然后回车。这个动作和超链接一样吗?既然是一样的,我们完全可以使用超链接。
      login.html

      index.html


      然后,点击超链接

 <!--注意以下的路径,以/开始,带项目名,是一个绝对路径。不需要添加:http://127.0.0.1:8080--><a href="/oa/login.html">user login2</a><!--多个层级也没有关系,正常访问即可。--><!--注意:我们目前前端上的路径都以“/”开始的,都是加项目名的。--><a href="/oa/test/debug/d.html">d page</a>
  • http://127.0.0.1:8080/oa/userList.html

    • 访问这个地址,可以展示一个用户列表页面。但是这个用户列表页面是写死在HTML文件当中的。这种资源我们称为静态资源。怎么能变成动态资源。显然需要连接数据库。
    • 连接数据库需要JDBC程序,也就是说需要编写Java程序连接数据库,数据库中有多少条记录,页面上就显示多少条记录,这种技术被称为动态网页技术。(动态网页技术并不是说页面中有flash动画。动态网页技术是说页面中的数据是动态的,根据数据库中数据的变化而变化。)
    • 对于一个动态的web应用来说,一个请求和响应的过程有多少个角色参与,角色和角色之间有多少个协议


    • 也就是说我们如果想要访问Java程序的话,应该要有一个路径来对应这个Java程序
  • 有哪些角色(在整个BS结构的系统当中,有哪些人参与进去了)

    • 浏览器软件的开发团队(浏览器软件太多了:谷歌浏览器、火狐浏览器、IE浏览器…)
    • WEB Server的开发团队(WEB Server这个软件也是太多了:Tomcat、Jetty、WebLogic、JBOSS、WebSphere…)
    • DB Server的开发团队(DB Server这个软件也是太多了:Oracle、MySQL…)
    • webapp的开发团队(WEB应用是我们做为JavaWEB程序员开发的)
  • 角色和角色之间需要遵守哪些规范,哪些协议

    • webapp的开发团队 和 WEB Server的开发团队 之间有一套规范: JavaEE规范之一Servlet规范。
    • Servlet就是一套接口,就是一套规范,是SUN公司制定小程序和服务器之间的规范
      • Servlet规范的作用是什么?

        • WEB Server 和 webapp解耦合。我们开发的程序不仅可以运行在Tomcat服务器,还可以运行在其他服务器。
  • 浏览器发送数据给服务器,服务器传回数据给浏览器,他们是不同计算机之间的通信,需要一套协议才可以进行通信。
  • Browser 和 WebServer之间有一套传输协议:HTTP协议。(超文本传输协议。)
  • webapp开发团队 和 DB Server的开发团队之间有一套规范:JDBC规范。

下面内容,我写在同专栏的其他博客上

模拟Servlet本质

模拟Servlet本质

使用idea开发第一个servlet程序

使用idea开发第一个servlet程序

Servlet对象的生命周期

Servlet对象的生命周期

适配器改造Servlet

适配器改造Servlet

ServetConfig

ServletConfig

ServletContest

ServletContest

持续更新中…

javaWeb——Servlet相关推荐

  1. Javaweb servlet体系结构与原理剖析

    Javaweb servlet体系结构与原理剖析 1.Servlet的工作过程 2.Servlet体系结构 3.Servlet工作原理 4.Servlet生命周期 1.Servlet的工作过程 当用户 ...

  2. Javaweb Servlet 下载文件

    JavaWeb Servlet 实现下载文件 Servlet类 import javax.servlet.ServletException; import javax.servlet.ServletO ...

  3. javaweb(servlet)+jsp+Mysql实现的简单相册管理系统(功能包含登录、管理首页、添加图片、分类管理、修改密码、图片详情等)

    博客目录 javaweb(servlet)+jsp+Mysql实现的简单相册管理系统 实现功能截图 系统功能 使用技术 代码 完整源码 javaweb(servlet)+jsp+Mysql实现的简单相 ...

  4. javaweb(servlet)+jsp+Mysql实现的酒店客房管理系统(功能包含登录、用户管理、住客信息管理、房型管理、房间管理、会员星级管理、订单管理等)

    博客目录 javaweb(servlet)+jsp+Mysql实现的酒店客房管理系统 实现功能截图 系统功能 使用技术 代码 完整源码 javaweb(servlet)+jsp+Mysql实现的酒店客 ...

  5. JavaWeb——Servlet(全网最详细教程包括Servlet源码分析)

    JavaWeb--Servlet Tomcat工作机制动画演示(点击动图可全屏观看) 什么是Servlet Servlet(Server Applet),全称Java Servlet,未有中文译文.是 ...

  6. JavaWeb Servlet 登录功能 注销功能

    JavaWeb Servlet 登录功能 注销功能 有三个逻辑: 处理登陆的逻辑,用户主页的逻辑,退出登录逻辑 登陆的逻辑LoginServlet.java import java.io.IOExce ...

  7. Java-Web Servlet开发

    一.Servlet概述 1.什么是Servlet Servlet是JavaWeb的三大组件之一,它属于动态资源.Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Ser ...

  8. JavaWeb——servlet介绍

    一.引言 servlet是javaweb中三大组件之一,必须重中之重,打好基础== 二.Servlet继承关系 Servlet是一个interface,全局限定名:javax.servlet.Serv ...

  9. 重学JavaWeb —— Servlet,简单全面一发入魂

    文章目录 Servlet 概述 基本使用 两个重要对象 请求转发 会话技术 Cookie Session 对比小结 其它相关对象 ServletContext ServletConfig 过滤器 概述 ...

最新文章

  1. x86汇编语言从实模式百度云_Intel x86 CPU 32位保护模式杂谈之任务切换 上
  2. Python3 格式化输出 %s %d 等
  3. [ Python ] PIL
  4. 和rna用什么鉴定_RNA-seq:测序原理之文库构建
  5. Cache相关基本概念理解
  6. 一个网页设计师应该考虑的9件事
  7. Css中部分知识点整理【笔记整理】
  8. disable menu item
  9. 数字三角形问题Java
  10. UCBCS188 AI学习笔记(2)informed search (启发函数搜索)
  11. USB接口ID卡读卡器oem软件(vb源代码)
  12. 【Chinapub读书会第9期】5月28日赵鑫磊带你深入解析Linux
  13. [CATARC_2017] 第一周
  14. Video Understanding(2)——Temporal Action Detection时序动作检测
  15. opencv录制视频 python_OpenCV Python 录制视频
  16. 百利药业科创板上市:市值129亿 募资缩水4亿
  17. treefrog之视图 ERB
  18. 如何用牛顿迭代法求平方根
  19. 妖怪,看法宝-看反射的“照妖镜”如何让类原形毕露
  20. PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)...

热门文章

  1. Struts2 Cannot create a session after the response has been committed 一个不起眼的错误
  2. 掩码语言模型(Masked Language Model)mlm
  3. web服务器tornada,flask问题
  4. 色彩(颜色)空间原理(实现代码)
  5. YOLO、SSD、FPN、Mask-RCNN检测模型对比
  6. 深度学习模型训练过程
  7. 2021年大数据ELK(九):使用VSCode测试分词器
  8. 安装PHP7.3.2make编译出现报错,内存不足导致,临时解决方法
  9. [JAVAEE] Thymeleaf 基本语法: form相关标签
  10. php xdebug 中文手册,php 安装xdebug扩展