听说你JavaWeb学的不好?(四)

110 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第4天,点击查看活动详情## 开发一个带有Servlet(Java小程序)的webapp

  • 开发步骤是怎样的?

    • 第一步:在webapps目录下新建一个目录,起名crm(这个crm就是webapp的名字)。当然,也可以是其它项目,比如银行项目,可以创建一个目录bank,办公系统可以创建一个oa。

      • 注意:crm就是这个webapp的根
    • 第二步:在webapp的根下(crm目录中)新建一个目录:WEB-INF

      • 注意:这个目录的名字是Servlet规范中规定的,必须全部大写,必须一模一样。
    • 第三步:在WEB-INF目录下新建一个目录:classes

      • 注意:这个目录的名字必须是全部小写的classes。这也是Servlet规范中规定的。另外这个目录下一定存放的是Java程序编译之后的class文件(这里存放的是字节码文件)。
    • 第四步:在WEB-INF目录下新建一个目录:lib

      • 注意:这个目录不是必须的。但如果一个webapp需要第三方的jar包的话,这个jar包要放到这个lib目录下,这个目录的名字也不能随意编写,必须是全部小写的lib。例如java语言连接数据库需要数据库的驱动jar包。那么这个jar包就一定要放到lib目录下。这Servlet规范中规定的。
    • 第五步:在WEB-INF目录下新建一个文件:web.xml

      • 注意:这个文件是必须的,这个文件名必须叫做web.xml。这个文件必须放在这里。一个合法的webapp,web.xml文件是必须的,这个web.xml文件就是一个配置文件,在这个配置文件中描述了请求路径和Servlet类之间的对照关系。
      • 这个文件最好从其他的webapp中拷贝,最好别手写。没必要。复制粘贴
      • <?xml version="1.0" encoding="UTF-8"?>
        ​
        <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
                              https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
          version="5.0"
          metadata-complete="true">
        ​
        ​
        </web-app>
        
  • 第六步:编写一个Java程序,这个小Java程序也不能随意开发,这个小java程序必须实现Servlet接口。

    • 这个Servlet接口不在JDK当中。(因为Servlet不是JavaSE了。Servlet属于JavaEE,是另外的一套类库。)

      • Servlet接口(Servlet.class文件)是Oracle提供的。(最原始的是sun公司提供的。)它是JavaEE的规范中的一员。
      • Tomcat服务器实现了Servlet规范,所以Tomcat服务器也需要使用Servlet接口。Tomcat服务器中应该有这个接口,Tomcat服务器的CATALINA_HOME\lib目录下有一个servlet-api.jar,解压这个servlet-api.jar之后,你会看到里面有一个Servlet.class文件。
      • 重点:从JakartaEE9开始,Servlet接口的全名变了:jakarta.servlet.Servlet
      • 注意:编写这个Java小程序的时候,java源代码你愿意在哪里就在哪里,位置无所谓,你只需要将java源代码编译之后的class文件放到classes目录下即可。
    • 第七步:编译我们编写的HelloServlet

      • 重点:你怎么能让你的HelloServlet编译通过呢?配置环境变量CLASSPATH

        CLASSPATH=.;C:\dev\apache-tomcat-10.0.12\lib\servlet-api.jar (根据自己文件路径写)

      • 思考问题:以上配置的CLASSPATH和Tomcat服务器运行有没有关系?

        • 没有任何关系,以上配置这个环境变量只是为了让你的HelloServlet能够正常编译生成class文件。
    • 第八步:将以上编译之后的HelloServlet.class文件拷贝到WEB-INF\classes目录下。

    • 第九步:在web.xml文件中编写配置信息,让“请求路径”和“Servlet类名”关联在一起。

      • 这一步用专业术语描述:在web.xml文件中注册Servlet类。