创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

这篇具有很好参考价值的文章主要介绍了创建第一个Servlet程序“hello world“(创建流程+页面出错情况)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

🐲 1. 动态页面之Servlet

🐲 2. 写第一个Servlet的程序:"hello world!"

🦄 2.1 创建项目

🦄 2.2 引入Servlet依赖

🦄 2.3 创建目录结构

🦄 2.4 编写代码 

🦄 2.5 打包程序

🦄 2.6 部署程序

🦄 2.7 验证程序

🐲3. 创建Servlet流程简化

🐲4. 工作原理流程分析

🐲5. 访问页面出错


HTTP服务器,本质上就是一个TCP服务器,只不过在基础上加上了一些按照HTTP格式进行解析/构造 这样的代码,我们开发网站后端,要做的就是调用Tomcat提供的API进行二次开发

本篇所写的就是Tomcat给我们进行二次开发所提供的API:Servlet

🐲 1. 动态页面之Servlet

先来看一下 静态页面 和 动态页面 的解释

静态页面:页面的内容,是固定的(以文件的形式访问,放在硬盘的指定目录中), 无论什么时候访问,无论是谁来访问,得到的页面效果是一样的

动态页面:不是一个真实的硬盘文件,而是通过代码在内存中构造出一个"虚拟的资源",这样就可以根据所访问的时间不同,访问的用户不同,访问时带有的参数不同,就可以构造出不同的页面来

构建动态页面的技术有很多,每种语言都有一些相关的库/框架来做这个

而Servlet就是Tomcat这个HTTP服务器提供给java的一组API,来完成构建动态页面的这个任务


🐲 2. 写第一个Servlet的程序:"hello world!"

一共有7个步骤

(1) 创建项目         (2) 引入Servlet依赖        (3) 创建目录结构            (4) 编写代码

(5) 打包程序         (6) 部署程序                   (7) 验证程序

🦄 2.1 创建项目

(1) 需要创建的项目是maven项目

注意:右测的那些都不要选

因为你创建项目,肯定是为了实现什么东西,而实现不同的东西,会有不同的目录结构/不同的配置文件,而idea为了更方便创建,就提供了很多模板让你选,来简化那些操作,当前只是写一个简单的程序.就不需要选那些东西,如果选了代码可能会编译不了

这个界面可能和你的不一样,因为idea版本不同,我的是2021.2的

如果不一样还是不会创建的话,可以去搜一下对应版本maven创建方式

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

(2) 这里和以前idea创建项目区别不大,输入项目名称和路径就可以了 

 创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

  (3) 创建好后,目录结构是这样的

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

 (4) 这里创建了一个maven项目,那么先来看一下maven是什么

首先要清楚,maven是一个独立的程序,我们可以单独安装一个这个,但是没啥必要,因为idea内置自带了一个maven

其次要清楚构建工具的作用:(build)包括不限于,编译,打包,部署.....

我们之前写代码,都是直接在idea里,点击main方法前面的三角号,就直接自动编译运行了

针对一些简单的程序这样可以,如果是一些比较复杂的程序,尤其是多个模块,并且相互依赖

要想运行起来就非常麻烦了,

比如A依赖B,B依赖C

此时要想编译运行A,就必须先编译运行B,要想编译运行B,就要先编译运行C

构建工具就是为了解决这个问题,使我们在开发比较复杂的项目时,也可以比较方便的进行编译和打包操作,

我们使用maven,主要就是借助maven进行编译,打包,管理依赖.......


🦄 2.2 引入Servlet依赖

Servlet不是java标准库自带的,要想使用,就需要额外的下载安装,并引入到项目中

maven的一个核心功能,就是能够自动的管理依赖,就会把我们使用的库里依赖的东西,自动从中央仓库上下载过来

(1) 下面进入中央仓库搜索servlet

Maven Repository: servlet (mvnrepository.com)

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

(2) 下面就是要选取对应的版本  

tomcat8.5 <-----> java8.0 <------> maven3.1 这三个版本要对应(最常用的版本就是这个,如果不是可以自行在网上搜一下)

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

 (3) 直接把下面Maven这个代码复制下来(我们这里不用下载,只需要把这个代码复制过来就可以了) 

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

 (4) 复制到pom.xml这里,手动写一个dependencies标签,把复制的内容写到这个标签中

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

第一次这样搞,拷贝过来一个是出现标红说有错误,然后Alt+回车,idea会自动根据这里写的东西,从中央仓库上下载依赖,等待一会就下载好了(idea下面有一个进度条)

