【JavaEE初阶】Tomcat安装与使用及初识Servlet

这篇具有很好参考价值的文章主要介绍了【JavaEE初阶】Tomcat安装与使用及初识Servlet。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. Tomcat的安装与使用

1.1 Tomcat安装

在浏览器中搜索Tomcat,打开官方网页.Tomcat官网
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
点击下载Tomcat8.
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
点击下载压缩包.
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
下载好后解压缩.
解压缩后得到的目录:
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
下面对上述关键文件做部分解释:

  • bin:可执行的程序/脚本.启动Tomcat就在这里.
  • conf:配置,用xml格式表示服务器的配置,比如像修改tomcat的绑定的端口号就需要修改这里的内容.
  • lib:tomcat依赖的一些库.(暂时不考虑)
  • logs(重要):日志,tomcat运行的日志都在这里.如果程序出问题了,如何排查?就看这个日志.
  • webapps:每个webapp都是一个"网站",一个tomcat上可以部署多个网站,此处就叫做"webapps". 这里包含很多目录,每个目录都视为一个独立的网站,后面我们所学习的代码也是部署到这个webapps里的.

1.2 Tomcat的启动

Tomcat的启动:
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
启动后,我们可以看到:
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
Server startup in xxx ms即为启动成功.

1.3 Tomcat部署前端页面

新建网页标签页,输入127.0.0.1:8080进入Tomcat欢迎页面.(此时Tomcat必须处于运行状态)
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
8080是Tomcat默认的端口号.就像MySQL的默认端口号是3306一样.
接下来我们尝试在Tomcat中部署前端代码:
以我们前面学习过的博客系统代码为例:
将blog系统拷贝至webapps这个文件夹中(部署):
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
在导航栏中输入http://127.0.0.1:8080/blog/blog_list.html通过网络来访问.
第一级路径(blog),也起了个名字,叫做application path/context path
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
这个页面和之前的不同,这个是通过网络来访问的.而之前的页面则是通过文件路径来访问的.
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
通过网络访问可以跨主机访问,通过路径只可以访问自己主机上的页面.

2. Servlet

2.1 Servlet是什么

Servlet: 是一种实现动态页面的技术.是Tomcat给java提供的原生的进行web开发的api.
网页分为两类:
静态页面:页面内容始终是固定不变的.(百度主页)
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
动态页面:页面内容随着输入参数不同而改变.(百度结构页)
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet

2.2 第一个Servlet程序

我们先写一个hello world程序:预期写一个Servlet程序 部署到Tomcat上,通过浏览器访问,得到hello world字符串.

一共有七个步骤:

  1. 创建项目
  2. 引入依赖
  3. 创建目录结构
  4. 编写代码
  5. 打包程序
  6. 部署程序
  7. 验证
  1. 创建项目
    此处需要创建一个maven项目.

maven是个"工程管理"工具.它可以:

  1. 规范目录结构
  2. 管理依赖
  3. 构建
  4. 打包
  5. 测试

打开idea:
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
注意:首次使用maven,项目创建好之后,会在下面读条,从中央仓库加载一些maven的依赖.时间较久.
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
注意此处的目录:
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
2. 引入依赖
打开maven中央仓库,搜索Servlet.
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
此处选择3.1.0版本.
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
拷贝maven代码至pom.xml中.
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
注意添加 标签!如果有多个依赖,都往里面拷贝即可.
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
如果长时间标红,刷新:
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
3. 创建目录结构
虽然maven已经帮我们自动创建了一些目录,但是还不够.此处是需要使用maven开发一个web程序,还需要别的目录.
(1) 在main目录下,创建一个webapp目录
(2)在webapp下创建一个WEB-INF目录
(3)在WEB-INF下创建一个web.xml文件
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
(4)给web.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 Application</display-name>
</web-app>

【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
我们写的Servlet程序就相当于是车厢.Tomcat相当于是车头.我们把写好的Servlet程序放到webapps 目录下,就相当于把车厢挂到车头上.Tomcat如何识别webapps目录下哪些是需要拉着跑的车厢,哪些不是. 就需要靠我们复制粘贴的代码来识别.(WEN-INF/web.xml).
相当于投名状.

  1. 编写代码
    【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet

(1)HttpServlet 是Servlet api里提供的现成的类.写Servlet代码一般都是继承这个HttpServlet.
(2)重写doGet方法

【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
我们写的doGet方法,不需要我们手动调用,而是交给Tomcat来调用.Tomcat收到get请求,就会触发doGet方法.Tomcat会构造好两个参数,reqresp. 其中req就是TCP socket 中读出来的字符串,按照HTTP协议解析得到的对象. 其中resp是个空对象(程序猿在doGet,根据请求req,结合业务逻辑构造出resp) resp是输出型参数.
doGet:根据请求计算响应.
super.doGet();父类的这个方法只是返回一个错误页面,需要删掉.

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

