参考自北京动力节点的视频教程:https://www.bilibili.com/video/av14548279/?p=1

1、Java XE

Java SE 是做电脑上运行的软件。
Java EE 是用来做网站的-(我们常见的JSP技术)
Java ME 是做手机软件的。

2、B/S架构与C/S架构

3、三协议四角色

  • HTTP协议:
  • Servlet协议:
    • 若程序员要开发完成某一具体业务的服务端程序,则必须实现Servlet接口,使用ServletAPI进行数据传递。
    • Servlet协议四JavaEE协议的一部分。
      • JavaEE协议即进行JavaWeb开发的一套API,除了Servlet协议外,还包含JSP协议、JSTL协议、JPA协议等。
  • JDBC协议:
    • 服务器端程序按照JDBC协议中规定的方式可以连接并操作数据库。
    • JDBC协议(接口)的实现,均由数据库厂商完成,放于数据库厂商提供的数据库驱动jar包中了。
    • 所以,我们连接不同的数据库,就需要导入不同的数据库驱动jar包。

4、Tomcat服务器

  • 重量级服务器:实现了javaEE规范。
  • 轻量级服务器:实现了javaEE规范中的Servlet/JSP,没有大面积实现JavaEE规范,所以叫轻量级的服务器。
  • 因为Tomcat不是重量级服务器,所以不能称之为JavaEE容器。

5、Tomcat的运行环境配置

  • Tomcat6及其后版本可以只安装JRE而不安装JDK。若Tomcat安装的本机作为服务器,则这台电脑可不安装JDK而只安装JRE
  • 目前的Tomcat的安装不再需要配置环境变量CATALINA_HOME,因为在\tomcat-9\bin的startup.bat中有一行代码:

6、Tomcat的启动与访问

  • 双击打开bin目录下的startup.bat文件启动Tomcat。相反shutdown.bat文件来关闭Tomcat服务。
    • 若环境变量JAVA_HOME没有设置正确,则会导致启动失败。
    • 在cmd命令行中,可以获取命令出错的原因。
  • 通过浏览器访问http://localhost:8080,若访问成功,则表明tomcat启动成功。
  • 27.0.0.1的域名,打开本机的名称为hosts文件就可以看到。该文件在Windows系统中一般位于如下位置:C:\Windows\System32\drivers\etc
  • 若安装了Tomcat的本机作为服务器,让局域网中的其他电脑来进行访问,则需要让其他电脑知道安装Tomcat的电脑的IP地址,让其他电脑通过IP来访问Tomcat服务器。

7、项目(应用)的结构

7.1、总览

  • 项目文件夹(应用)所在目录下可以直接存放资源文件,如.html、.jpg等,也可以将其放入到子目录中访问。
  • 在/WEB-INF/下可以包含web.xml配置文件,定义请求URI与所要访问的Servlet间的映射关系、指定欢迎页面等。
  • 在/WEB-INF/可以包含子目录lib,用于存放当前web应用所使用的外部Jar包。
  • 若Web项目中包含Servlet代码,则servlet的字节码必须存放在的当前应用所在子目录/WEB-INF/classes下。
  • /WEB-INF/目录中的资源不能被浏览器直接访问。
  • 项目目录下的各个文件夹及特殊文件的名称及其大小写都是Java EE规范规定好的,固定死的。

7.2、实际操作1

假设 web项目文件夹(myweb) 里有 一个html文件hello.html 和 一个图片文件car1.jpg,将myweb文件夹放在...\tomcat-9\webapps\ 下,启动tomcat,然后
 

7.3、实际操作2

在myweb里新建一个WEB-INF文件夹(Java EE规范规定该文件夹的名称全大写),在WEB-INF里新建一个名为web.xml的文件,该文件的内容可以从...\tomcat-9\conf\web.xml文件里拷贝,拷贝后具体内容如下

  • 在浏览器里访问 http://localhost:8080/myweb/ 就可以直接加载hello.html文件;
  • <welcome-file-list>欢迎文件列表,表示默认访问的“资源文件”(hello.html和car1.jpg都是资源文件)。
  • xml文件是一种文本文件,里面放的都是标签,是W3C制定的一种规范。xml(可扩展标记语言)是html的扩展。

8、War包的使用