如果过了一会还是标红还没下载好,那试着手动刷新一下 ,如果出现报错了,也可能是你的网络有问题,或者pom.xml写错了

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

    <dependencies>
        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

🦄 2.3 创建目录结构

此时虽然maven已经给我们创建出一些目录了,但是还不够,我们需要的是一个符合tomcat要求的目录结够

(1) 创建目录结构  注意位置,名字,层次,都必须一样,

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

(2) 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>

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)


🦄 2.4 编写代码 

(1) 要把代码放在java这个目录下,这里也可以创建一些package

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

 (2) 给helloServlet中写一些东西

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

(3) 一定要注释掉,这个自动生成的代码

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

(3) 写WebServlet

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

这里写下WebServlet,就会针对某些GET请求来生效,

这里写下的 "/hello" 的意思是 GET 请求 并且URL中的路径是 /hello 的请求,才会生效

此时Tomcat 才会调用到这里的doGet方法

Tomcat可以让你关联上很多路径,可以给请求中的不同路径,关联上不同的类,也就是执行了不同的方法


🦄 2.5 打包程序

以前写过的代码都是有main方法的,这就像是一个汽车,汽车中自带发送机,自己就可以跑

当前写的Servlet代码,没有main方法,就相当于它只是一个"火车的车厢",自己是没有发动机的,只有自己一个"车厢"是跑不起来的,

所以就要找一个"火车的车头",把这个"车厢"也是Servlet代码挂在"车头"的后面,才可以

这个:"火车的车头"就是Tomcat(Tomcat带main,也就是有发动机)

此时就是把写到的代码挂到tomcat上,   打包+部署

(1) 直接使用maven打包

打包就是 先把缺失的依赖给下载好,然后编译所有的.java文件得到一堆.class文件

再把这些 .class 给搞到一个压缩包中

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

 (2) run后,可以看到就出现了这些东西

虽然打包后出现了jar,但是Tomcat不认识,因为Tomcat要求的压缩包的格式是war包

这两个最主要的区别就是,war包会把整个webapp目录都给打包进去,包括web.xml以及未来放的一些静态的html,css......

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

 (3) 重新打包生成可以被Tomcat识别的war包(在pom.xml中)

现在pom.xml添加这样一段代码,来修改jar包为war包

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

    <packaging>war</packaging>
    <build>
        <finalName>java123</finalName>
    </build>

 修改完成后,再重新打包

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)


🦄 2.6 部署程序

把war包,拷贝到Tomcat目录下的webapps中

(1) 找到war包所在位置,复制这个war包

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

 (2) 找到你安装的Tomcat目录下的webapss,把war复制到这里

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

 (3) 启动Tomcat的bin中的startup.bat(相当于火车头要启动了)

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

 (4) 启动完成后,就可以看到webapps目录中就多了个这个东西

这个就是Tomcat会加载这里的war包,加载操作就是把这个war解压缩为目录了

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)


🦄 2.7 验证程序

下面就是通过浏览器,来构造一个HTTP请求,来访问Tomcat服务器

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

 然后就可以看到,这里自动打印了一条日志

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)


🐲3. 创建Servlet流程简化

上面创建Servlet一共有七个步骤,比较麻烦

(1) 创建项目         (2) 引入Servlet依赖        (3) 创建目录结构            (4) 编写代码

(5) 打包程序         (6) 部署程序                   (7) 验证程序

那么有哪个步骤可以简化一下

步骤1,2,3虽然也有方法可以简化,但这三个步骤对于创建项目这个操作来说都是一次性的操作

步骤4编写代码肯定也是不可以简化的

而步骤5,6每次如果代码做出调整,都需要重新打包部署,这个就比较麻烦了

步骤7验证程序也不太好优化

综上所述,如果要简化创建Servlet的流程步骤,可以从步骤5,6入手

那么有什么办法呢?

可以 "一键式" 打包和部署

如果使用的是IDEA专业版,内置了Tomcat插件

如果使用的是IDEA社区版,可以使用第三方的 Smart Tomcat插件来完成

这个Smart Tomcat 插件是支持社区版和专业版的,并且这个插件使用更方便,比IDEA专业版自带的那个插件还方便,所以最好可以使用这个Smart Tomcat插件

下面开始下载插件

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

如果这个插件在IDEA上搜不到,那就直击去官网上下载 

Smart Tomcat - IntelliJ IDEA & Android Studio Plugin | Marketplace (jetbrains.com)

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

点击get进行下载,下载完成后,就会得到一个jar包,

