初识Tomcat、Maven、Servlet

初识Tomcat、Maven、Servlet

  • 前言
  • 一、了解Tomcat?
  • 二、使用Tomcat
    • 1.检查Tomcat是否启动成功?
    • 2.简单使用Tomcat
      • 1.使用Tomcat部署静态页面
      • 2.使用Tomcat部署动态页面
  • 三、了解Maven
  • 四、使用Maven
    • 4.1创建一个项目
    • 4.2使用Maven进行打包
    • 4.3使用Maven管理依赖
  • 五、了解Servlet
    • 5.1简单创建一个Servlet程序
    • 5.2在浏览器中显示页面
    • 5.3常见错误
    • 5.4Servlet生命周期表示什么阶段做什么事情
  • 总结


前言

什么是Tomcat?
Tomcat是一种HTTP服务器,Java语言中最常用的服务器。Tomcat对于HTTP协议进行了封装。

一、了解Tomcat?

首先我们在官网下载Tomcat,之后安装,在文件夹中打开就是这样的
初识Tomcat、Maven、Servlet_第1张图片
先介绍一下这里面的内容:
1.bin :存放一起启动停止脚本,启动Tomcat就需要运行bin目录里面的startup.bat文件 ,windows系统启Tomcat使用.bat文件,而linux系统使用.sh文件。
在这里插入图片描述

2.conf目录是包含了Tomcat中一些配置,如启动Tomcat使用的端口号等
3.lib Tomcat运行时,依赖的一些库
4.logs 是Tomcat的运行日志
5.webapps :存放用户自定义的代码 相当于Tomcat是一个平台,我们自己写代码实现一些网站,就需要把网站放到“webapps”中,Tomcat就能运行这些程序了
有关web相关的代码,都是在Tomcat上执行的,而不是简单在idea上运行

Tomcat本身也是应用程序,Tomcat核心工作就是处理HTTP请求和HTTP响应。Tomcat能够处理HTTP请求,全靠操作系统内核中的网络协议栈来支撑的。
Tomcat具体提供的服务
1.收到HTTP请求时,按照HTTP协议格式,把这个请求解析成一个HttpServletRequest对象
2.Tomcat根据请求的信息(URL的路径,方法)定位到某个具体的Servlet类中,以及调用的某个方法。
3.用户自己书写的代码,就会根据HttpServletRequest的内容动态计算,生成一个HttpServletResponse对象
4.Tomcat根据这个HttpServletResponse对象按照HTTP协议的格式构造成一个字符串,通过内核中的协议栈,发送给浏览器。

二、使用Tomcat

启动Tomcat后一闪而过?
因为Tomcat进程是要绑定主机的8080端口,一个端口只能绑定一个进程,要不就是已经打开了Tomcat,重新再打开就会闪退,要不就是其他软件绑定了端口,导致Tomct不能使用该端口,

1.检查Tomcat是否启动成功?

1.任务管理器
通过任务管理器查看是否存在Tomcat这个进程
2.通过cmd命令查看8080端口是否被占用
在这里插入图片描述
这就是端口号被占用的情况

3.Tomcat网站
通过浏览器直接访问Tomcat欢迎页面 http://127.0.0.1:8080/

初识Tomcat、Maven、Servlet_第2张图片
127.0.0.1是环回ip,环回ip就是代表本机,即Tomcat就是部署在本机上的

2.简单使用Tomcat

Tomcat 上可以部署静态或者动态资源
1.先创建一个文件,
2将文件放到Tomcat 里webapps中ROOT目录下
3.通过输入http://127.0.0.1:8080/(文件名及后缀)去访问

1.使用Tomcat部署静态页面

先写一个简单的HTML页面,将HTML文件放入webapps 中的ROOT目录下
通过输入路径 http://127.0.0.1:8080/(文件路径以及后缀)即通过Tomcat访问到HTML了。
初识Tomcat、Maven、Servlet_第3张图片
但是你会产生疑惑,直接从本地打开HTML文件和Tomcat打开文件是一样的啊,有什么区别吗?这样就引出了我们使用Tomcat的目的,就是跨网络传输,我们从本地打开HTML文件只是自己能看见,部署在Tomcat最大的优势就是通过网络访问部署在Tomcat上的静态资源了,但是要保证两台主机连接同一局域网上,想要跨网连接,主机必须有公网ip,或者部署在云服务器上