由于项目的开发一般是在本地进行的,项目的规模可能比较大(文件比较大),这就需要对项目文件夹进行压缩,War包因此而生。它不仅是对文件夹的一种压缩,而且是一个可执行文件,将其放到服务器的webapps目录下可以自动解压、部署。

注:war包被自动解压部署后最好将其删除,否则每次启动tomcat都会将其解压一次,浪费时间。
这是将web.war放置在webapps下第一次启动Tomcat时启动信息
在没有删除web.war时第二次启动Tomcat时的启动信息

9、War包的生成

  • 生成war文件,需要在cmd下切换(cd)到项目的根目录(cd D:\Tomcat-9\webapps\myweb),再使用命令:jar -cvf d:\abc\web1.war .
    • cvf是命令参数,表示生成一个文档、显示生成过程、指定生成的文件名。
    • d:\abc\web1.war为生成的文档的存放路径 及 文件名。
    • 最后一个点号表示要将当前目录(项目的根目录)中所有内容进行打包。当然也可以将war包直接打包到当前目录:jar -cvf web1.war .
  • 生成war包还有一种简单的方法,那就是在eclipse中直接生成war,操作也非常简单,选中项目名称,右击->Export->WAR file,在弹出的窗口中进行设置输出路径即可。
 

9.1、War包其他功能及解释

  • 查看web1.war中都有哪些文件,可以使用命令:jar -tf web1.war
  • 直接解压web1.war文件,可以使用命令:jar -xvf web1.war
  • 另外,也可使用winrar软件选择zip压缩方式,并将压缩文件后缀名改为war即可压缩生成war文件;同样使用winrar软件可以强行打开war文件,或者强行解压war文件
  • 使用jar命令与winrar软件的区别在于前者在压缩文件的同时会生成MetaINF文件夹,内包含MANIFEST.MF文件。
 

9.2、何时使用war或者jar文件

当你的项目在没有完全竣工的时候,不适合使用war文件,因为你的类会由于调试之类的经常改,这样来回删除、创建war文件很不爽,最好是你的项目已经完成了,不改了,那么就打个war包吧,这个时候一个war文件就相当于一个web应用程序鸟;而jar文件就是把类和一些相关的资源封装到一个包中,便于程序中引用。

10、在Eclipse中创建一个Web项目

具体创建过程可以参考第6节。需要注意的有以下几点:
  • Eclipse运行Web项目时,启动的是Tomcat的副本,而在计算机上安装的Tomcat是没有启动的,此时在浏览器中是访问不到http://localhost:8080/myweb/
  • Eclipse运行Web项目时,项目文件是放置在#Workspace#\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps里的,而不是放在Tomcat的安装目录下。项目在Eclipse中编译完成后可以打成War包放在Tomcat的文件夹webapps下使用。

11、Tomcat核心

11.1、Service.xml内容解析

  • autoDeploy=“true”表示在服务器运行的状态下,将一个war放入当前目录中,Tomcat会将其自动发布(部署)到服务器上,这使得在服务器不必重启的情况下可以自动加载新的项目。

11.2、Tomcat的核心配置

Tomcat的核心配置都集中在Tomcat安装目录的conf\server.xml文件中,其核心结构如下图所示。
  • Server是服务器,一个服务器里可以包含多个服务(Service),Service提供的服务确切得说是服务引擎(Engine)提供的,Engine可以包含多个虚拟主机,默认包含本机localhost。localhost可以包含多个应用Context。

12、虚拟目录的创建

12.1、方法一:配置service.xml文件。

只需在<Host/>标签中添加一个子标签<Context/>即可。
  • 访问时只需在浏览器的地址栏里输入http://localhost:8080/myprimary 即可访问位于d:/02-primary下的网页
  • 缺点:配置完成后需要重启Tomcat。对于大型的网站,重启服务器会造成大量经济损失,所以不建议采用。

12.2、方法二:在主机目录中添加配置。

  • 可在localhost目录下创建一个ooo.xml文件,在文件中输入
  • 访问时只需在浏览器的地址栏里输入http://localhost:8080/ooo 即可访问位于d:/course/myweb2下的网页。
  • 这种方法不用重启Tomcat,在创建ooo.xml文件时Tomcat会自动部署该文件,如下图所示。
 