把这个jar包直接拖拽到idea中,就可以安装了 

 下载完成后,步骤5,6的操作就可以简化为这样

(1)先点击这个

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)(2)点击+号

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

(3)往下翻找到smart tomcat这个插件,点击

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

 (4)进行简单的配置(Context path这个就是浏览器url访问的时候第一级路径,用来标识webapp的,这个Context path 就和前面所说的,war包名一样)

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

需要注意的是这个Smart Tomcat 是另一种运行tomcat的方式,没有真的去拷贝war包

 (5) 点击确定后,这里就生成了一个运行配置,点击这个就可以"一键式"打包部署了

(就是让idea直接调用tomcat,并且加载我们写的Servlet程序)

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

可以看到运行成功了

(需要注意的是,一个程序可以绑定多个端口号,但一个端口不能被多个程序绑定,

就相当于一个人可以有多个手机号,但一个手机号不能被多个人同时使用一样,

所以在运行这个smart tomcat时,不要自己手动去点开启动tomacat服务器,这个smart tomcat会自动启动的)

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)  

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

可以看到日志打印到这里来了 

创建第一个Servlet程序“hello world“(创建流程+页面出错情况) 

tomcat运行方法有多种

1. 直接在 startup 这里运行,手动拷贝war包过去

2. 直接通过java代码.调用tomcat的jar包运行,不需要在调用的时候指定tomcat加载哪个webapp(只能加载一个)

这种方法,在webapp下不会有war包,也不会加载webapps目录下的东西 


🐲4. 工作原理流程分析

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

(1) 获取到URL中的第一级路径 /java123 确定一个webapp

(2)     a) Tomcat找到 java123 目录之后,就会加载里面的类, 尤其是重点去识别出 @WebServlet                  注释修饰的类

b) 就会取URL中的第二级路径 ./hello 这个也叫做Servlet Path

c) 然后就在 @WebServlet 注解中,知道名字为 /hello 的类

d) 找到类之后, 创建实例(只会创建一次,如果之前创建了,就直接复用上次的实例)

(3) 再解析出HTTP请求的方法"GET",取出GET之后,就可以根据HTTP方法来调用对应的Servlet中的方法了

GET 请求调用 doGet方法

POST 请求调用 doPost方法

PUT 请求调用 doPut方法

DELETE 请求调用 doDelete方法 ........

同时Tomcar还会构造出 HttpServletRequest对象和HttpServletResponse对象


🐲5. 访问页面出错

(1)404 表示用户访问的资源不存在,大可能性是URL路径写的不对

原因主要有两方面:

1. 路径写错了  (就是你访问的页面,服务器没有.没有的话那就只能报错了)

2. webapp没有被tomcat正确加载   (就是你访问页面,本来服务器有,但是没有被服务器加载好)

一定要保证你的url写的正确 

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

 大部分情况下都是URL写的不对,但也可能是web,xml写错了

(2) 405 表示对应的 HTTP 请求方法没有实现.

请求的方法,服务器没实现,Get请求,服务器这里没写doGet,就会出现405

比如
创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

还有一种是把super.doGet没有删除,也会出现405的情况 

 

(3) 500  一般是 Servlet 代码中抛出异常导致的

也就是服务器代码抛出异常了

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

创建第一个Servlet程序“hello world“(创建流程+页面出错情况) 

 (4) 出现 "空白页面"

出现这种情况是,响应数据这个操作可能是没执行到

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

创建第一个Servlet程序“hello world“(创建流程+页面出错情况) 

 (5) 出现"无法访问此网站"

这个就是你的Tomcat启动失败了,或者你的IP端口写错了

比如我现在没有启动tomcat

创建第一个Servlet程序“hello world“(创建流程+页面出错情况)

 文章来源地址https://www.toymoban.com/news/detail-410074.html