//注解是java中特殊的类,Java专门定义了一种"语法糖"来实现注解
//注解的作用,针对一个类/方法,进行额外的"解释说明"
//赋予了这个类.方法额外的功能/含义
//Tomcat实现的
//此处 @WebServlet("/hello") 的作用是:
//把当前的类,和一个HTTP请求的路径关联起来
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //在服务器的控制台里打印
        System.out.println("hello world");
        //将helloworld返回到客户端.
        //getWriter()会创建一个 write 对象
        //此处的 write 操作其实是往resp的body部分进行写入.
        //等resp对象整个构造好了,tomcat会统一转成 HTTP 相应的格式再写 socket
        resp.getWriter().write("hello world");
    }
}

doGet 是 Tomcat 收到Get 请求的时候就会调用,具体要不要低啊用doGet,还得看当前GET请求的路径是什么.不同的路径可以触发不同的代码.(关联到不同的类上)
一个Servlet程序中,可以有很多Servlet类,每个Servlet类都可以关联到不同的路径(对应到不同的资源).因此此处的多个Servlet就实现了不同的功能.

  1. 打包程序
    把程序编译好,得到一些.class文件,再将这些.class打成压缩包.
    jar包就是.class构成的压缩包,但是此处要打war包.jar包只是一个普通的java程序.而war包是tomcat专属的来描述webapp的程序.一个war包就是一个webapp.
    【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
    双击package打包:
    【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
    默认情况下maven打的是jar包,需要微调代码:
    【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
    重新打包:
    【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
  2. 部署程序
    把打包好的war拷贝到tomcatwebapps中即可.
    启动Tomcat.
    【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
  3. 验证
    在地址栏中输入:http://127.0.0.1:8080/hello_servlet/hello
    【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet

小结:在浏览器中输入url之后,浏览器就构造了一个对应的HTTP GET请求,发送给tomcat. tomcat就根据第一级路径,确定了具体的webapp,根据第二级路径,确定了调用哪个类. 再然后通过GET/POSE方法确定调用HelloServlet的哪个方法(doGET,doPost)

在上述过程中,5打包,6部署程序两个过程可以使用IDEA的Tomcat插件把Tomcat 集成到IDEA中.就省去了我们手动打包的过程.手动部署的过程,只需要按一下运行,就可以自动打包部署.

基于tomcat插件自动打包部署,适用于开发阶段,频繁修改代码验证. 手动打包部署,适用于上线阶段,发布程序.

使用tomcat插件:
插件:功能的扩展.IDEA提供了一些API,可以让程序员开发插件,对IDEA现有功能进行扩展.

【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
首次使用smart tomcat需要配置一下.
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
设置tomcat所在路径
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
但是我们可以看到,启动失败了.
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
8080端口被占用.可以打开cmd输入以下:可以看到
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet

此时我们只需要关闭Tomcat即可.
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
重新启动成功.
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet

smart tomcat工作原理:
不是自动拷贝war包(webapps中不变),是通过另一种方式来启动tomcat的.tomcat支持启动的时候显示指定一个特定的webapp目录,相当于是让tomcat 加载单个的webapp运行.
【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
IDEA直接调用tomcat,让tomcat加载当前项目中的目录.

http://127.0.0.1:8080/后面跟的是context path
如果是直接拷贝war包的方式部署,context path就是war包名(目录名)
如果是smart tomcat的方式部署,此时这里是可以配置的.默认是项目名.

这两种部署,其实是两种tomcat的运行方式,对于context path的理解不同,在使用时需要特别注意.

2.3 常见错误

  1. 常见错误1: 404
    404 表示用户访问的资源不存在, 大概率是 URL 的路径写的不正确.
    【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
    或者是你的webapp没有正确被部署: web.xml 写错了, 文件名错了, 文件路径错了, 文件位置错了…
  2. 常见错误2: 405
    405 表示对应的 HTTP 请求方法没有实现, 比如我们在浏览器发了个GET请求, 但是代码里没写doGet, 此时就会出现405.
    【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
    还有可能就是重写的方法中没有去掉默认调用的父类方法, 如super.doGet
    【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
  3. 常见错误3:500
    往往是Servlet代码中抛出异常导致的, 这个问题最好解决, 因为500的时候页面日志中会明确告诉你异常调用栈, 告诉你是哪一行代码出的异常
    比如我们给代码来一个空指针异常.
    【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet

【JavaEE初阶】Tomcat安装与使用及初识Servlet,JavaEE初阶,java-ee,tomcat,servlet
4. 常见错误4: 出现空白页面
方法中逻辑没有写类似resp.getWriter().write()这样的代码文章来源地址https://www.toymoban.com/news/detail-613761.html

  1. 常见错误5: 页面无法访问
    最常见的原因就是Tomcat没有启动或者崩溃, 我们把Tomcat关了, 就会出现页面无法访问的情况, Tomcat无法启动, 很可能是端口冲突了.

