Tomcat的安装与使用,maven与Servlet的使用

举报
未见花闻 发表于 2022/07/31 22:04:02 2022/07/31
【摘要】 本篇文章将介绍Tomcat的安装与使用,maven与Servlet的使用,一步一步教你如何在Tomcat上部署自己的网页以及第一个Servlet程序,idea中Smart Tomcat的使用和常见问题。

⭐️前面的话⭐️

本篇文章将介绍Tomcat的安装与使用,maven与Servlet的使用,一步一步教你如何在Tomcat上部署自己的网页以及第一个Servlet程序,idea中Smart Tomcat的使用和常见问题。

📒博客主页:未见花闻的博客主页
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📌本文由未见花闻原创!
📆华为云首发时间:🌴2022年7月31日🌴
✉️坚持和努力一定能换来诗与远方!
💭参考书籍:📚《无》
💬参考在线编程网站:🌐牛客网🌐力扣
博主的码云gitee,平常博主写的程序代码都在里面。
博主的github,平常博主写的程序代码都在里面。
🍭作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

🍒1.Tomcat的下载与使用

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为比较流行的Web 应用服务器。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

Tomcat是一个HTTP服务器,当然HTTP服务器有很多种,在java领域,Tomcat是比较知名的一个。反正知道Tomcat是一个HTTP服务器就行了,它能够借助API来接收和处理HTTP请求,下面来介绍一下Tomcat的安装与使用。

下载与安装:
第一步,上网搜索Tomcat,找到Tomcat官网,当然如果你不想找,我给你找好:https://tomcat.apache.org/,收好哈。

第二步,找到下载的地方,如果你是jdk8,选择Tomcat8版本。
版本
第三步,点进去,选择zip文件点击下载即可。

下载
第四步,找个你喜欢的地方,解压即可,点进目录,你会得到下面一堆文件:
安装
使用:
第五步,了解各目录文件的作用
bin目录:启停脚本,就是说启动和关闭Tomcat的可执行文件都在这个目录中,.bat文件表示Windows批处理文件,.sh文件表示Linux的shell脚本文件,所以Tomcat在Linux也是可以运行的,以startup命名的文件就是Tomcat启动程序,以shutdown命名的文件就是Tomcat关闭程序。
启动与关闭
conf目录:含有Tomcat配置文件,配置文件是xml类型的文件,server.xml文件可以修改Tomcat的端口号,默认为8080
配置文件
temp,lib,work目录先不管不是很重要,logs目录:主要用来储存日志。
webapps目录:储存我们部署的Serlvet程序,Servlet部署的程序是war结尾的压缩包(类似)相当于一个网站,一个Tomcat可以部署多个Servlet程序,也可以直接部署前端页面。
1
第六步,使用Tomcat,最简单的方式就是启动Tomcat,启动办法就是在bin目录找到startup.bat文件启动Tomcat,然后直接访问http://127.0.0.1:8080可访问到Tomcat首页。

启动Tomcat页面图如下,最后出现类似org.apache.catalina.startup.Catalina.start Server startup in 896 ms 的文字就表示启动成功了。注意,当启动一个Tomcat程序后在启动一个Tomcat程序会启动失败,因为端口号8080已经被上一个Tomcat程序占用了。
3
Tomcat

也可以部署页面访问,首先将一个前端页面文件(HTML/CSS/JS文件)复制到webapps目录中,然后在bin目录找到startup.bat文件启动Tomcat,最后访问http://127.0.0.1:8080/部署文件的相对wepapps目录的相对路径进行验证。比如我的webapps目录中有一个博客系统文件夹,里面有一个blog_list.html页面文件,我们现在要使用Tomcat访问这个文件,访问的url为http://127.0.0.1:8080/博客系统/blog_list.html
2

cmd窗口里面的不认识的文字是乱码了,因为Tomcat内部的编码格式是utf-8,Windows默认的编码格式为gbk,编码格式不一致,所以就乱码了。

访问http://127.0.0.1:8080/博客系统/blog_list.html效果图:
效果图
在Tomcat部署的页面,有外网IP后别人也是可以访问的,好了,Tomcat的操作差不多就是这样。

🍒2.maven的使用

maven是java世界中非常知名的“工程管理工具”,“构建工具”,即管理依赖,构建/编译,打包,下面来介绍如何使用idea来使用maven来引入mysql的依赖。

第一步,新建项目
1

第二步,选择maven。
2
第三步,编辑基本信息

3
4
第四步,去maven中央仓库,找到mysql数据库的jar包,网址为:https://mvnrepository.com/
5
6
7
第五步,复制依赖,拷贝到pom.xml文件中,注意要新建一个<dependencies>放在该标签里面。
8
第六步,刷新
9
第七步,引入依赖成功。
引入成功

这样,我们的MySQL的依赖就通过Maven引入好了。

🍒3.Servlet

Servlet是一组操作HTTP的API,Tomcat能够调用Servlet然后实现对请求的接收和处理。

🍇3.1第一个Servlet程序

第一步,创建maven项目

创建步骤与上面演示创建maven一致。

第二步,引入依赖,在maven中央仓库搜索Servlet,找到如下图所示的api
10
11
我们选择3.1版本。
12
把依赖引入到pom.xml文件。
13
第三步,创建目录结构
main目录里创建webapp目录。

14

