开发一个带有Servlet(Java小程序)的webapp(重点)
-
开发步骤:
-
第一步:在webapps目录下新建一个目录,起名crm(这个crm就是webapp的名字)
- 注意:crm就是这个webapp的根
-
第二步:在crm(就是在webapp的根下)新建一个目录:WEB-INF
- 注意:这个目录的名字是Servlet规范中规定的,必须一模一样
-
第三步:在WEB-INF目录下新建一个目录:classes
- 注意:这个目录名字必须是全部小写的classes。这也是Servelet规范中规定的。另外这个目录下一定存放的是Java程序编译之后的class我加你(这里存放的是字节码文件)
-
第四步:在WEB-INF目录下新建一个目录:lib
- 注意:这个目录不是必须的。但如果一个webapp需要第三方的jar包的话,这个jar包要放在这个lib目录下,这个目录的名字也不能随便编写,必须全部是小写的lib。例如Java语言连接数据库需要数据库的驱动jar包。那么这个jar包就一定要放到这个lib目录下。这个也是Servlet规范中规定的。
-
第五步:在WEB-INF目录下新建一个文件:web.xml
-
注意:这个文件是必须的,这个文件名必须叫做web.xml。这个文件必须放在这里。一个合法的webapp,web.xml文件是必须的,这个文件就是一个配置文件,在这个配置文件中描述了请求路径和Servlet类之间的对照关系
-
这个文件最好是从其他的webapp中拷贝,最好别手写,没必要
-
<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <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_6_0.xsd" version="6.0" metadata-complete="true"> <display-name>Welcome to Tomcat</display-name> <description> Welcome to Tomcat </description> </web-app>
-
-
第六步:编写一个Java程序,这个小Java程序不能随意开发,必须实现Servlet接口
- 这个Servlet接口不在JDK当中
- Servlet接口(Servlet.class文件)是Oracle提供的(最原始是SUN公司提供的)
- Servlet接口是JavaEE的规范中的一员
- Tomcat服务器实现了Servlet规范,使用Tomcat服务器也要实现Servlet接口。Tomcat服务器中的CATALINA_HOME\lib目录下有一个servlet-api.jar,解压这个servlet-api.jar之后,你会看到里面有一个Servlet.class文件
- 重点:从JakartaEE9开始,Servlet接口的全名变了:Jakarta.servlet.Servlet
- 注意:编写这个小程序的时候,Java源代码愿意在哪里在哪里,位置无所谓,你只需要将Java源代码编译后的class文件放到classes目录下即可
-
第七步:编译我们写的HelloServlet
- 重点:你怎么能让你的代码编译通过呢?配置环境变量CLASSPATH=“C:\Users\26332\Desktop\javaWEB\apache-tomcat-10.1.8\lib\servlet-api.jar”
-
第八步:将以上编译生成的class文件拷贝到classes目录下
- 特别要注意:把class文件拷贝时要把一整个包都拷贝到classes下,不然会报:错误500
-
第九步:在web.xml文件中编写配置信息,让“请求路径”和“Servlet类名”关联在一起
-
这一步用专业术语描述:注册Servlet类
-
<?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <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_6_0.xsd" version="6.0" metadata-complete="true"> <!--servlet描述信息--> <servlet> <servlet-name>hetao</servlet-name> <servlet-class>com.bjpowernode.servlet.HelloServlet</servlet-class> </servlet> <!--servlet映射信息--> <servlet-mapping> <servlet-name>hetao</servlet-name> <url-pattern>/htt</url-pattern> </servlet-mapping> <display-name>Welcome to Tomcat</display-name> <description> Welcome to Tomcat </description> </web-app>
-
-
第十步:启动Tomcat服务器
-
第十一步:打开浏览器,在浏览器地址栏输入一个url,这个URL必须是:
- http://127.0.0.1:8080/crm/htt
- 注意:浏览器上的请求路径和web.xml文件中的url-pattern的唯一区别就是:浏览器请求路径带项目名:/crm
-
浏览器写请求路径太复杂,可以使用超链接(非常重要:HTML页面只能放在WEB-INF目录外面)
-
以后不需要我们编写main方法。Tomcat服务器负责调用main方法,Tomcat启动就是在执行main方法。我们javaweb程序员只需要编写Servlet接口的实现类,然后将其注册到web.xml文件中,即可
-
关于JavaEE版本
- JavaEE被Oracle捐给Apache了,JavaEE改名为JakartaEE
- 所以JavaEE8的时候对应的Servlet类名是:Javax.servlet.Servlet
- javaEE9后对应的Servlet类名为:jarkata.servlet.Servlet(包名都换了)
- 如果之前的项目还在使用Javax.servlet.Servlet,那么你的项目无法直接部署到Tomcat10+版本上,之前的版本才能识别,Tomcat10网页有项目迁移工具
-
解决Tomcat服务器在DOS命令窗口中的乱码问题(控制台乱码)
将C:\Users\26332\Desktop\javaWEB\apache-tomcat-10.1.8\conf下的logging.properties文件内容修改:
java.util.logging.ConsoleHandler.encoding=GBK