13、虚拟主机的创建

  • 打开conf目录下的server.xml文件,在</Engine>标签之前添加:
    • name代表虚拟主机的域名,
    • appBase表示该域名下的应用(项目/网页)所存放的目录。如果使用绝对路径,则可以将目录设置在任意位置,默认位置是在Tomcat的安装目录下。
    • 由于修改的server.xml文件,所以要重启服务器。
  • 打开C:\Windows\System32\drivers\etc\hosts文件,在最后一行加入:
然后在浏览器中输入http://mynewhost:8080/myweb/即可访问。
    • 浏览器会先对本机上hosts文件进行DNS解析,如果没有找到,则去网络服务商(联通、电信)公司提供的DNS服务器上寻找该域名,如果还没有找到则会去更高级的DNS服务器上寻找,知道找到该域名为止;如果找不到,则浏览器会提示“域名解析错误"
  • 由于hosts文件将IP:127.0.0.1映射为多个域名,所以当使用IP访问http://127.0.0.1:8080/myweb/回访问谁呢?
    • 浏览器默认访问localhost下的应用,这在server.xml文件中有相关配置
    • 如果将localhost改为mynewhost,则使用IP访问时浏览器将默认方位mynewhost下的应用。

14、修改默认端口号

  • 将端口号修改为80后,访问http://mynewhost:80/myweb/与访问http://mynewhost/myweb/是一样的。
  • 浏览器在你没有写端口号时,它默认访问80端口。
 

15、配置默认应用

 
设置之后,输入http://localhost可以直接访问自己开发的应用,而不是tomcat的默认界面。

修改应用目录名称

  • 每一个虚拟主机都有一个默认的应用,它放在ROOT目录里面。
  • 要想使自己开发的应用称为默认应用,只需将其根目录的名称改为ROOT。
  • 对于非默认的虚拟主机,例如上面的mynewhost,其应用的存放目录在tomcat的安装目录下。若要配置mynewhost的默认应用,只需将D:\Tomcat-9\mywebapps下的某一应用改为ROOT
 
16、MangerApp的使用
后期的开发过程中,会有很多的应用(有些名称会很长),如果在地址栏里一个一个输入很让人很手忙脚乱。tomcat为我们提供了Manger APP(应用管理器),它能帮我们把主机中所有的应用都列出来,只需要我们点击该链接就可以了。
  • 初次使用时,点击上图的"Manger APP",会弹出一个对话框,提示我们输入用户名和密码
  • 此时我们是没有用户名和密码的,我们先点击"取消",会弹出如下界面:
  • 我们按照提示检查位于D:\Tomcat-9\conf\下的tomcat-users.xml文件,在空白处写入提示的内容(格式)
    • 其中rolename代表该用户的身份,username即用户名,password即对应的密码。roles可以对应多个身份,比如:
      • <user username="tomcat" password="111111" roles="manager-script,manager-jmx,manager-status"/>
  • 4个rolename的具体解释(参考自https://blog.csdn.net/jinguangliu/article/details/45950279)
    • manager-gui: 允许访问HTML GUI和状态页
    • manager-script: 允许访问文本接口和状态页
    • manager-jmx: 允许访问JMX代理和状态页
    • manager-status: 仅允许访问状态页
  • 修改好username和password之后,保存该tomcat-users.xml文件,再次利用账号密码登陆,可以看到如下界面
  • 注意:对于非默认的虚拟主机,只需将D:\Tomcat-9\webapps\manager拷贝到对应的存放目录下,然后在地址栏中输入http://mynewhost:8080/manager,然后在弹出的对话框中输入刚刚设置好的账号和密码就可以管理该虚拟目录下的应用。
 

[学习笔记]Javaweb开发视频教程之Tomcat9配置的更多相关文章

  1. Webpack4 学习笔记八 开发环境和生产环境配置

    webpack resolve属性 webpack 区分开发环境和生产环境 webpack resolve属性 该选项的作用是设置模块如何被解析. resolve.alias: 设置别名, 在vue中 ...

  2. VSTO学习笔记(三) 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

  3. 3D Touch开发全面教程之Peek and Pop - 预览和弹出

    ## 3D Touch开发全面教程之Peek and Pop - 预览和弹出 --- ### 了解3D Touch 在iPhone 6s和iPhone 6s Plus中Apple引入了3D Touch ...

  4. Django:学习笔记(1)——开发环境配置

    Django:学习笔记(1)——开发环境配置 Django的安装与配置 安装Django 首先,我们可以执行python -m django --version命令,查看是否已安装django. 如果 ...

  5. Android:日常学习笔记(8)———开发微信聊天界面

    Android:日常学习笔记(8)———开发微信聊天界面 只做Nine-Patch图片 Nine-Patch是一种被特殊处理过的PNG图片,能够指定哪些区域可以被拉升,哪些区域不可以.

  6. Laravel学习笔记(三)--在CentOS上配置Laravel

    在Laravel框架上开发了几天,不得不说,确实比较优雅,处理问题逻辑比较清楚.     今天打算在CentOS 7上配置一个Laravel,之前都是在本机上开发,打算实际配置一下.     1)系统 ...

  7. Linux学习笔记(11)linux网络管理与配置之一——配置路由与默认网关,双网卡绑定(5-6)

    Linux学习笔记(11)linux网络管理与配置之一——配置路由与默认网关,双网卡绑定(5-6) 大纲目录 0.常用linux基础网络命令 1.配置主机名 2.配置网卡信息与IP地址 3.配置DNS ...

  8. Linux学习笔记(10)linux网络管理与配置之一——主机名与IP地址,DNS解析与本地hosts解析(1-4)

    Linux学习笔记(10)linux网络管理与配置之一——主机名与IP地址,DNS解析与本地hosts解析 大纲目录 0.常用linux基础网络命令 1.配置主机名 2.配置网卡信息与IP地址 3.配 ...

  9. Flink学习笔记:Flink开发环境搭建

    本文为<Flink大数据项目实战>学习笔记,想通过视频系统学习Flink这个最火爆的大数据计算框架的同学,推荐学习课程: Flink大数据项目实战:http://t.cn/EJtKhaz ...

