Servlet的基本使用
创始人
2024-01-30 09:11:58

目录

一、Servlet是什么

二、Servlet的基本使用

1、创建项目

2、引入依赖

3、创建目录

4、编写代码

5、打包程序

6、部署程序

7、验证程序

三、优化部署方式

1、安装Smart Tomcat

2、使用Smart Tomcat

四、使用Servlet时常见的错误

1、404 

2、405

3、500

4、无法访问页面

5、出现空白页面

一、Servlet是什么

Servlet是Tomcat提供给Java程序猿的一组API,用来帮助程序猿简单高效的开发webapp,构建动态页面

静态页面:内容始终固定的页面,即使访问用户不同/访问时间不同/输入的参数不同,页面的内容也不会发生变化,例如Tomcat的欢迎页面:

动态页面:和静态页面相对的页面,当访问的用户不同/访问的时间不同/输入的参数不同时,页面的内容会发生变化,例如B站的主页:

二、Servlet的基本使用

使用Servlet写一个简单的“hello world”代码需要分为以下七个步骤:

(本文以Idea2021.3.2版本为例,新版的Idea可能有所不同)

1、创建项目

(1) 打开Idea创建一个Maven项目:

(2) 选择项目要存放的目录:

(3) 项目创建成功的样子:

Maven是Idea内置的一个构建工具,可以用来编译代码、打包程序、管理依赖…… 

2、引入依赖

Servlet并不是Java标准库自带的,我们需要在刚才创建的项目中生成的pom.xml文件中引入Servlet依赖的jar包。

(1) 在Java中央仓库:Maven Repository: servlet (mvnrepository.com)搜索servlet,选择第一个结果:

(2) 选择3.1.0版本

Servlet的版本要和Tomcat的版本匹配,如果Tomcat是8.5版本,那么就需要使用Servlet3.1.0版本。

查询版本对应关系:Apache Tomcat® - Which Version Do I Want?

(3) 在pom.xml文件中创建一个标签:

 (4) 把中央仓库的Maven里的内容复制到标签中: 

修改后的pom.xml文件:

注意:如果是第一次使用maven,那么这里面的部分代码会变成红色的,maven会根据代码的内容,自动下载项目依赖的jar包到本地,下载完成后刷新一下就好了。

如果下载好之后代码还是标红,那么就需要根据报错的信息在网上搜索解决的方案。

3、创建目录

当项目创建好之后,Idea会自动生成一些目录:

其中:

src:表示源代码所在的目录;

main/java:表示业务代码的根目录,后续创建的.java文件就放在这个目录中;

main/resources:表示项目的一些资源文件所在的目录;

test/java:表示测试代码的根目录;

pom.xml:表示项目中的“阵眼”,全局配置文件,存放项目相关的配置属性。

但这些目录还不够,还需要创建一个符合Tomcat要求的目录结构:

(1) 在main目录下,创建一个webapp目录:

(2) 在webapp目录下,创建一个WEB-INF目录:

(3) 在WEB-INF目录下,创建一个web.xml文件:

注意:不要把文件名写错,Tomcat要识别web.xml这个文件。

(4) 编写web.xml

往web.xml中拷贝以下代码:


Archetype Created Web Application

4、编写代码

(1) 在main/java目录下创建一个类,并继承HttpServlet类:

HttpServlet类来自于刚才通过maven下载的Servlet的jar包,如果这里的HttpServlet类标红,手动刷新一下就好了~ 

(2) 重写父类的doGet方法:

req对象是HTTP请求报文,被Tomcat解析成了一个对象;

resp对象则是Tomcat构造的一个空的对象,doGet方法会根据req里的一些数据和具体的业务逻辑来构造生成一个完整的resp对象(所以resp相当于一个“输出型参数”),然后Tomcat再把resp对象转换成HTTP响应报文。

(3) 加上@WebServlet注解

加上注解后,表示Tomcat在收到的GET请求中,找到路径为/hello的请求时才会调用Hello类中的toGet方法。

5、打包程序

我们当前写的代码中是没有main方法的,要想让代码跑起来,需要把当前代码打包起来放到Tomcat中就可以跑起来了~

(1) 点击Idea右侧的Maven按钮,展开Lifecycle,找到package选项:

(2) 双击package选项,出现BUILD SUCESS表示打包成功了:

此时左侧会生成一个target目录,里面会包含一个jar包:

但是Tomcat需要识别的是war包格式,所以我们需要重新打包出一个war包:

jar包和war包的区别:

jar包是普通的java程序打包的结果,里面会包含一些.class文件;

war包是java web的程序,除了包含.class文件外,还会包含HTML,CSS,JS,图片以及其他的jar包,打包成war包才能被Tomcat识别。

