初识Servlet

文章目录

    • 一、创建项目
    • 二、引入依赖
    • 三、创建目录结构
    • 四、编写代码
    • 五、打包程序
    • 六、部署程序
    • 七、验证程序
    • 八、Smart Tomcat 简化打包部署
    • 九、访问出现错误

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

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

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

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

一、创建项目

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

初识Servlet_第1张图片
初识Servlet_第2张图片

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

初识Servlet_第3张图片

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

初识Servlet_第4张图片

二、引入依赖

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

中央仓库

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

初识Servlet_第5张图片

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

版本对应查看

在这里插入图片描述

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

初识Servlet_第6张图片
初识Servlet_第7张图片

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

初识Servlet_第8张图片

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

初识Servlet_第9张图片

三、创建目录结构

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

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

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

初识Servlet_第10张图片

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


<web-app>
    <display-name>Archetype Created Web Applicationdisplay-name>
web-app>

四、编写代码

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

初识Servlet_第11张图片

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

<build>
    <finalName>javaServletfinalName>
    
build>
  1. 执行打包操作:Maven->Lifecycle->package,双击package

初识Servlet_第12张图片

打包成功后

初识Servlet_第13张图片

六、部署程序

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

初识Servlet_第14张图片

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

初识Servlet_第15张图片

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

七、验证程序

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

初识Servlet_第16张图片

注意目录的书写,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

初识Servlet_第17张图片

  1. 使用 Smart Tomcat

初识Servlet_第18张图片
初识Servlet_第19张图片

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

初识Servlet_第20张图片

  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/端口号写错

完!

你可能感兴趣的:(前端,intellij-idea,maven,java)