webapp目录里面创建WEB-INF目录。
15
WEB-INF目录下创建web.xml文件。
16
至于为什么要这样创建,这是Tomcat与idea的约定,也可以改其他名称,但需要额外配置。
在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>

第四步,在java,目录下编写servlet代码,第一个Servlet程序诞生了。

  • 创建类,需继承HttpServlet类。
  • 重写doGet方法,用来处理HTTP GET请求,根据请求生成响应。
  • 在方法里面写执行的代码。
  • 加上WebServlet注解,与http带有注解所写的路径关联起来,可以理解为设置该Servlet程序所在的网页相对路径。
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;

//将响应的请求使用注解与http 带有"/hello"的URL关联起来
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //不要调用父类的构造方法
        //super.doGet(req, resp);

        //控制台输出hello world
        System.out.println("hello world");
        //放入响应的body中,页面就能显示hello world了
        resp.getWriter().write("hello world");
    }
}

第五步,针对当前重写进行打包
因为我们所写的程序是没有main方法的,需要打包到Tomcat上调用运行。最朴素的打包过程如下:

首先在pom.xml文件写入以下内容,与dependencies同一级:

    <!-- 打包为war包 不写默认为jar包-->
    <packaging>war</packaging>

    <build>
        <!--指定war包名-->
        <finalName>hello_servlet</finalName>
    </build>

目的是为了使打包的压缩格式为war和指定包名。

5.1
双击package,进行打包。
5.2
提示BUILD SUCCESS表示这样就打包完成了。
5.3
此时,target目录就会有打包好的文件了。
5.4
第六步,部署到Tomcat,启动Tomcat
将打包好的war包拷贝到TomCat中的webapps目录中。

6.1

然后启动Tomcat,运行我们的第一个Servlet程序。

第七步,验证程序运行结果。

访问http://127.0.0.1:8080/hello_servlet/hello可以得到一个显示hello world的页面,同时命令行运行的Tomcat也会输出hello world。

对于URL的路径为什么是/hello_servlet/hello,取决于两方面,一是war包的名称作为一级路径也叫做Context Path,二是java代码在注解标注的路径作为二级路径也叫做Servlet Path,访问的路径就是/war包名(一级路径)/注解标注的路径(二级路径)。我的war包名称为hello_servlet,注解标注的路径是/hello所以综合起来,页面的访问路径为/hello_servlet/hello,加上前面的协议域名端口号,URL就是http://127.0.0.1:8080/hello_servlet/hello

6.2
6.3
那这样和直接写一个html文件有什么区别呢?注意,使用java写的代码是动态的,而直接使用HTML的页面是静态的,比如我在响应请求的内容加上一个时间戳,我们知道时间戳是时刻变化的,我们再来看看页面的变化。

//放入响应的body中,页面就能显示hello world了
resp.getWriter().write("hello world" + System.currentTimeMillis());

经过打包加war包部署,访问页面得到的效果如下:
maven1

Servlet创建总结:

  1. 创建maven项目。
  2. 引入依赖。
  3. 创建webapp目录结构。
  4. 编写Servlet代码。
  5. 打包。
  6. 部署。
  7. 验证。

🍇3.2Smart Tomcat

Smart Tomcat是idea上的一个插件,上面所介绍的Servlet程序运行方法实在是有点麻烦,主要是第五步,第六步,每次修改都需要重新打包和部署,非常麻烦,Smart Tomcat就帮助我们解决了这个问题,只需简单配置一下稍微点一下就可以一键实现打包和部署操作,Smart Tomcat插件安装步骤如下:

第一步,打开idea设置,找到插件选项,即Plugins
1
第二步,在Marketplace搜索Smart Tomcat,下载安装即可。
2
第三步,重启一下idea就可以了,首次使用smart tomcat需要配置,配置过程如下:
1

2
配置好后点击绿色的倒三角形就可以运行Servlet程序了。

3

🍇3.3常见错误

常见错误1:404 未找到
出现该错误,最常见的错误就是路径输错了。
404

常见错误2:405方法不允许
这个错误最常见的就是请求处理的方法不匹配,比如对于GET方法的请求使用POST方法处理,就会出现405方法未找到页面异常。
405
405
对于浏览器什么时候发送的是GET方法,什么时候发送的是POST方法,有以下总结:
GET方法:
1)直接在浏览器地址栏输入URL(网址)
2)通过a标签跳转
3)通过link/script/img…等标签跳转
4)通过form表单,method方法指定为GET
5)通过ajax,type指定为GET
POST方法:
1)通过form表单,method方法指定为POST
2)通过ajax,type指定为GET

还有可能就是调用了父类的super构造方法会出现这种情况,根据源码可知如果协议版本是HTTP/1.1就会返回405错误。

源码
调用父类的doGet方法页面的结果:
405

常见错误3:500服务器内部错误
这种情况一般发生在代码出现异常的时候出现,就是我们的代码没有处理异常,异常就会向上传递,Tomcat会进行处理,这时候的页面异常状态码就是500。这个问题好解决,因为页面会把出现异常的原因以及出现异常的位置告诉你。
比如我们给代码来一个空指针异常。

500
500

常见错误6:页面无法访问
最常见的原因就是Tomcat没有运行或者崩溃,我们把Tomcat关了,就会出现页面无法访问的情况。

无法访问页面


下期预告:Servlet原理

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。