初识Servlet


之前有介绍到 Tomcat支持静态页面,所谓 静态页面就是 页面内容始终固定不变的页面,Tomcat 也支持动态页面, 动态页面就是 会随着用户输入的不同,时间的不同,用户的不同,页面的内容也会相印的发生变化

主要就是通过程序员代码的不同,读取用户的不同输入,进行相关计算,得到不同结果,然后生成页面返还给浏览器的过程。

为方便对用户的请求进行处理,方便返回计算结果,完成构建动态页面请求这个任务。Tomcat 提供了一组 API工程序员直接使用,这组 API 就是 Servlet

接下来就将写第一个Servlet 程序,熟悉创建项目的过程。

一、创建项目

  1. 使用 IDEA 创建一个 Maven 项目(Maven是一个知名构建工具)
  2. 填写项目名字和保存的目录

在这里插入图片描述
在这里插入图片描述

创建好项目后,IDEA中产生了一些目录

在这里插入图片描述

可以看见pom.xml文件的格式和HTML类似,都是标签形式,在这里就可以引入项目所依赖的第三方库,来配置一些属性

在这里插入图片描述

二、引入依赖

因为这是一个 Servlet 程序,所以需要在pom.xml 中引入Servlet 第三方库

中央仓库

  1. 在中央仓库中搜索 Servlet ,选择第一个

在这里插入图片描述

  1. 选择 3.1.0 版本(该版本需要和Tomcat的版本相匹配,这里对应的是Tomcat 8系列)

版本对应查看

在这里插入图片描述

  1. 将如下代码片段进行拷贝,粘贴到 pom.xml 中(项目中可能会有很多的依赖,每个依赖都被<denpendency>包裹,这些依赖都需要放在<dependencies>标签中)

在这里插入图片描述
在这里插入图片描述

首次粘贴进来,Maven就会自动从中央仓库下载依赖的jar包到本地,同时引入到项目中,未下载完毕时,代码会呈现红色。如果一直呈现红色,可以在右上角用如下方式进行刷新。

在这里插入图片描述

下载完毕后可以查看第三方库下载的地址,可以在这里查看是否下载成功,如果没有成功,可以将 3.1.0 这个文件删除,保持网络通畅,在重新下载一次

在这里插入图片描述

三、创建目录结构

  1. 在main目录下创建webapp目录(和java目录同级)

  2. 在webapp目录下创建WEB-INF目录

  3. 在WEB-INF目录下创建web.xml文件

在这里插入图片描述

在 web.xml 文件中复制粘贴以下代码,该文件是 Tomcat 能够识别动态页面的入口文件,切记不可粘贴错误,否则就会无法部署程序

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

四、编写代码

  1. 在 Java目录下,创建一个Java文件(HelloServlet.java),写代码

在这里插入图片描述

  1. 创建出的 HelloServlet 类继承 HttpServlet,如果没有办法继承,说明第三方库下载出问题了

  2. 在该类中重写 doGet 方法,需要删除在这里插入图片描述

  3. 在该类的前面加上注解,这里的注解为@WebServlet("/hello"),表示 Tomcat 收到的路径为 /hello 的请求才会调用 HelloServlet 这个类的代码

    @WebServlet("/hello")
    public class HelloServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            resp.setContentType("text/html;charset=utf-8");
            resp.getWriter().write("你好 Servlet!!!");
        }
    }
    
    • 重写的doGet方法是HttpServlet 的方法,在这里重写了父类的doGet方法来实现多态。其中第一个参数req表示Tomcat收到的HTTP请求,第二个参数resp表示构造成的HTTP响应。当Tomcat收到GET请求是会自动触发该方法
    • HttpServletRequest 类就是Tomcat 收到的请求解析成的对象,HTTP请求中有啥这里面就有啥
    • HttpServletResponse 类就是Tomcat 要给浏览器返回的响应所对应的对象,HTTP响应中有啥这里面就有啥
    • resp.getWriter():获取流对象,通过此来写入数据,数据会被构成HTTP响应中的body部分
    • resp.setContentType:进行编码方式的统一,避免出现乱码

五、打包程序

  1. 首先修改pom.xml中的部分,指定打包的包的类型,包的名字
<packaging>war</packaging> 
<!--  包的类型为war  -->
<build>
    <finalName>javaServlet</finalName>
    <!-- 包的名字为javaServlet   -->
</build>
  1. 执行打包操作:Maven->Lifecycle->package,双击package

在这里插入图片描述

打包成功后

在这里插入图片描述

六、部署程序

  1. 在左侧的目录栏中打开打好的war包的文件目录

在这里插入图片描述

  1. 复制文件目录中的javaServlet.war,粘贴到Tomcat的webapps目录下

在这里插入图片描述

粘贴好后,Tomcat 能自动识别出war包,并对其解压缩和部署

七、验证程序

  1. 启动Tomcat
  2. 在浏览中输入127.0.0.1:8080/javaServlet/hello,即可成功访问自己写的 Servlet 程序

在这里插入图片描述

注意目录的书写,JavaServlet 是打好的war包的名字,hello是注解指定的(@WebServlet("/hello")),前者路径称为 Content Path,表示一个webapp,后者路径称为 Servlet Path,表示这是该网站中的一个页面

八、Smart Tomcat 简化打包部署

在上述的过程中,打包和部署这一过程显得比较繁琐,一旦代码有所改动,想要看一下效果,就需要对程序进行打包,粘贴,复制,会使得webapps的目录下出现很多冗余的文件,也很费时间,因此Smart Tomcat这个插件就可以解决以上的问题(社区版IDEA)。

  1. File->Settings->Plugins->选择Marketplace->搜索"Smart Tomcat"->点击Installed(没有下载的状态是绿色的,此处已经下载过),下载完后重启IDEA

在这里插入图片描述

  1. 使用 Smart Tomcat

在这里插入图片描述
在这里插入图片描述

此时页面右上角处有了绿色的小三角,点击进行打包部署

在这里插入图片描述

  1. 此时启动 Tomcat,在浏览器中输入127.0.0.1:8080/javaServlet/hello就同样可以看见结果。

实际上,用该方法进行打包部署相当于在 Tomcat 启动的时候直接引用了项目中的 webapp 和 target 目录

如果用 Smart Tomcat 进行打包部署的话,那么pom.xml 中写的什么war包,及其名字就不再重要。

九、访问出现错误

  1. 404

错误原因:

  • Content Path 或者 Servlet Path路径没写或者写错
  • webapp 加载失败,比如web.xml中的内容出错

关于路径:

  1. Content Path :
  • 没使用 Smart Tomcat,Content Path 就是打包时war包的名字
  • 如果使用 Smart Tomcat,Content Path 就是配置路径时的命名的名字
  1. Servlet Path :在类上面写的注解的内容
  1. 405

表示对应的HTTP请求没有实现。

错误原因:

  • 当GET方法访问服务器时,但是写的Servlet中并没有实现doGet方法,就默认为父类的doGet方法,即返回一个405错误页面
  • 重写doGet方法,但是没有删除在这里插入图片描述
  1. 500

错误原因:

  • Servlet 代码中抛出异常,出现500后,在页面上会显示代码的调用栈,指出出现问题的位置
  1. 空白页面

错误原因:

  • 说明没有正确的写入数据,比如去掉 resp.getWritter().write() 操作
  1. 无法访问此网站

错误原因:

  • 注解写错了,比如少写了/
  • Tomcat 没启动
  • IP/端口号写错

完!

  • 33
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 28
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

富春山居_ZYY(已黑化)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值