2.使用Tomcat部署动态页面

依赖了Tomcat提供的一组API,称为Servlet

三、了解Maven

1.Maven是Java中“工程管理工具”
Maven具体的任务是让我们去创建一个“项目”,这里的项目是一个web项目、
wen项目是和其他项目是不同的,有一定的区别,
web项目的目录结构是有特定的要求
web项目中有特定的配置文件,配置文件中也有一些特定的内
2.Maven能够帮我们进行代码的“编译”“验证”“打包”“部署”等工作
3.Maven还能进行依赖管理,使用Maven就能自动引入第三方库
IDEA中内置Maven

四、使用Maven

1.cmd命令行通过Maven命令来使用,但是如果是内置的Maven就不能这样使用
2.在idea内使用

4.1创建一个项目

(1)在idea中新建一个项目 选择Maven选项(在idea中使用Maven)
(2)之后选择存放路径和文件名点next
创建好项目之后,Maven自动生成了这样的目录结构
初识Tomcat、Maven、Servlet_第4张图片
src 源代码 main 里面放业务代码 test 里面放测试代码 resources存放源代码执行依赖的资源。蓝色图标是我们源代码的目录,绿色图标是我们测试代码的目录
我们需要补充目录结构来使用
1.main目录下添加webapp目录
2.webapp目录下添加 WEB-INF目录
3.在WEB-INF目录下添加web.xml文件
最终效果
初识Tomcat、Maven、Servlet_第5张图片
这里结构创建正确Tomcat才能正确使用

4.2使用Maven进行打包

1.先找到Maven的窗口,右侧横条出找到Maven 点击
2.找到lifecycle生命周期,描述的是一个Maven项目的生命周期,从创建到最终发布的每一个过程
3.这里我们使用package进行打包,
初识Tomcat、Maven、Servlet_第6张图片
出现这样的情况就是这次打包就成功了
在这里插入图片描述
最终在左侧目录多了一个target目录
最终显示了这个压缩包就是打包过程生成了
在这里插入图片描述

4.3使用Maven管理依赖

1.在中央仓库中找到我们需要的第三方库包找到Maven选项,
2.找到.xml标签文件进行拷贝到pom.xml中,
3.把拷贝的内容存放在dependencies标签中
初识Tomcat、Maven、Servlet_第7张图片
如果显示红色的字段,就说明还没有下载好,等待一会就好了,
Maven会自动帮我们下载依赖
Maven默认有一个专门的目录来保存.jar包,一般是存在于这样的目录下的
初识Tomcat、Maven、Servlet_第8张图片
我们一般把Maven在本地目录下存放.jar包的地方称位本地仓库

即Maven给我们提供的功能就是
1.创建项目
2.打包构建
3.下载依赖

五、了解Servlet

Servlet是Tomcat给我们程序猿提供一组编程接口(API)。
Servlet是实现一种动态页面的机制,根据用户请求的参数不同,返回的结果就不同,每次响应都是根据请求实时计算出来的
Maven就是帮助我们使用Servlet,我们使用Servlet时,就是用Maven创建出一个web项目,也需要使用Maven帮我们下载Servlet依赖的.jar包,还需要借助Maven把代码打包。

5.1简单创建一个Servlet程序

1.创建项目,先使用idea创建Maven项目
2.修改目录结构,创建好了之后需要创建一些补充的结构,修改为以下结构
初识Tomcat、Maven、Servlet_第9张图片
3.引入Servlet依赖~ ,将依赖放入pom.xml中的dependencies 标签中
在这里插入图片描述
这个标签标识当前这个.jar包只是在开发阶段参与的,在后序的部署阶段不参与使用。
部署把写好的代码放到服务器或者其他的电脑上去使用。
4.编写代码,可以编写代码了 在java目录下创建一个类 并让这个类继承于 ,如果没有报错就说明你.jar导入正确,注意:在Servlet中不需要写main方法
5.加上注解,在当前类前加上一个webServlet注解,参数是一个字符串 参数的含义是 当前类在URL路径为(/字符串名)的时候被调用 即 如果Tomcat收到的请求中带有/字符串名这样的路径,就会触发这个类里面的方法,具体为哪个方法,就是看收到的请求是GET还是POST请求,
初识Tomcat、Maven、Servlet_第10张图片

