文章目录

  • 前言
  • 一、创建项目
  • 创建Maven项目
  • 介绍Maven项目
  • 二、引入依赖
  • 三、创建目录
  • 四、编写代码
  • 五、打包
  • 六、部署
  • 七、验证
  • 总结





一、创建项目

此处创建的是maven项目。
maven是一个构建工具,功能是帮助我们去构建,测试,打包一个项目。

创建Maven项目

1️⃣选中Maven,点击Next

java 部署 可以单独运行吗_java 部署 可以单独运行吗

2️⃣3️⃣4️⃣5️⃣设置项目名称与路径(此处的路径不要随便设置,一会要用到),点击Finish

java 部署 可以单独运行吗_servlet_02

完成创建项目(首次创建maven项目,IDEA会从互联网上加载很多依赖,需要花一定时间,此时需要保证网络畅通)。

java 部署 可以单独运行吗_servlet_03


介绍Maven项目

每个Maven项目,都会有一个pom.xml 配置文件,这个文件里描述了maven项目的各方面的内容。

java 部署 可以单独运行吗_tomcat_04


二、引入依赖

Servlet 是 tomcat 提供的api,不是标准库自带的,因此需要额外下载安装。

  1. 进入中央仓库https://mvnrepository.com/
  2. 在搜索框中搜索 Servlet,点击 Java Servlet API
  3. java 部署 可以单独运行吗_java_05

  4. 下滑找到与Tomcat对应的版本,并点击。(查询对应版本:https://tomcat.apache.org/whichversion.html;此处我对应的版本是3.1.0)
  5. java 部署 可以单独运行吗_servlet_06

  6. 复制下面的代码
  7. java 部署 可以单独运行吗_tomcat_07

  8. 在最顶层标签 project标签下 ,打出 dependencies标签 ,然后把 代码粘贴在dependencies标签中 。
  9. java 部署 可以单独运行吗_java 部署 可以单独运行吗_08

  10. 第一次引入依赖时,会自动下载接口,如下方有下载进度条,即正在下载需等待,如果没有,点击刷新按钮,即可开始下载。
  11. java 部署 可以单独运行吗_servlet_09


三、创建目录

以下的目录结构,目录位置,目录名字,文件名字与格式内容,要与下面的步骤保持一模一样。

  1. 在main下面创建一个新的目录webapp(New的是Directory)
  2. 在webapp下再创建一个新目录WEB-INF(New的是Directory)
  3. 在WEB-INF下在创建一个新文件web.xml(New的是File),并插入以下代码。

第三行代码可能会冒红报错,原因是IDEA可以正确识别Java代码,不一定能正确识别其他文件,比如这里的xml文件。
这个报错可以忽略不管他,也可以alt + 回车解决掉。

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

四、编写代码

在java目录下创建 HelloServlet类。

如果继承HttpServlet类,报错或没有提示,说明没有正确的引入依赖,可以尝试去刷新一下。

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

// 为这个类加上注解
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {

    // 重写doGet方法
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 一定要把父类的doGet注释或者删除掉,父类的doGet会直接抛出405
        // super.doGet(req, resp);

        // 服务器的控制台打印 "hello world" ,服务器能看到,客户端看不到
        System.out.println("hello world");

        // 向resp 的 body 中写入 "hello world"这个字符串,这个内容就会被HTTP响应返回给浏览器,浏览器就会显示
        resp.getWriter().write("hello world");
        // resp.getWriter()得到resp内部的字符流Write对象,再通过write就可以将数据写入到HTTP响应中的body
    }
}

java 部署 可以单独运行吗_servlet_10

小贴士

doGet方法要实现的功能就是根据请求计算出响应,再将想要写入resp响应对象中。 Tomcat会自动帮助我们完成读取解析请求,将响应写回客户端的功能

注解(@xxxxxxx)通常用来修饰一个类或者一个方法。实际应用中Tomcat中会有许多类许多方法,注解的作用通俗点说就是告诉Tomcat要调用的是哪个类哪个方法

这个代码,并不是独立运行,而是插入到Tomcat中,让Tomcat中的main方法在合适的时机调用,因此不需要咱们自己写main方法。


五、打包

  1. 在pom.xml中指定打包格式与包名称。
    注意:是在object标签下
  2. java 部署 可以单独运行吗_tomcat_11

  3. 双击package,或右键运行,即可开始打包
  4. java 部署 可以单独运行吗_servlet_12

  5. 出现BUILD SUCCESS代表打包成功。
  6. java 部署 可以单独运行吗_servlet_13

小贴士
Java当中的压缩包是jar与war
普通的java程序打包成jar包
要部署到tomcat的程序打包成war包
war包可以看作是特别定制的tomcat版jar包
war包是tomcat的专属格式,里面有一些特殊的目录结构和文件。


六、部署

  1. 找到打包好的war包(在你创建的项目中的target目录中)
  2. java 部署 可以单独运行吗_java_14

  3. 将war包拷贝到tomcat的webapps目录下
  4. java 部署 可以单独运行吗_java 部署 可以单独运行吗_15

  5. 在tomcat的bin目录下找到并运行startup程序(Windows系统用bat格式;Linux系统用sh格式)。就部署成功了
  6. java 部署 可以单独运行吗_tomcat_16

小贴士
之所以出现乱码是因为tomcat的字符集与Windows命令行用的不是同一个字符集。此处乱码也没关系,依然部署成功。

部署成功后,tomcat会自动解压

java 部署 可以单独运行吗_java 部署 可以单独运行吗_17


七、验证

在浏览器地址栏输入URL,构造GET请求。

127.0.0.1:8080/hello_servlet/hello

URL也不是随便输入就行的!

java 部署 可以单独运行吗_maven_18

java 部署 可以单独运行吗_java_19

java 部署 可以单独运行吗_tomcat_20


使用Fiddler进行抓包

java 部署 可以单独运行吗_servlet_21

注意!!!
不是Tomcat一启动,咱们代码中的doGet就会执行,而是遇到GET请求,且URL中的路径还要匹配时, 才会执行。


总结

以上就是今天要分享的使用servlet写出的第一个hello world,加油加油加油!!!