(3) 在pom.xml中新增一个标签,表示打包的方式是war包格式:

    war

(4) 在pom.xml中新增一个标签,内置一个标签,表示打包出的war包名字:

    HelloServlet

完整的pom.xml文件:

(5) 重新使用maven的package打包就会生成一个war包:

6、部署程序

(1) 把刚才打包的war包拷贝到Tomcat的webapps目录下:

(2) 启动Tomcat,把war包解压缩,此时会生成一个新的目录:

7、验证程序

此时,在浏览器地址栏中输入:127.0.0.1:8080/HelloServlet/hello时就可以看到结果了:

在上面的URL中,/HelloServlet目录又称为ContextPath,/hello目录又称为ServletPath

(1) Tomcat通过ContextPath可以确定一个webapp,然后就会加载该目录下所有的类,重点识别出被@WebServlet注解的类;

(2) 然后根据ServletPath找到注解为/hello的类,找到类之后,就会创建一个类的实例(只会创建一次,如果之前创建过了,就会复用之前的实例);

(3) Tomcat再解析出HTTP请求的方法“GET”,根据HTTP请求的方法来调用类中对应的toGet方法。

GET请求调用toGer方法;POST请求调用toPost方法;PUT请求调用toPut方法……

三、优化部署方式

上述第5步和第6步操作比较繁琐,并且只要代码中有一点改动,都需要重新执行打包程序和部署程序的操作,我们可以在IDEA上安装一个Smart Tomcat插件来优化这些操作:

1、安装Smart Tomcat

(1) 打开IDEM,依次点击左上角的File、Settings:

(2) 在Settings对话框中选择Plugins、Marketplace,然后搜索smart tomcat,最后点击Install即可。

2、使用Smart Tomcat

(1) 点击右上角的Add Configurations:

(2) 在弹出的对话框中点击左上角的+号,然后选择刚才下载的Smart Tomcat:

(3) 在弹出的对话框中进行如下设置(红色框中的内容是需要修改的,其余部分不变):

(4) 点击OK之后,右上角就生成了一个运行配置:

(5) 点击右上角绿色的三角符号,就可以一键式完成打包部署操作(让IDEA调用tomcat,并加载刚才写的Servlet程序):

出现这样的页面就说明操作成功了,此时就可以打开浏览器查看程序运行结果:

 

注意:使用Smart Tomcat进行一键式打包部署操作时,需要关闭控制台的Tomcat,否则会出现下面这种错误情况:

因为控制台中运行的Tomcat已经占用了8080(业务端口)和8005(管理端口)端口号,由于同一个端口号不能被多个程序绑定,所以当我们使用Smart Tomcat调用Tomcat时就会绑定端口失败。

四、使用Servlet时常见的错误

1、404

404表示用户访问的资源不存在,如果出现404,很可能是URL写错了。

(1) 首先检查一下URL是否写错:

① 检查URL中是否写了Context Path;

 

注意:Context Path有两种情况:

(a) 如果是使用startup.bat的方式启动Tomcat(即控制台的方式),此时Context Path指的是webapps中的webapp目录名(即一开始打包的war包名)。 

(b) 如果是使用Smart Tomcat的方式启动Tomcat,此时Context Path指的是配置Smart Tomcat时手动填写的。

② 检查URL中是否写了Servlet Path;

 

③ 检查Servlet Path和@WebServlet注解中的路径是否一致;

(2) 查看web.xml文件中的内容是否写错。

如果web.xml中的内容写错了,也会出现404错误。

2、405

如果出现405,则表示对应的HTTP请求方法没有实现。

例如HTTP请求的方法是GET,但是代码中没有doGet方法:

 

(在浏览器地址栏中直接输入一个URL,就会发送一个GET请求) 

3、500

如果出现500,一般是Servlet代码中抛出了异常。

例如,修改当前doGet方法:

 重新访问页面:

页面中会提示当前代码中抛出了什么异常,以及是在哪一行抛的异常。 

4、无法访问页面

这种情况一般是Tomcat启动失败。

例如在没有运行Tomcat的情况下访问页面:

5、出现空白页面

如果出现空白页面,说明响应为空。

例如,注释掉 resp.getWriter().write("hello") 这行代码:

重新访问页面:

 

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
最安全的匿名举报方式 匿名12... 来源:中安在线8月9日,河北邢台小伙张钊(化名)在河北政务服务网12345平台举报楼上邻居涉嫌非法开...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
中国光棍有多少人 2020年9... 我国是世界上人口最多的国家,庞大的人口基数为我国的发展带来了许多的益处。但是同时,我国也是出生人口性...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...