到了这里,关于创建第一个Servlet程序“hello world“(创建流程+页面出错情况)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 机器人CPP编程基础-01第一个程序Hello World

    很多课程先讲C/C++或者一些其他编程课,称之为基础课程。然后到本科高年级进行机器人专业课学习,这样时间损失非常大,效率非常低。 C++/单片机/嵌入式/ROS等这些编程基础可以合并到一门课中进行实现,这些素材已经迭代三轮以上,全部公开,需要可以参考,不需要,我

    2024年02月13日
    浏览(54)
  • 编程笔记 Golang基础 007 第一个程序:hello world 使用Goland

    开始在Goland环境中编程go语言代码啦。 打开GoLand软件。 选择 “File”(文件)菜单,然后点击 “New Project”(新建项目)或使用快捷键 Ctrl+Shift+A 并搜索 “New Project”。 在新建项目向导中,选择 “Go” 并点击 “Next” 按钮。 配置项目设置: 为项目选择一个合适的保存位置。

    2024年02月20日
    浏览(45)
  • 【小黑嵌入式系统第八课】初识PSoC Creator™开发——关于PSoC Creator&下载、创建项目、单片机中的hello world(点亮一个led)

    上一课: 【小黑嵌入式系统第七课】PSoC® 5LP 开发套件(CY8CKIT-050B )——PSoC® 5LP主芯片、I/O系统、GPIO控制LED流水灯的实现 下一课: 【小黑嵌入式系统第九课】PSoC 5LP第一个实验——LED、字符型LCD显示实验 本课程主要介绍了 PSoC® 5LP, 一个基于 ARM® Cortex®-M3 的可编程片上系

    2024年02月03日
    浏览(62)
  • 【C快学-C语言程序设计(基础篇)】从VSCode中使用C编写我的第一个Hello world

    简介:本专栏是一个C语言基础入门知识学习的一个专栏 面向:广大C友 工具:VSCODE 博主:一个友好且宠粉的博主,送书活动小专栏,不定期抽奖送图书给粉丝 社区:🦈山鱼社区 我这里是使用超级强大的vscode来进行C语言的学习的,因为vscode有着许多好用且方便的插件,能够

    2024年02月13日
    浏览(49)
  • Eclipse 创建 Hello World 工程

    Download and install the Eclipse IDE. Eclipse - double click - Launch 单击蓝色方框 (右上角) 最大化 IDE File - New - C Project - Finish Project name:工程名 Use default location:勾选此项,项目默认创建在 eclipse workspace 目录下。如果不勾选,那么在 Location 处可以选择项目位置。如果已经有了项目目录,

    2024年02月20日
    浏览(40)
  • 【Java基础教程】(二)入门介绍篇 · 下:从JDK下载安装到第一个“Hello World!”程序,解析PATH和CLASSPATH环境变量的妙用~

    JDK 安装与配置; 理解环境变量PATH和CLASSPATH的主要作用; 运行第一个Java程序。 要进行Java的程序开发,必须先有Java开发工具包( JavaDevelopmentKit,JDK )的支持。本节主要基于JDK1.8版本来介绍安装等知识,读者朋友可以直接登录 Oracle官网 去进行下载,也可以在下边链接(包含

    2024年02月13日
    浏览(61)
  • Android Studio中配置Flutter插件,创建小项目“hello world”

    打开官网https://flutter.io/setup-windows/下载 Flutter sdk 并解压到一目录 Android studio 中安装 Flutter 插件, File - Settins - Plugins - 查找到 Flutter - install ,在安装 Flutter 插件时会自动提示下载 Dart 插件,只要同意即可,重启 as 后再次查看会显示如图所示效果: 图中标红代表 Dart 插件安装

    2024年02月04日
    浏览(52)
  • OpenHarmony 应用开发入门 (一、环境搭建及第一个Hello World)

    万事开头难。难在迈出第一步。心无旁骛,万事可破。没有人一开始就能想清楚,只有做起来,目标才会越来越清晰。--马克.扎克伯格 前言 2024年1月16日,华为目前开启已HarmonyOS NEXT开发者预览版Beta招募,报名周期为1月15日-1月22日。HarmonyOS NEXT开发者预览版将不再兼容安卓开

    2024年01月18日
    浏览(77)
  • HarmonyOS鸿蒙应用开发 (一、环境搭建及第一个Hello World)

    万事开头难。难在迈出第一步。心无旁骛,万事可破。没有人一开始就能想清楚,只有做起来,目标才会越来越清晰。--马克.扎克伯格 前言 2024年1月16日,华为目前开启已HarmonyOS NEXT开发者预览版Beta招募,报名周期为1月15日-1月22日。HarmonyOS NEXT开发者预览版将不再兼容安卓开

    2024年01月23日
    浏览(62)
  • 【区块链】以太坊Solidity编写一个简单的Hello World合约

    熟悉一门语言得从Hello World! 开始,因为这是最简单的一个输出形式。 我们先在contracts目录下建立一个helloworld.sol文件 进入编辑 保存退出 在migrations下新建一个部署合约的js文件:3_initial_migration.js 名字可以变动 接下来在test中使用js调用智能合约 在另一个窗口打开ganache 运行智

    2024年02月15日
    浏览(74)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包