Servlet的基本使用

目录

一、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文件中创建一个<dependencies>标签:

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

修改后的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中拷贝以下代码:

<!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>

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中新增一个<packaging>标签,表示打包的方式是war包格式:

    <packaging>war</packaging>

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

    <build>
        <finalName>HelloServlet</finalName>
    </build>

完整的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") 这行代码:

重新访问页面:

  • 8
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吃点橘子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值