随机推荐

  1. Flex中对表格中某列的值进行数字格式化并求百分比

    1.问题背景 一般的,需要对表格中某列的数值进行格式化,对该数值乘以100,并保留两位小数,添加"%" 2.实现实例 <?xml version="1.0" ...

  2. class-支持向量机SVM全析笔记

    support vector machines,SVM是二类分类模型.定义在特征空间上间隔最大的线性分类器,由于包括核技巧实质上成为非线性分类器.学习策略是间隔最大化,可形式化为求解凸二次规划问题(c ...

  3. sql中的IFNULL函数的应用

    select r.status=1 and IFNULL(r.channel_code,'') != 'crm' 这种查询方式的意思就是说如果r.channel_code为空则设置为空字符串,自然而然 ...

  4. 【BZOJ3884】上帝与集合的正确用法(欧拉定理,数论)

    [BZOJ3884]上帝与集合的正确用法(欧拉定理,数论) 题面 BZOJ 题解 我们有欧拉定理: 当\(b \perp p\)时 \[a^b≡a^{b\%\varphi(p)}\pmod p \] ...

  5. 【ZJOI2008】树的统计(树链剖分)

    题面 Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II ...

  6. 【CJOJ1372】【洛谷2730】【USACO 3.2.5】魔板

    题面 Description 在成功地发明了魔方之后,鲁比克先生发明了它的二维版本,称作魔板.这是一张有8个大小相同的格子的魔板: 1 2 3 4 8 7 6 5 我们知道魔板的每一个方格都有一种颜色 ...

  7. eclipse 启动报内存溢出的问题out of memory!

    这个问题困扰了我一个月,今天终于解决了,在网上尝试了好多方法都不行.启动的时候就报错,这里可能是jdk的内存太小了,需要加大jdk的内存. 加上这个就好了 -server -Xms512m -Xmx5 ...

  8. MySQL事务以及隔离级别

    前言: 我一直想不到一个好的标题应该怎么写.我想MySQL的一些重要的内容.我在两次面试中都遇到过的,但直接用MySQL标题好像又不太贴切.干脆就是所写的内容吧. MySQL事务: transacti ...

  9. C# Redis实战(三)

    三.程序配置 在C# Redis实战(二)中我们安装好了Redis的系统服务,此时Redis服务已经运行. 现在我们需要让我们的程序能正确读取到Redis服务地址等一系列的配置信息,首先,需要在Web ...

  10. gnuplot画图中文标注相关问题

    gnuplot是一个基于命令行的开源跨平台画图工具包,画图功能非常丰富.不过最近在考虑如何在gnuplot图中添加中文标注的过程中遇到了一些问题,记录如下. gnuplot支持多种的输出格式,比如pn ...