到了这里,关于【JavaEE初阶】Tomcat安装与使用及初识Servlet的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JavaEE初阶】Servlet (三)MessageWall

    在我们之前博客中写到的留言墙页面,有很严重的问题:(留言墙博客) 如果刷新页面/关闭页面重开,之前输入的消息就不见了. 如果一个机器上输入了数据,第二个机器上是看不到的. 针对以上问题,我们的解决思如如下: 让服务器来存储用户提交的数据,由服务器保存. 当有新的浏览

    2024年02月14日
    浏览(38)
  • 【JavaEE初阶】——第七节.Servlet入门学习笔记

    作者简介:大家好,我是未央; 博客首页: 未央.303 系列专栏:JavaEE进阶 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!! 文章目录 前言 一、前置知识:Maven 1.1 🍎初识Maven 1.2 🍎Maven的使用  二、Servlet 第一个Servlet程序:hello world 方法步骤: 2.1 创

    2024年02月15日
    浏览(37)
  • [JAVAee]Tomcat - Servlet

    目录 Tomcat Servlet的工作 创建Servlet ①项目 ②依赖  ③目录  ④代码 ⑤打包 ⑥部署 ⑦验证 Servlet的运行原理 Servlet API HttpServlet 方法 处理Get/POST请求  HttpServletRequest 方法 获取请求中的信息  获取GET请求中的参数 获取POST请求中的参数 FORM表格形式 JSON形式 方法一: 方法二: Http

    2024年02月12日
    浏览(42)
  • 初识网络(JavaEE初阶系列9)

    目录 前言: 1.网络的发展史 1.1独立模式 1.2网络互联 1.3局域网LAN 1.4广域网WAN 2.网络通信基础 2.1IP地址 2.2端口号 3.认识协议 3.1协议分层 3.2分层的作用 3.3TCP/IP五层(或四层)模型 3.4OSI七层模型 3.5网络设备所在分层 4.封装和分用 结束语: 网络的主要发展大体可以分为这四个阶

    2024年02月14日
    浏览(38)
  • 【JavaEE初阶系列】——网络初识—TCP/IP五层网络模型

    目录 🚩网络的发展史 🎈局域网LAN  🎈广域网WAN 🚩网络通信基础 🎈IP地址 🎈端口号 🎈协议类型  🎈五元组 🚩协议分层  🎈什么是协议分层 🎈协议分层的好处 🎈OSI七层网络模型 🎈TCP/IP五层网络模型 💻物理层 💻数据链路层 💻网络层 💻传输层  💻应用层 🎈网络

    2024年04月15日
    浏览(38)
  • Tomcat的安装与使用,Maven与Servlet的使用

    Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目, 由Apache, Sun和其他一些公司及个人共同开发而成, 由于有了Sun的参与和支持, 最新的Servlet和JSP规范总是能在Tomcat中得到体现, Tomcat5支持最新的Servlet 2.4和JSP 2.0规范. 因为Tomcat技术先进, 性能稳定, 而且免

    2024年02月08日
    浏览(42)
  • Tomcat的安装与Maven依赖Servlet的使用

    Tomcat 是一个 HTTP 服务器. 前面我们已经学习了 HTTP 协议, 知道了 HTTP 协议就是 HTTP 客户端和 HTTP 服务器之间的交互数据的格式. 同时也通过 ajax 和 Java Socket 分别构造了 HTTP 客户端. HTTP 服务器我们也同样可以通过 Java Socket 来实现. 而 Tomcat 就是基于 Java 实现的一个开源免费,也是

    2024年02月06日
    浏览(108)
  • Java后端01(初识servlet)

    添加依赖坐标(maven) ​所有请求都会固定携带一个参数(method)代表请求的方式(GET,POST,PUT,DELETE,OPTION) 一个post请求的全流程 浏览器地址栏输入地址访问 通过超链接点击发送的请求方式 form表单的默认提交方式 ajax指定get方式发送的请求 form表单指定post方式提交 aj

    2024年02月16日
    浏览(33)
  • JavaEE初阶:Java线程的状态

    目录 获取当前线程引用 休眠当前线程  线程的状态 1.NEW               2.TERMINATED  3.RUNNABLE 4.WAITING 5.TIMED_WAITING 6.BLOCKED 多线程的意义 单线程  多线程 这个方法返回当前线程的引用。但是我们会对static有疑惑,这其实是一个静态方法,更好的说法是这是一个 类方法, 调用这

    2024年02月11日
    浏览(42)
  • 【JavaEE初阶】 认识文件与Java中操作文件

    我们先来认识狭义上的文件(file)。针对硬盘这种持久化存储的I/O设备,当我们想要进行数据保存时,往往不是保存成一个整体,而是独立成一个个的单位进行保存,这个独立的单位就被抽象成文件的概念,就类似办公桌上的一份份真实的文件一般。 文件除了有数据内容之外,

    2024年02月07日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包