6.打包运行,使用Maven的中的打包选项 ,注意Maven 打包的是.jar包,而Tomcat识别的是.war包 我们只需要加上一个标签即可修改,在pos.xml中加上packaging标签 如图
在这里插入图片描述
还能修改当前打包的名字 ,使用下图的标签
在这里插入图片描述
7.部署就是把war包拷贝到Tomcat的webapps目录中就可以了
8.验证 ,在浏览器中进行验证 输入 http://127.0.0.1:8080/helloServlet-1.0-SNAPSHOT/hello
在这里插入图片描述
将war包导入webapps中自动进行解压缩,填写url是要将路径写对
最终实现了一个最简单的Servlet代码
初识Tomcat、Maven、Servlet_第11张图片
书写一个简单的代码的流程:
1.创建一个类,并继承于HttpServlet
2.重写父类的doGet方法
3.在doGet方法里面在执行一些我们想要的代码
解释当前Servlet中一些类功能: HttpServlet表示当前webapp的一个功能模块 主要是重写这个类的方法
HttpServletRequest 表示这一次HTTP请求的内容
HttpServletResponse 表示这一次HTTP响应的内容

在Servlet中,是如何调用到具体的代码
Tomcat收到HTTP请求,分析HTTP请求的关键信息:
1.URL中的path,path 是否为webapps目录下某个路径,
2.URL的第二级path是否为webapp下的某个类里面的注解所对应的路径,确定了该webapp下的某个Servlet类
3.再根据当前是GET请求还是POST请求,确定调用Servlet类里面的doGet还是doPost

5.2在浏览器中显示页面

前面介绍的流程没有构造HTTP响应浏览器还是空白页,我们要把HTML页面代码返回给浏览器
初识Tomcat、Maven、Servlet_第12张图片
初识Tomcat、Maven、Servlet_第13张图片

基础格式
初识Tomcat、Maven、Servlet_第14张图片
pos.xml 中存放

DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Applicationdisplay-name>
web-app>

引入自己想要的依赖 在Maven Repository中
修改格式

  <packaging>warpackaging>

修改名称

 <build>
        <finalName>addServletfinalName>
    build>

修改为java1.8的格式

<properties>
        <encoding>UTF-8encoding>
        <maven.compiler.source>1.8maven.compiler.source>
        <maven.compiler.target>1.8maven.compiler.target>
    properties>

实现一个简单的动态页面 两数相加
1.先创建项目 修改目录 添加依赖
2.编写代码实现 要捕捉两数并且返回他们的和
初识Tomcat、Maven、Servlet_第15张图片

初识Tomcat、Maven、Servlet_第16张图片
每次修改代码都要重新打包,部署

5.3常见错误

404 1.URL路径书写错误
2.注解书写错误 注意带/符号
3.web.xml是否正确 (目录等产生错误 ,目录结构不对)
格式正确但是浏览器是空白的 检查你是否给resp设置了返回内容
500 服务器出现问题 代码书写错误会报错
乱码 编码方式不统一 不支持中文,修改一下
在这里插入图片描述

5.4Servlet生命周期表示什么阶段做什么事情

1.初始化阶段调用init
2.每次收到请求调用service方法(HttpServlrt里面的service方法又会调用doXXX方法)
3.在服务器退出之前,再调用一次destroy

总结

容器(Container): 认为Tomcat是webapp的容器
上下文(Context):每个webapp就有一个独立的上下文对象,可以借助这个上下文对象来共享同一个webapp下不同的Servlet类之间的数据
学习Servlet就是主要学习其中的三个类 HTTPServlet HTTPServletRequest HTTPServletResponse 这三个类

你可能感兴趣的:(web)